Java Ball Game Program
Java Code:
import java.awt.Color;
import java.awt.Graphics;
/**
*this is a ball class code
*it sets the ball size location and color
*it contains all the methods that work for ball
* @author Khan
*/
public class Ball {
public int size; // ball size
public int xpos, ypos; // position of ball moves
public int xs,ys; //minimal box position
/**
* this is the contructor of the class
* @param diameter sets the diameter of the ball
* @param npixel sets the initial position of the ball
*/
public Ball(int diameter, int npixel){ // traveling and initial ball position
size = diameter;
xpos = npixel;
ypos = npixel;
xs =5;
ys = 5;
}
/**
* this is a method of setting position of ball
* @return the top on Y axis position of the ball
*/
public int getTop(){ // Return Y coordinate of top of the ball
return ys;
}
/**
* this is a method of setting position of ball
* @return. the bottom on Y axis position of the ball
*/
public int getBottom(){ // Return Y coordinate of bottom of the ball
return ys + size;
}
/**
*
* this is a method of setting position of ball
* @return the left on X axis position of the ball
*/
public int getLeft(){ // Return x coordinate of left of the ball
return xs;
}
/**
* this is a method of setting position of ball
* @return the right on X axis position of the ball
*/
public int getRight(){ // Return X coordinate of right of the ball
return xs + size;
}
/**
* this method draw the ball
* @param b is the object of ball
*/
public void drawBall(Graphics b){ // method for draw a ball
b.setColor(Color.white);
b.fillOval(xs, ys, size, size);
}
/**
* method to reverse the direction on x
*/
public void reverseXDirection(){ // method to reverse the direction on x
xpos = -xpos;
}
/**
* method to reverse the direction on y
*/
public void reverseYDirection(){ // method to reverse the direction on y
ypos = -ypos;
}
/**
* method
* @return horizontal center
*/
public int horizontalCenter(){ // method to return horizontal center
return xs + size/2;
}
/**
* method
* @return vertical center
*/
public int verticalCenter(){ // method to return vertical center
return ys + size/2;
}
/**
*
* @param width when ball hits the x axis walls it chnges its direction to reverse
* @param height when ball hits the x axis walls it chnges its direction to reverse
*/
public void Pos(int width, int height){ // method to increment in x & y position and when hits the wall change the direction
xs += xpos;
ys += ypos;
if ((ys + size >= height) || (ys <=0 ))
ypos = -ypos;
if ((xs + size >= width ) || (xs <=0))
xpos = -xpos;
}
}
import java.awt.Graphics;
/**
*this is a ball class code
*it sets the ball size location and color
*it contains all the methods that work for ball
* @author Khan
*/
public class Ball {
public int size; // ball size
public int xpos, ypos; // position of ball moves
public int xs,ys; //minimal box position
/**
* this is the contructor of the class
* @param diameter sets the diameter of the ball
* @param npixel sets the initial position of the ball
*/
public Ball(int diameter, int npixel){ // traveling and initial ball position
size = diameter;
xpos = npixel;
ypos = npixel;
xs =5;
ys = 5;
}
/**
* this is a method of setting position of ball
* @return the top on Y axis position of the ball
*/
public int getTop(){ // Return Y coordinate of top of the ball
return ys;
}
/**
* this is a method of setting position of ball
* @return. the bottom on Y axis position of the ball
*/
public int getBottom(){ // Return Y coordinate of bottom of the ball
return ys + size;
}
/**
*
* this is a method of setting position of ball
* @return the left on X axis position of the ball
*/
public int getLeft(){ // Return x coordinate of left of the ball
return xs;
}
/**
* this is a method of setting position of ball
* @return the right on X axis position of the ball
*/
public int getRight(){ // Return X coordinate of right of the ball
return xs + size;
}
/**
* this method draw the ball
* @param b is the object of ball
*/
public void drawBall(Graphics b){ // method for draw a ball
b.setColor(Color.white);
b.fillOval(xs, ys, size, size);
}
/**
* method to reverse the direction on x
*/
public void reverseXDirection(){ // method to reverse the direction on x
xpos = -xpos;
}
/**
* method to reverse the direction on y
*/
public void reverseYDirection(){ // method to reverse the direction on y
ypos = -ypos;
}
/**
* method
* @return horizontal center
*/
public int horizontalCenter(){ // method to return horizontal center
return xs + size/2;
}
/**
* method
* @return vertical center
*/
public int verticalCenter(){ // method to return vertical center
return ys + size/2;
}
/**
*
* @param width when ball hits the x axis walls it chnges its direction to reverse
* @param height when ball hits the x axis walls it chnges its direction to reverse
*/
public void Pos(int width, int height){ // method to increment in x & y position and when hits the wall change the direction
xs += xpos;
ys += ypos;
if ((ys + size >= height) || (ys <=0 ))
ypos = -ypos;
if ((xs + size >= width ) || (xs <=0))
xpos = -xpos;
}
}
---------------------------------------------
import java.awt.*;
import java.awt.event.*;
import javax.swing.Timer;
/**
* this is controller class which control ball paddle classes methods
* display objects
* and control mouse i.e controller of the game
* it implements actionsListener and mouseMotionListener
* @author Khan
*/
public class Controller implements ActionListener, MouseMotionListener{
private final static int DIAMETER = 20; // diameter of ball
private final static int INCREMENT = 5; // increment in ball
private final static int LENGTH = 45; // length of paddle
private Ball ball; // class ball object
private Paddle paddle; // class paddle object
private Display display; // class display object
private Timer t; // timer
/**
*this is the constructor of the class
*that initialize the object of other class
*setting size of paddle and ball
*/
public Controller(){ //constructor to register the contents of object of classes
display = new Display(this);
ball = new Ball(DIAMETER, INCREMENT);
paddle = new Paddle(LENGTH, display.getWidth()/2, display.getHeight()/8);
t = new Timer(25, this);
t.setInitialDelay(1000);
t.start();
display.addMouseMotionListener(this);
}
/**
* display ball and paddle
* @param d object that set for ball and padlle
*/
public void displayObject(Graphics d){ // method to checking ball and paddle, they are exist or not
if(ball != null)
ball.drawBall(d);
if(paddle != null)
paddle.drawPaddle(d);
}
/**
* method to menage paddle position
*/
public void mouseDragged(MouseEvent m){ // method to manage paddle position
int x, y;
x = m.getX();
y = m.getY();
paddle.PPos(x, y);
display.repaint();
}
/**
* method to manage paddle position
*/
public void mouseMoved(MouseEvent m){ // method to manage paddle position
int x, y;
x = m.getX();
y = m.getY();
paddle.PPos(x, y);
display.repaint();
}
/**
* method to check ball in contact and calling updates methods of classes
* display the objects
*/
public void actionPerformed(ActionEvent a){ // method to check ball in contact and calling updates methods of classes
int pbottom;
int bcenter;
int btop;
ball.Pos(display.getWidth(), display.getHeight());
btop = ball.getTop();
pbottom = paddle.getBottom();
if(btop <= pbottom && btop >= pbottom - INCREMENT){
bcenter = ball.horizontalCenter();
if(bcenter >= paddle.getLeft() && bcenter <= paddle.getRight()){
ball.reverseYDirection();
}
}
display.repaint();
}
}
--------------------------------------------------
import java.awt.event.*;
import javax.swing.Timer;
/**
* this is controller class which control ball paddle classes methods
* display objects
* and control mouse i.e controller of the game
* it implements actionsListener and mouseMotionListener
* @author Khan
*/
public class Controller implements ActionListener, MouseMotionListener{
private final static int DIAMETER = 20; // diameter of ball
private final static int INCREMENT = 5; // increment in ball
private final static int LENGTH = 45; // length of paddle
private Ball ball; // class ball object
private Paddle paddle; // class paddle object
private Display display; // class display object
private Timer t; // timer
/**
*this is the constructor of the class
*that initialize the object of other class
*setting size of paddle and ball
*/
public Controller(){ //constructor to register the contents of object of classes
display = new Display(this);
ball = new Ball(DIAMETER, INCREMENT);
paddle = new Paddle(LENGTH, display.getWidth()/2, display.getHeight()/8);
t = new Timer(25, this);
t.setInitialDelay(1000);
t.start();
display.addMouseMotionListener(this);
}
/**
* display ball and paddle
* @param d object that set for ball and padlle
*/
public void displayObject(Graphics d){ // method to checking ball and paddle, they are exist or not
if(ball != null)
ball.drawBall(d);
if(paddle != null)
paddle.drawPaddle(d);
}
/**
* method to menage paddle position
*/
public void mouseDragged(MouseEvent m){ // method to manage paddle position
int x, y;
x = m.getX();
y = m.getY();
paddle.PPos(x, y);
display.repaint();
}
/**
* method to manage paddle position
*/
public void mouseMoved(MouseEvent m){ // method to manage paddle position
int x, y;
x = m.getX();
y = m.getY();
paddle.PPos(x, y);
display.repaint();
}
/**
* method to check ball in contact and calling updates methods of classes
* display the objects
*/
public void actionPerformed(ActionEvent a){ // method to check ball in contact and calling updates methods of classes
int pbottom;
int bcenter;
int btop;
ball.Pos(display.getWidth(), display.getHeight());
btop = ball.getTop();
pbottom = paddle.getBottom();
if(btop <= pbottom && btop >= pbottom - INCREMENT){
bcenter = ball.horizontalCenter();
if(bcenter >= paddle.getLeft() && bcenter <= paddle.getRight()){
ball.reverseYDirection();
}
}
display.repaint();
}
}
--------------------------------------------------
import javax.swing.*;
import java.awt.*;
/**
* this methods displays all the class in the frame
* @author Khan
*/
public class Display extends JPanel {
public Controller controller;
public JFrame frame;
/**
* this method display the background and color of the back frame
*/
public void paintComponent(Graphics d){ // method draw back display of the game
d.setColor(Color.black);
d.fillRect(0, 0, getWidth(), getHeight());
controller.displayObject(d);
}
/**
* this is the constructor of the class
* setting frame size, and exit function of farme
* @param c setting all content getting from class controller
*/
public Display(Controller c){ // constructor display frame and other its objects
controller = c;
frame = new JFrame();
frame.add(this);
frame.setSize(400, 400);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
-----------------------------------------
import java.awt.*;
/**
* this methods displays all the class in the frame
* @author Khan
*/
public class Display extends JPanel {
public Controller controller;
public JFrame frame;
/**
* this method display the background and color of the back frame
*/
public void paintComponent(Graphics d){ // method draw back display of the game
d.setColor(Color.black);
d.fillRect(0, 0, getWidth(), getHeight());
controller.displayObject(d);
}
/**
* this is the constructor of the class
* setting frame size, and exit function of farme
* @param c setting all content getting from class controller
*/
public Display(Controller c){ // constructor display frame and other its objects
controller = c;
frame = new JFrame();
frame.add(this);
frame.setSize(400, 400);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
-----------------------------------------
import java.awt.Color;
import java.awt.Graphics;
/**
* this paddle class sets the location size and color of paddle
* @author Khan
*/
public class Paddle {
private int length; // length of paddle
private int pxpos, pypos; // x and y position of paddle
/**
*this is a contructor of the class paddle
* @param l manage length of paddle
* @param px set x postion of paddl e
* @param py
*/
public Paddle(int l, int px , int py){
length=l;
pxpos=px;
pypos=py;
}
/**
* width set the width of paddle
* and methods draw the paddle
*/
private static final int WIDTH = 7; // width of paddle
public void drawPaddle(Graphics p){ //method to draw paddle
p.setColor(Color.darkGray);
p.fillRect(pxpos - length/2, pypos, length, WIDTH);
}
/**
* method of the paddle
* @return Y top surface of the paddle
*/
public int getTop(){ // return Y coordinate of top of the paddle
return pypos;
}
/**
* @return Y bottom surface of the paddle
*/
public int getBottom(){ // return Y coordinate of bottom of the paddle
return pypos + WIDTH;
}
/**
* @return X left surface of the paddle
*/
public int getLeft(){ // return X coordinate of left of the paddle
return pxpos - length / 2;
}
/**
* @return X right surface of the paddle
*/
public int getRight(){ // return X coordinate of right of the paddle
return pxpos + length / 2;
}
/**
* @param x changes in x position of the paddle
* @param y y is same
*/
public void PPos(int x, int y){ // change x
pxpos = x;
}
}
------------------------------------------------
import java.awt.Graphics;
/**
* this paddle class sets the location size and color of paddle
* @author Khan
*/
public class Paddle {
private int length; // length of paddle
private int pxpos, pypos; // x and y position of paddle
/**
*this is a contructor of the class paddle
* @param l manage length of paddle
* @param px set x postion of paddl e
* @param py
*/
public Paddle(int l, int px , int py){
length=l;
pxpos=px;
pypos=py;
}
/**
* width set the width of paddle
* and methods draw the paddle
*/
private static final int WIDTH = 7; // width of paddle
public void drawPaddle(Graphics p){ //method to draw paddle
p.setColor(Color.darkGray);
p.fillRect(pxpos - length/2, pypos, length, WIDTH);
}
/**
* method of the paddle
* @return Y top surface of the paddle
*/
public int getTop(){ // return Y coordinate of top of the paddle
return pypos;
}
/**
* @return Y bottom surface of the paddle
*/
public int getBottom(){ // return Y coordinate of bottom of the paddle
return pypos + WIDTH;
}
/**
* @return X left surface of the paddle
*/
public int getLeft(){ // return X coordinate of left of the paddle
return pxpos - length / 2;
}
/**
* @return X right surface of the paddle
*/
public int getRight(){ // return X coordinate of right of the paddle
return pxpos + length / 2;
}
/**
* @param x changes in x position of the paddle
* @param y y is same
*/
public void PPos(int x, int y){ // change x
pxpos = x;
}
}
------------------------------------------------
/**
* this class menage to run all the class
* @author Khan
*/
public class Play {
public static void main(String[] args)
{
Controller start = new Controller();
}
}
----------------------------
* this class menage to run all the class
* @author Khan
*/
public class Play {
public static void main(String[] args)
{
Controller start = new Controller();
}
}
----------------------------
No comments:
Post a Comment