package com.spconger.BreakoutPaddle; import acm.graphics.*; import acm.program.*; import acm.util.*; import java.awt.Color; import java.awt.event.*; import java.awt.color.*; public class Program extends GraphicsProgram { /** * This class is a test for Breakout * it sets up the ball and the paddle and * gets the ball to interact with the paddle * in class 2013-7-8 */ //these are our constants private final int BALLDIAMETER = 20; private final int FORMWIDTH=400; private final int FORMHEIGHT=600; private final int PADDLEWIDTH=60; private final int PADDLEHEIGHT=10; private final int PADDLEOFFSET=FORMHEIGHT -30; private final int BALLSTARTX=FORMWIDTH/2-BALLDIAMETER/2; private final int BALLSTARTY=FORMHEIGHT/2-BALLDIAMETER/2; //class level variables private GOval ball; private GRect paddle; private double ballVX=3; private double ballVY; public void run(){ setSize(FORMWIDTH, FORMHEIGHT); //call all the methods createPaddle(); addKeyListeners(); createBall(); waitForClick(); moveBall(); } //create the paddle private void createPaddle(){ paddle=new GRect(FORMWIDTH/2-PADDLEWIDTH/2, PADDLEOFFSET, PADDLEWIDTH, PADDLEHEIGHT); paddle.setFillColor(Color.DARK_GRAY); paddle.setFilled(true); add(paddle); } public void keyPressed(KeyEvent e){ //this method moves the paddle //and keeping it in form bounds double x=paddle.getX(); double y=paddle.getY(); switch (e.getKeyCode()){ case KeyEvent.VK_RIGHT: if(x <(FORMWIDTH-PADDLEWIDTH)){ paddle.move(PADDLEWIDTH, 0); } break; case KeyEvent.VK_LEFT: if (x > 0){ paddle.move(-PADDLEWIDTH, 0); } break; default: break; } } private void createBall(){ //create the ball and give it an initial //random y velocity RandomGenerator rand = new RandomGenerator(); ballVY=rand.nextDouble(1.0,3.0); ball = new GOval(BALLSTARTX, BALLSTARTY, BALLDIAMETER, BALLDIAMETER); ball.setFillColor(Color.BLUE); ball.setFilled(true); add(ball); } private void moveBall(){ //this moves the ball and keeps it in bounds boolean play=true; while(play){ if (ball.getX()>FORMWIDTH-BALLDIAMETER || ball.getX()<=0){ ballVX=-ballVX; } if(ball.getY()>=FORMHEIGHT-BALLDIAMETER || ball.getY()<=0){ ballVY=-ballVY; } //this makes it interact with the paddle, //though you should check for all for corners if(getElementAt(ball.getX()+ BALLDIAMETER, ball.getY()+BALLDIAMETER)==paddle){ ballVY=-ballVY; } //if the ball hits the bottom turn over if(ball.getY() >= FORMHEIGHT-BALLDIAMETER) { play=false; } ball.move(ballVX, ballVY); pause(30); } } }
Monday, July 8, 2013
Ball and Paddle
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment