如今的网络世界,各种各样的小游戏层出不穷,但随着游戏行业的发展,有的小游戏淡出了玩家们的视野,有的小游戏则被程序员们按照现在玩家的喜好更改为其他的形式,继续陪伴着玩家。虽然我对这些小游戏关注少了,但我童年的玩游记忆并没有淡出。关于这个案例,我记得我在小时候也玩过这样类似的飞机游戏,和我写的不同的是我的游戏里没有敌对飞机,只有子弹。子弹不会消失会在接触窗口最边缘后反弹,玩家必须操作飞机进行移动躲避,直到躲不了了,飞机会被消灭,代码会记住你得游玩时间,在你输了后弹出飞机的存活时间。
用JFrame窗口实现游戏,放上背景图片、飞机图片,再生成炮弹
通过线程睡眠、重画,产生动画。
对飞机的操作
public void drawSelf(Graphics g) {
if(live) {
g.drawImage(img, (int)x, (int)y, null);
if(left) {
x -=speed;
}
if(right) {
x +=speed;
}
if(top) {
y -=speed;
}
if(down) {
y +=speed;
}
}else {
}
}
修改坐标值,进行重画的时候,飞机位置会发生改变。
通过操作键盘改变坐标值。
在主函数中定义监听键盘的内部类:
//定义键盘监听的内部类
class KeyMonitor extends KeyAdapter{
@Override
public void keyPressed(KeyEvent e) {
pon.addDirection(e);
}
@Override
public void keyReleased(KeyEvent e) {
pon.minusDirection(e);
}
}
Pon是飞机类的一个实例,内部类中引用了它的两个方法,针对键盘不同状态时,对飞机坐标的改变。
VK_LEFT指的是键盘上的左方向键,UP则对应上,DOWN为下,RIGHT为右
public void addDirection(KeyEvent e) {