Question: Java Programming for the game called Pong is a rectangular paddle which moves back and forth via mouse drag along the bottom of the pane;

Java Programming for the game called Pong is a rectangular paddle which moves back and forth via mouse drag along the bottom of the pane; the bottom of the paddle should be about 1/2 the diameter of the ball off the bottom. If the ball connects with the paddle, then it bounces at a 90 degrees angle back into the pane space. If the ball misses the paddle, then the score is decremented by 1. The game ends when 20 points are lost.

Nice things:

a) A label that displays the score (you can start at 20 and go to zero if you want...)

b) For every 10 paddle connections in a row, the ball moves faster

c) For every 10 paddle connections in a row, the ball changes color

d) For every (2?) paddle misses in a row, the paddle grows in length

There is MATH involved in figuring out the connection between the paddle and the ball. You probably want to pay a lot of attention to how moveBall() function works. Follow the code provided.

import javafx.animation.KeyFrame; import javafx.animation.Timeline; import javafx.beans.property.DoubleProperty; import javafx.scene.layout.Pane; import javafx.scene.paint.Color; import javafx.scene.shape.Circle; import javafx.util.Duration;

public class BallPane extends Pane {

public final double radius = 20; private double x = radius, y = radius; private double dx = 1, dy = 1; private Circle circle = new Circle(x, y, radius); private Timeline animation;

public BallPane() { circle.setFill(Color.GREEN); // Set ball color getChildren().add(circle); // Place a ball into this pane

// Create an animation for moving the ball animation = new Timeline( new KeyFrame(Duration.millis(50), e -> moveBall())); animation.setCycleCount(Timeline.INDEFINITE); animation.play(); // Start animation }

public void play() { animation.play(); }

public void pause() { animation.pause(); }

public void increaseSpeed() { animation.setRate(animation.getRate() + 0.1); }

public void decreaseSpeed() { animation.setRate( animation.getRate() > 0 ? animation.getRate() - 0.1 : 0); }

import javafx.application.Application; import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.input.KeyCode;

public class BounceBallControl extends Application { @Override // Override the start method in the Application class public void start(Stage primaryStage) { BallPane ballPane = new BallPane(); // Create a ball pane

// Pause and resume animation ballPane.setOnMousePressed(e -> ballPane.pause()); ballPane.setOnMouseReleased(e -> ballPane.play());

// Increase and decrease animation ballPane.setOnKeyPressed(e -> { if (e.getCode() == KeyCode.UP) { ballPane.increaseSpeed(); } else if (e.getCode() == KeyCode.DOWN) { ballPane.decreaseSpeed(); } });

// Create a scene and place it in the stage Scene scene = new Scene(ballPane, 250, 150); primaryStage.setTitle("BounceBallControl"); // Set the stage title primaryStage.setScene(scene); // Place the scene in the stage primaryStage.show(); // Display the stage // Must request focus after the primary stage is displayed ballPane.requestFocus(); }

/** * The main method is only needed for the IDE with limited * JavaFX support. Not needed for running from the command line. */ public static void main(String[] args) { launch(args); } }

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!