桌球小游戏
运用eclipse进行编写
在创建好项目后要在项目中添加一个imagme文件,用于存放游戏所用的两张图片。
注意图片的后缀名是png还是jpg
在src中导包,导类
进行编写
- 第一阶段:
测试一下,运行后会有一个窗口
import java.awt.*;
import javax.swing.*;
public class BallGame extends JFrame{
//窗口加载
void launchFrame(){
setSize(300,300);
setLocation(400,400);
setVisible(true);
}
//main方法是程序执行的入口
public static void main(String[] args){
System.out.println("一个窗口");
BallGame game= new BallGame();
game.launchFrame();
}
}
运行结果:
- 第二阶段
这是最终代码
package day2;
import java.awt.*;
import javax.swing.*;
public class BallGame2 extends JFrame{
Image ball=Toolkit.getDefaultToolkit().getImage("imagme/ball.png");
Image desk=Toolkit.getDefaultToolkit().getImage("imagme/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){//500是窗口高度,40是桌子边框,30是球的直径,最后的40是标题栏的高度
degree=-degree;
}
//碰到左右边界
if(x<40||x>856-40-30){
degree=3.14-degree;
} else {
}
}
//窗口加载
void launchFrame(){
setSize(856,500);
setLocation(50,50);
setVisible(true);
//重画窗口
while(true){
repaint();
try {
Thread.sleep(40); //40ms,大约一秒画20次窗口
} catch (Exception e) {
e.printStackTrace();
}
}
}
//main方法是程序执行的入口
public static void main(String[] args){
System.out.println("一个窗口");
BallGame2 game= new BallGame2();
game.launchFrame();
}
}
运行结果:
会进行撞击并反弹