Java 后端飞机大战:敌机随机生成与移动
Java 后端飞机大战:敌机随机生成与移动
本节将深入解析 Java 后端飞机大战游戏代码中敌机随机生成和移动的实现机制。
1. 敌机移动与移除
public void paintSelf(Graphics gImage) {
super.paintSelf(gImage);
y -= speed;
// 当我们的子弹超出屏幕外就移除子弹
if (y < 0) {
this.setX(-200);
this.setY(200);
GameUtils.removeObjList.add(this);
}
}
代码解释:
paintSelf方法: 继承自GameObject类,用于绘制游戏对象的图像。y -= speed: 该语句使子弹对象持续向上移动,speed为移动速度。if (y < 0): 判断子弹是否超出屏幕上边界。this.setX(-200); this.setY(200): 将子弹对象移出屏幕,使其不可见。GameUtils.removeObjList.add(this): 将该子弹对象加入到removeObjList列表中,等待游戏循环移除。
2. 敌机生成
if (count % 20 == 0) {
enemyImg = new ImageIcon(
GameWin.class.getResource('../imgs/ep' + NumberUtils.getNumberByCondition(15) + '.png')).getImage();
System.out.println('enemyImg = ' + enemyImg);
int enemyImgWidth = enemyImg.getWidth(null);
int enemyImgHeight = enemyImg.getHeight(null);
GameUtils.enemyObjList.add(new EnemyObj(
enemyImg, NumberUtils.getNumberByCondition2(512 / enemyImgWidth) * enemyImgWidth,
0, enemyImgWidth, enemyImgHeight, 10, this));
GameUtils.gameObjList.add(GameUtils.enemyObjList.get(GameUtils.enemyObjList.size() - 1));
// 每生成一架敌机数量+1
enemyCount++;
}
代码解释:
count % 20 == 0: 表示每 20 次循环生成一架敌机。enemyImg: 敌机的图像,通过NumberUtils类中的getNumberByCondition方法随机获取 15 张敌机图片中的一张。enemyImgWidth和enemyImgHeight: 分别表示敌机图像的宽度和高度,用于计算敌机在 x 轴上的随机位置。GameUtils.enemyObjList: 存储敌机对象的列表。GameUtils.gameObjList: 存储所有游戏对象的列表,方便游戏画面的绘制。enemyCount: 用于记录生成的敌机数量。
总结:
代码实现了敌机的随机生成和移动,并通过 paintSelf 方法控制其绘制和移除。代码中合理利用了列表和工具类,方便游戏逻辑的实现和维护。
原文地址: https://www.cveoy.top/t/topic/oto9 著作权归作者所有。请勿转载和采集!