菜鸟日记—2月5日
案例:桌球小游戏(雏形)
有待改进
先看下效果:
1.先准备所需图片
ball:
desk:
2.创建窗口
//创建窗口
void launchFrame() {
setSize(856, 501);
setLocation(532, 289);
//true表示窗口可见
setVisible(true);
//实现动画,每秒绘制窗口25次
while (true){
//重新绘制,由于是个死循环,所以会一直绘制
repaint();
a++;
try {
Thread.sleep(33); //1s = 1000ms; 大约1秒绘制1000/33=30次。
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
3.绘制窗口
/*
* a : 绘制次数
* ball : 球
* desk : 桌子
* x : 小球横坐标
* y : 小球纵坐标
* degree : 小球移动角度*/
int a = 0;
Image ball = Toolkit.getDefaultToolkit().getImage("images/ball.png");
Image desk = Toolkit.getDefaultToolkit().getImage("images/desk.png");
double x = 200;
double y = 200;
double degree = 3.14/3; //弧度。3.14=180°。 60度。
//绘制窗口
public void paint(Graphics g){
System.out.println("窗口绘制了" + a + "次");
g.drawImage(desk,0,0,null);
g.drawImage(ball,(int)x,(int)y,null);
//移动方向
x += 10 * Math.cos(degree);
y += 10 * Math.sin(degree);
//碰到上下边界
//要减去边界和球的宽度
if (y > 501 - 40 - 30 || y < 40 + 30){
degree = -degree;
}
//碰到左右边界
if (x > 856 - 40 - 30 || x < 40){
degree = 3.14 - degree;
}
}
4.调用
public static void main(String[] args) {
System.out.println("游戏开始!");
BallGame game = new BallGame();
game.launchFrame();
}
5.图解