Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

*JAVA* The goal of this assignment is to develop an event-based game. You are go

ID: 3736161 • Letter: #

Question

*JAVA*

The goal of this assignment is to develop an event-based game. You are going to develop a Pong Game.

The game board is a rectangle with a ball bouncing around. On the right wall, you will have a rectangular paddle (1/3 of the wall height). The paddle moves with up and down arrows. Next to the game board, there will be a score board. It will show the count of goals, and count of hits to the paddle. In the beginning of the game, the paddle will be on the center of the right wall.

You can develop a two-player game, and it will count for extra 2 points bonus.

You can use the application JavaApplication93.zip as a template, or you can develop your own game from scratch.

You can arrange the color and the style of the board/paddle/ball/Score Board as you prefer.


package javaapplication93;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JFrame;
import javax.swing.JPanel;

class Point{
public float mX;
public float mY;   
  
public Point(float x, float y){
mX = x;
mY = y;
}
}

enum WallType{
top, bottom, left, right, none;
};

class Ball{
  
public Point mPos;
public Point mDir;
public int mLife;

  
public Ball(float y){
  
mPos = new Point(0.f, y);
mDir = new Point(1.f, 1.f);
mLife = 0;
}  
  
public void move(){
  
mPos.mX += mDir.mX;
mPos.mY += mDir.mY;
mLife++;
}
  
public WallType hit(){
  
if (mPos.mX <= 2){
return (WallType.left);
}
else if (mPos.mY <= 2){
return (WallType.top);
}
else if (mPos.mX >= 263){
return (WallType.right);
}
else if (mPos.mY >= 241){
return (WallType.bottom);
}
  
return (WallType.none);
}
  
public void rotate(WallType wallType){
switch (wallType){
case bottom:
mDir.mY *= -1;
break;  
case top:
mDir.mY *= -1;
break;  
case left:
mDir.mX *= -1;
break;
case right:
mDir.mX *= -1;
break;  
}
}
}


public class PongGame extends JPanel {

Ball mBall;
  
public PongGame(){
super();
  
Random rand = new Random();
float y = rand.nextInt(200);
  
mBall = new Ball(y);
}
  
@Override
protected void paintComponent(Graphics g) {
super.paintComponents(g); //To change body of generated methods, choose Tools | Templates.
  
g.setColor(Color.red);
g.fillRect(0, 0, 270, 5);
  
g.setColor(Color.red);
g.fillRect(0, 0, 5, 270);
  
g.setColor(Color.red);
g.fillRect(0, 243, 270, 5);
  
g.setColor(Color.red);
g.fillRect(265, 0, 5, 250);
  
g.setColor(Color.blue);
g.fillOval((int)mBall.mPos.mX, (int)mBall.mPos.mY, 4, 4);
  
}
  
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
  
JFrame myFrame = new JFrame("My Pong Game");
myFrame.setLayout(new BorderLayout());
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
PongGame pong = new PongGame();
myFrame.add(pong, BorderLayout.CENTER);
  
TimerTask moveBall = new TimerTask() {
@Override
public void run() {
pong.mBall.move();
  
if (pong.mBall.mLife > 5){   
WallType hit = pong.mBall.hit();
if (hit != WallType.none){
pong.mBall.rotate(hit);
System.out.println(hit);
pong.mBall.mLife = 0;
}
}
  
pong.repaint();
}
};
  
Timer timer = new Timer();
timer.scheduleAtFixedRate(moveBall, 0, 5);
  
myFrame.setSize(270, 270);
myFrame.setVisible(true);
}
  
}

Explanation / Answer

the following code will provide u a ping pong game....

description

* Project Name:   ping pong java code-sticker ball
environment :  Java
* IDE:   NetBeans
* Description: , its a stand alone application, i added some features like cheering sound at the start of the game, beside the other described features in this topic:
it has two classes

ball and sound

package stickerball_game;

import java.awt.Color;

import java.awt.Component;

import java.awt.Graphics;

import java.awt.Image;

import javax.swing.ImageIcon;

