Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import javax.swing.JPanel;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.KeyEvent;
- import java.awt.event.KeyListener;
- import java.awt.Graphics;
- import java.awt.Color;
- import javax.swing.Timer;
- import java.awt.Rectangle;
- import java.awt.Graphics2D;
- import java.awt.Font;
- public class Gameplay extends JPanel implements KeyListener, ActionListener
- {
- private boolean play = false;
- private int score = 0;
- private int totalBricks = 21;
- private Timer timer;
- private int delay = 8;
- private int playerX = 310;
- private int ballposX = 120;
- private int ballposY = 350;
- private int ballXdir = -1;
- private int ballYdir = -2;
- private MapGenerator map;
- public Gameplay()
- {
- map = new MapGenerator (3, 7);
- addKeyListener(this);
- setFocusable(true);
- setFocusTraversalKeysEnabled(false);
- timer = new Timer(delay, this);
- timer.start();
- }
- public void paint (Graphics g)
- {
- // Background
- g.setColor(Color.black);
- g.fillRect (1,1, 692, 592);
- // Drawing Map
- map.draw ((Graphics2D)g);
- // Borders
- g.setColor (Color.yellow);
- g.fillRect (0,0, 3, 592);
- g.fillRect (0,0, 692, 3);
- g.fillRect (691,0, 3, 592);
- // scores
- g.setColor (Color.WHITE);
- g.setFont (new Font("sans-serif", Font.BOLD, 25));
- g.drawString (""+score, 520, 30);
- // Paddle
- g.setColor (Color.green);
- g.fillRect (playerX, 525, 80, 40); //550, 100, 8
- // Ball
- g.setColor (Color.yellow);
- g.fillOval (ballposX, ballposY, 20, 20);
- if (totalBricks <= 0)
- {
- play = false;
- ballXdir = 0;
- ballYdir = 0;
- g.setColor (Color.yellow);
- g.setFont (new Font("serif", Font.BOLD, 25));
- g.drawString ("You won! ", 190, 300);
- g.drawString ("Press Enter to Restart", 230, 350);
- }
- // game Over
- if (ballposY > 570)
- {
- play = false;
- ballXdir = 0;
- ballYdir = 0;
- g.setColor (Color.RED);
- g.setFont (new Font("serif", Font.BOLD, 25));
- g.drawString ("Game Over, Scores: ", 190, 300);
- g.drawString ("Press Enter to Restart", 230, 350);
- }
- g.dispose();
- }
- @Override
- public void actionPerformed (ActionEvent e)
- {
- timer.start();
- if (play)
- {
- if (new Rectangle (ballposX, ballposY, 20, 20).intersects (new Rectangle(playerX, 525, 80, 40)))
- {
- ballYdir = -ballYdir;
- }
- for (int i = 0; i < map.map.length; i++)
- {
- for (int j = 0; j < map.map[0].length; j++)
- {
- if (map.map[i][j] > 0)
- {
- int brickX = j* map.brickWidth + 80;
- int brickY = i * map.brickHeight + 50;
- int brickWidth = map.brickWidth;
- int brickHeight = map.brickHeight;
- Rectangle rect = new Rectangle(brickX, brickY, brickWidth, brickHeight);
- Rectangle ballRect = new Rectangle (ballposX, ballposY, 20, 20);
- Rectangle brickRect = rect;
- if (ballRect.intersects (brickRect))
- {
- map.setBrickValue (0, i, j);
- totalBricks--;
- score += 5;
- if (ballposX + 19 <= brickRect.x || ballposX + 1 >= brickRect.x + brickRect.width)
- {
- ballXdir = -ballXdir;
- }
- else
- {
- ballYdir = -ballYdir;
- }
- }
- }
- }
- }
- ballposX += ballXdir;
- ballposY += ballYdir;
- if (ballposX < 0)
- {
- ballXdir = -ballXdir;
- }
- if (ballposY < 0)
- {
- ballYdir = -ballYdir;
- }
- if (ballposX > 670)
- {
- ballXdir = -ballXdir;
- }
- }
- repaint();
- }
- @Override
- public void keyTyped (KeyEvent e)
- {
- }
- @Override
- public void keyPressed (KeyEvent e)
- {
- if (e.getKeyCode() == KeyEvent.VK_RIGHT)
- {
- if (playerX >= 600)
- {
- playerX = 600;
- }
- else
- {
- moveRight();
- }
- }
- if (e.getKeyCode() == KeyEvent.VK_LEFT)
- {
- if (playerX < 10)
- {
- playerX = 10;
- }
- else
- {
- moveLeft();
- }
- }
- if (e.getKeyCode() == KeyEvent.VK_ENTER)
- {
- if (!play)
- {
- play = true;
- ballposX = 120;
- ballposY = 350;
- ballXdir = -1;
- ballYdir = -2;
- playerX = 310;
- score = 0;
- totalBricks = 21;
- map = new MapGenerator(3, 7);
- repaint();
- }
- }
- }
- @Override
- public void keyReleased (KeyEvent e)
- {
- }
- public void moveRight()
- {
- play = true;
- playerX += 20;
- }
- public void moveLeft()
- {
- play = true;
- playerX -= 20;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment