| | |
Help with really bad pong game
![]() |
•
•
Join Date: Nov 2008
Posts: 4
Reputation:
Solved Threads: 0
Hello I am new to java and i was woundering if someone could help me with this program. I was woundering how to put more balls into it and how to make the balls flash very fast almost like a strobe light. Please help thx.
import java.awt.*;
import java.applet.*;
import javax.swing.*;
import java.awt.geom.*;
import java.util.concurrent.*;
import java.awt.event.*;
import java.awt.Color;
import java.awt.Toolkit;
public class Pong3 extends JApplet
{
public static final int WIDTH = 500;
public static final int HEIGHT = 520;
private PaintSurface canvas;
public void init()
{
this.setSize(WIDTH, HEIGHT);
canvas = new PaintSurface();
this.add(canvas, BorderLayout.CENTER);
ScheduledThreadPoolExecutor executor =
new ScheduledThreadPoolExecutor(1);
executor.scheduleAtFixedRate(new AnimationThread(this),
0L, 10L, TimeUnit.MILLISECONDS);
}
}
class AnimationThread implements Runnable
{
JApplet c;
public AnimationThread(JApplet c)
{
this.c = c;
}
public void run()
{
c.repaint();
}
}
class PaintSurface extends JComponent
{
int paddle_x = 0;
int paddle_y = 500;
int score = 0;
float english = 1.0f;
Ball ball;
public PaintSurface()
{
addMouseMotionListener(new MouseMotionAdapter()
{
public void mouseMoved(MouseEvent e)
{
if (e.getX() -30- paddle_x > 5)
english = 1.5f;
else if (e.getX() -30- paddle_x < -5)
english = -1.5f;
else
english = 1.0f;
paddle_x = e.getX()- 30;
}
});
ball = new Ball(300);
}
public void paint (Graphics g)
{
Graphics2D g2 = (Graphics2D)g;
g2.setRenderingHint(
RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
Shape paddle = new Rectangle2D.Float(
paddle_x, paddle_y, 100, 1);
if (ball.intersects(paddle_x, paddle_y, 100, 1)
&& ball.y_speed > 0)
{
ball.y_speed = -ball.y_speed;
ball.x_speed = (int)(ball.x_speed * english);
score += Math.abs(ball.x_speed * 10);
}
if (ball.intersects(0, 519, 2, 2)
&& ball.y_speed > 0)
{
ball.y_speed = -ball.y_speed;
ball.x_speed = (int)(ball.x_speed * english);
score += Math.abs(ball.x_speed * 10);
}
if (ball.getY() + ball.getHeight()
>= Pong3.HEIGHT)
{
ball = new Ball(15);
score -= 500;
}
ball.move();
g2.setColor(Color.RED);
g2.fill(ball);
g2.setColor(Color.BLACK);
g2.fill(paddle);
g2.drawString("Score: " + score, 300, 20);
}
}
class Ball extends Ellipse2D.Float
{
public int x_speed, y_speed;
private int d;
private int width = Pong3.WIDTH;
private int height = Pong3.HEIGHT;
public Ball(int diameter)
{
super((int)(Math.random() * (Pong3.WIDTH - 20)),
0, diameter, diameter);
this.d = diameter;
this.x_speed = (int)(Math.random() * 20);
this.y_speed = (int)(Math.random() * 20);
}
public void move()
{
{
if(super.x < 0 || super.x > width - d)
{
x_speed = -x_speed;
}
if(super.y < 0 || super.y > height - d)
{
y_speed = -y_speed;
}
super.x += x_speed;
super.y += y_speed;
}
}
}
import java.awt.*;
import java.applet.*;
import javax.swing.*;
import java.awt.geom.*;
import java.util.concurrent.*;
import java.awt.event.*;
import java.awt.Color;
import java.awt.Toolkit;
public class Pong3 extends JApplet
{
public static final int WIDTH = 500;
public static final int HEIGHT = 520;
private PaintSurface canvas;
public void init()
{
this.setSize(WIDTH, HEIGHT);
canvas = new PaintSurface();
this.add(canvas, BorderLayout.CENTER);
ScheduledThreadPoolExecutor executor =
new ScheduledThreadPoolExecutor(1);
executor.scheduleAtFixedRate(new AnimationThread(this),
0L, 10L, TimeUnit.MILLISECONDS);
}
}
class AnimationThread implements Runnable
{
JApplet c;
public AnimationThread(JApplet c)
{
this.c = c;
}
public void run()
{
c.repaint();
}
}
class PaintSurface extends JComponent
{
int paddle_x = 0;
int paddle_y = 500;
int score = 0;
float english = 1.0f;
Ball ball;
public PaintSurface()
{
addMouseMotionListener(new MouseMotionAdapter()
{
public void mouseMoved(MouseEvent e)
{
if (e.getX() -30- paddle_x > 5)
english = 1.5f;
else if (e.getX() -30- paddle_x < -5)
english = -1.5f;
else
english = 1.0f;
paddle_x = e.getX()- 30;
}
});
ball = new Ball(300);
}
public void paint (Graphics g)
{
Graphics2D g2 = (Graphics2D)g;
g2.setRenderingHint(
RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
Shape paddle = new Rectangle2D.Float(
paddle_x, paddle_y, 100, 1);
if (ball.intersects(paddle_x, paddle_y, 100, 1)
&& ball.y_speed > 0)
{
ball.y_speed = -ball.y_speed;
ball.x_speed = (int)(ball.x_speed * english);
score += Math.abs(ball.x_speed * 10);
}
if (ball.intersects(0, 519, 2, 2)
&& ball.y_speed > 0)
{
ball.y_speed = -ball.y_speed;
ball.x_speed = (int)(ball.x_speed * english);
score += Math.abs(ball.x_speed * 10);
}
if (ball.getY() + ball.getHeight()
>= Pong3.HEIGHT)
{
ball = new Ball(15);
score -= 500;
}
ball.move();
g2.setColor(Color.RED);
g2.fill(ball);
g2.setColor(Color.BLACK);
g2.fill(paddle);
g2.drawString("Score: " + score, 300, 20);
}
}
class Ball extends Ellipse2D.Float
{
public int x_speed, y_speed;
private int d;
private int width = Pong3.WIDTH;
private int height = Pong3.HEIGHT;
public Ball(int diameter)
{
super((int)(Math.random() * (Pong3.WIDTH - 20)),
0, diameter, diameter);
this.d = diameter;
this.x_speed = (int)(Math.random() * 20);
this.y_speed = (int)(Math.random() * 20);
}
public void move()
{
{
if(super.x < 0 || super.x > width - d)
{
x_speed = -x_speed;
}
if(super.y < 0 || super.y > height - d)
{
y_speed = -y_speed;
}
super.x += x_speed;
super.y += y_speed;
}
}
}
First, use [code] .. [/code] tags around any code that you post.
Secondly, don't put all of your update logic in the paint() method. Do that in your animation loop, or better yet, another method called by your animation loop. The paint() method should just paint the ball(s) and paddle in their current positions, which were determined by the other method.
Use an array or List of Ball objects.
In your animation loop, toggle a variable on each ball if you want them to flash individually or a single variable for all of them on/off. Use that variable in your paint() method to determine whether to paint the ball that cycle.
Secondly, don't put all of your update logic in the paint() method. Do that in your animation loop, or better yet, another method called by your animation loop. The paint() method should just paint the ball(s) and paddle in their current positions, which were determined by the other method.
•
•
•
•
I was woundering how to put more balls into it
•
•
•
•
and how to make the balls flash very fast almost like a strobe light.
![]() |
Similar Threads
- Tell us about yourself! (Community Introductions)
Other Threads in the Java Forum
- Previous Thread: Exception error for heap
- Next Thread: Audio Analyzer
| Thread Tools | Search this Thread |
account android applet application apps array automation awt bidirectional binary birt bluetooth businessintelligence busy_handler(null) card class classes client code collision columns component constructor database designadrawingapplicationusingjavajslider draw eclipse error eventlistener exception expand fractal free game givemetehcodez graphics gui guidancer homework html ide image inheritance integer integration intellij j2me java javafx javamicroeditionuseofmotionsensor javaprojects jlabel jme jni jpanel jtextfield jtree julia linux loop method midlethttpconnection migrate mobile mobiledevelopmentcreatejar monitoring myaggfun netbeans newbie nullpointerexception open-source oracle plazmic print problem program property ria scanner server set sharepoint smart sms smsspam sourcelabs splash sql sqlite subclass support swing testautomation textfield threads tree trolltech unlimited utility windows






