桌球小游戏是初学Java的同学可能会遇到的一个趣味小项目。寓教于乐,增加了学习编程的乐趣。这里笔者在最基本的桌球小游戏中,改进思路是通过引入一个可输入的变量speed来存放速度变量并设置速度变量随着时间递减,再采用for循环当速度变量小于0时就中止循环到达小球不再移动的效果,改进内容如下:
1可以输入桌球初始速度
2桌球速度随着时间递减,最后会停留到某处。
效果如下:


//改进版本桌球游戏
import java.util.Scanner;
import java.awt.*;
import javax.swing.*;
public class BallGame2 extends JFrame{
Image ball = Toolkit.getDefaultToolkit().getImage("images/ball.png");
Image desk = Toolkit.getDefaultToolkit().getImage("images/desk.jpg");
Scanner scan=new Scanner(System.in);
//小球坐标
double x=100;
double y=100;
boolean right = true;
//输入一个大于0的小球初试速度
double speed=scan.nextDouble();
//画窗口的方法
public void paint(Graphics g) {
System.out.println("窗口被画了一次");
g.drawImage(desk, 0, 0, null);
g.drawImage(ball,(int)x,(int)y,null);
if(speed>0) {
if(right) {
x=x+speed;
}else {
x=x-speed;
}
if(x>856-70) {
right=false;
}
if(x<60) {
right=true;
}
}
}
//窗口加载
void launchFrame() {
setSize(856,500);
setLocation(100,100);
setVisible(true);
//重画窗口
while(true) {
repaint();
try {
Thread.sleep(40);
speed=speed-0.5;
}catch(Exception e) {
e.printStackTrace();
}
}
}
//main方法是入口
public static void main(String[] args) {
System.out.println("桌球小游戏");
System.out.println("输入一个大于0的小球初试速度");
BallGame2 game = new BallGame2();
game.launchFrame();
}
}
原文:https://www.cnblogs.com/wudaoxiaosheng/p/12323502.html