public class Ball {

/** Creates a new instance of Ball */

private Sound mysound;

private int Reduis;

public int x;

public int y;

public int vx;

public int vy;

private int BALL_TOP;

private int BALL_LEFT;

private int BALL_RIGHT;

private int BALL_DOWN;

private int PLAYER_TOP;

private int PLAYER_DOWN;

private int PLAYER_RIGHT;

private int COMP_TOP;

private int COMP_DOWN;

private int COMP_LEFT;

private int max_vx=5;

private int max_vy=5;

public Component myBase;

private Color BallColor;

private Image myImg;

public Ball(int r, int x,int y,int vx,int vy,Color BallColor,Component newBase) {

Reduis=r;

this.x=x;

this.y=y;

this.vx=vx;

this.vy=vy;

myBase=newBase;

myImg=new ImageIcon("images/Ball.gif").getImage();

this.BallColor=BallColor;

}

public void move() {

if (vx > max_vx) vx = max_vx;

else if (vx < -max_vx) vx = -max_vx;

else if (vy > max_vy) vy = max_vy;

else if (vy < -max_vy) vy = -max_vy;

// else if (vx == 0 && !isStoped) vx = 1;

x += vx;

y += vy;

}

public int wheresBall() {

if (vy > 0) {

if (y > 280) {

vy = -vy;

return 0;

}

} else if (vy < 0) {

if (y < 40) {

vy = -vy;

return 0;

}

}

if(x<20)

return 1;

else if(x>375)

return 2;

return 0;

}

public void PCollision(Player PlayerStick) {

BALL_TOP = y - Reduis;

BALL_DOWN = y + Reduis;

BALL_LEFT = x - Reduis;

BALL_RIGHT = x + Reduis;

PLAYER_TOP = PlayerStick.y;

PLAYER_DOWN = PlayerStick.y + PlayerStick.sizey;

if ((BALL_TOP >= PLAYER_TOP - 10) && (BALL_DOWN <= PLAYER_DOWN + 10)) {

if (BALL_LEFT <= 30 ) {

mysound = new Sound("Sound/hit.wav");

vx = - vx;

if (PlayerStick.vy < 0) {

vy --;

} else if (PlayerStick.vy > 0) {

vy += PlayerStick.vy;

}

}

}

}

public void CCollision(Computer CompStick) {

BALL_TOP = y - Reduis;

BALL_DOWN = y + Reduis;

BALL_LEFT = x - Reduis;

BALL_RIGHT = x + Reduis;

COMP_TOP = CompStick.y;

COMP_DOWN= CompStick.y + CompStick.sizey;

if ((BALL_TOP >= COMP_TOP - 10) && (BALL_DOWN <= COMP_DOWN + 10)) {

if (BALL_RIGHT >= 370 ) {

mysound = new Sound("Sound/hit.wav");

vx = - vx;

if (CompStick.vy < 0) {

vy --;

} else if (CompStick.vy > 0) {

vy += CompStick.vy;

}

}

}

}

public void DrawBall(Graphics g) {

g.setColor(BallColor);

g.drawImage(myImg,x - Reduis, y - Reduis,myBase);

}

}

package stickerball_game;

import java.io.File;

import java.io.IOException;

import javax.sound.sampled.AudioFormat;

import javax.sound.sampled.AudioInputStream;

import javax.sound.sampled.AudioSystem;

import javax.sound.sampled.DataLine;

import javax.sound.sampled.LineUnavailableException;

import javax.sound.sampled.SourceDataLine;

import javax.sound.sampled.UnsupportedAudioFileException;

public class Sound {

     

    AudioFormat audioFormat;

    AudioInputStream audioInputStream;

    SourceDataLine sourceDataLine;

    String X;

     

//end main

    /** Creates a new instance of Sound */

    public Sound(String Wavname) {

        new PlayThread().start();

        X=Wavname;

    }

    class PlayThread extends Thread{

        byte tempBuffer[] = new byte[10000];

         

        public void run(){

            File soundFile =new File(X);

            

                try {

                    audioInputStream = AudioSystem.

                            getAudioInputStream(soundFile);

                    audioFormat = audioInputStream.getFormat();

                     

                     

                    DataLine.Info dataLineInfo = new DataLine.Info(SourceDataLine.class,audioFormat);

                     

                    sourceDataLine =(SourceDataLine)AudioSystem.getLine(dataLineInfo);

                    sourceDataLine.open(audioFormat);

                } catch (LineUnavailableException ex) {

                    ex.printStackTrace();

                } catch (UnsupportedAudioFileException ex) {

                    ex.printStackTrace();

                } catch (IOException ex) {

                    ex.printStackTrace();

                }

                sourceDataLine.start();

                try{

                    int cnt;

                    while((cnt = audioInputStream.read(

                            tempBuffer,0,tempBuffer.length)) != -1) {

                        if(cnt > 0){

                            sourceDataLine.write(tempBuffer, 0, cnt);

                        }

                    }

                    sourceDataLine.flush();

                    sourceDataLine.close();

                    Thread.sleep(2000);

                }catch (Exception e) {

                    e.printStackTrace();

                    System.exit(0);

                }

         

        }

         

    }//end inner class PlayThread

//======================//

     

}//end outer class AudioPlayer02.j