Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
210 changes: 210 additions & 0 deletions Keshav Mohan(1710991398)/Gameplay.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,210 @@
package brickBracker;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JPanel;
import javax.swing.Timer;

public class Gameplay extends JPanel implements KeyListener,ActionListener{
/**
*
*/
private static final long serialVersionUID = -3770429997350072036L;
private boolean play=false;
private int score=0;

private int totalBricks=21;

private Timer timer;
private int delay =8;
//starting position of our slider
private int playerX=310;
//starting position of the ball
private int ballposX=120;
private int ballposY=350;
//direction of ball
private int ballXdir= -1;
private int ballYdir= -2;

private MapGenerator map;

public Gameplay() {
//(rows,cols)
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("serif",Font.BOLD,25));
g.drawString(""+score,590,30);
//the paddle
g.setColor(Color.green);
g.fillRect(playerX,550,100, 8);

// the ball
g.setColor(Color.yellow);
g.fillOval(ballposX,ballposY , 20, 20);

if(totalBricks<=0) {
play=false;
ballXdir=0;
ballYdir=0;
g.setColor(Color.red);
g.setFont(new Font("serif",Font.BOLD,30));
g.drawString(" You Won: ",260,300);

g.setFont(new Font("serif",Font.BOLD,20));
g.drawString("Press Enter to Restart",230,350);
}

if(ballposY >570) {
play=false;
ballXdir=0;
ballYdir=0;
g.setColor(Color.red);
g.setFont(new Font("serif",Font.BOLD,30));
g.drawString("Game Over, Scores: "+score,190,300);

g.setFont(new Font("serif",Font.BOLD,20));
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,550,100,8))) {
ballYdir= -ballYdir;
}

A :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;

break A;
}

}
}
}
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 keyReleased(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();
}
}
}
public void moveRight() {
play=true;
playerX+=20;
}

public void moveLeft() {
play=true;
playerX-=20;

}





}
19 changes: 19 additions & 0 deletions Keshav Mohan(1710991398)/Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package brickBracker;

import javax.swing.JFrame;

public class Main {

public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame obj=new JFrame();
Gameplay gamePlay=new Gameplay();
obj.setBounds(10,10,700,600);
obj.setTitle("Breakout Ball");
obj.setResizable(false);
obj.setVisible(true);
obj.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
obj.add(gamePlay);
}

}
47 changes: 47 additions & 0 deletions Keshav Mohan(1710991398)/MapGenerator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package brickBracker;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics2D;

public class MapGenerator {

public int map[][];
public int brickWidth;
public int brickHeight;
public MapGenerator(int row,int col) {
map=new int [row][col];
for(int i=0;i<map.length;i++) {
for(int j=0;j<map[0].length;j++) {
map[i][j]=1;
}
}
brickWidth=540/col;
brickHeight=150/row;
}
public void draw(Graphics2D g) {
for(int i=0;i<map.length;i++) {
for(int j=0;j<map[0].length;j++) {
if(map[i][j]>0) {
g.setColor(Color.white);
g.fillRect(j*brickWidth + 80, i*brickHeight +50, brickWidth, brickHeight);

g.setStroke(new BasicStroke(3));
g.setColor(Color.black);
g.drawRect(j*brickWidth + 80, i*brickHeight +50, brickWidth, brickHeight);
}



}

}



}
public void setBrickValue(int value,int row,int col) {
map[row][col]=value;
}

}