桌球游戏小项目
项目需求:
桌球在球桌中按照一定线路和角度移动,遇到边框会自动弹回。如图:
项目中用到的两个小图片,如下:
开发步骤:
目标:创建项目、创建窗口。
创建项目并拷贝图片:
在项目名MyPro01上单击右键,在菜单中依次选择new—Folder,创建一个名称是images的文件夹,并复制两 张图片到该目录下。并在src下创建类BallGame.java。
实现小球沿着任意角度飞行,会用到初中学习的三角函数
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JFrame;
public class BallGame2 extends JFrame {
Image ball = Toolkit.getDefaultToolkit().getImage("images/ball.png");
Image desk = Toolkit.getDefaultToolkit().getImage("images/desk.jpg");
double x= 100; //小球的横坐标
double y = 100; //小球的纵坐标
double degree = 3.14/3; //60°
//画窗口的方法
public void paint(Graphics g){
System.out.println("窗口被画了一次!");
g.drawImage(desk, 0, 0, null);//桌面图片位置及其显示
g.drawImage(ball, (int) x, (int) y, null); //小球图片位置及其显示
x = x+10*Math.cos(degree);
y = y+10*Math.sin(degree);
if(y>500-40-30||y<40+40){
degree = -degree;
}
if(x>856-40-30||x<0+40){
degree = 3.14-degree;
}
}
//窗口加载
void launchFrame(){
setSize(856,500); //宽和高分别为300
setLocation(50,50); //窗口左上架的xy坐标
setVisible(true);
//重画窗口
while(true){
repaint();//重画
try {
Thread.sleep(40);//40ms
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//main方法是程序执行的入口
public static void main(String[] args){
System.out.println("开始编程,实现游戏功能");
BallGame2 game = new BallGame2();
game.launchFrame();
}
}
最后的效果运行图,如下:
参考文章来源:http://www.sxt.cn/Java_jQuery_in_action/History_Direction.html