Pinball is a classic arcade game that has been around since the 1930s. It involves the player using flippers to hit a ball around a table aiming to score points by hitting various targets and obstacles. A sample GIF is given below to get an idea about what we are going to do in this article.
Implementation
Java
package abc; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class a extends JPanel implements ActionListener { private Timer timer; private int ballX, ballY; private int paddleX; private int dx, dy; public a() { setBackground(Color.BLACK); setPreferredSize( new Dimension( 600 , 400 )); setFocusable( true ); ballX = 200 ; ballY = 200 ; paddleX = 250 ; dx = 3 ; dy = 3 ; timer = new Timer( 10 , this ); timer.start(); addKeyListener( new KeyAdapter() { public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_LEFT) { paddleX -= 10 ; if (paddleX < 0 ) paddleX = 0 ; } else if (e.getKeyCode() == KeyEvent.VK_RIGHT) { paddleX += 10 ; if (paddleX > getWidth() - 100 ) paddleX = getWidth() - 100 ; } } }); } public void paintComponent(Graphics g) { super .paintComponent(g); g.setColor(Color.WHITE); g.fillOval(ballX, ballY, 20 , 20 ); g.fillRect(paddleX, getHeight() - 20 , 100 , 10 ); } public void actionPerformed(ActionEvent e) { ballX += dx; ballY += dy; if (ballX < 0 || ballX > getWidth() - 20 ) dx = -dx; if (ballY < 0 || ballY > getHeight() - 20 ) dy = -dy; if (ballY > getHeight() - 30 && ballX >= paddleX && ballX <= paddleX + 100 ) dy = -dy; repaint(); } public static void main(String[] args) { JFrame frame = new JFrame( "Pinball" ); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add( new a()); frame.pack(); frame.setVisible( true ); } } |
Output
Code Explanation
- Pinball class extends the JFrame class and implements the ActionListener interface which allows it to handle events.
- The timer object is created to update the game every 10 milliseconds.
- The ballX, ballY, and ballSize variables are used to keep track of the ball’s position and size.
- The ballXdir and ballYdir variables are used to control the ball’s direction and speed.
- The paddleX, paddleY, paddleWidth, and paddleHeight variables are used to keep track of the paddle’s position and size.
- The Pinball constructor sets the size of the window sets the title of the game starts the timer
- adds a key listener to handle input, and sets the window to be visible.
- The paint method is called whenever the window needs to be redrawn. It draws the ball and paddle on the screen.