我正在尝试使用java制作太空射击游戏,但它无法正常工作。我目前正致力于产生敌人。为了保持所有敌人的位置,我使用了一个名为ArrayList
的{{1}}。 allEnemies
填充了ArrayList
个对象。我在游戏循环中调用Point
来更新游戏。
最初,我让敌人的y位置增加1,但这太快了,所以我把它改为0.2以试图减速。一旦我做到0.2,精灵在顶部产生但没有向下移动。我适用于任何高于1的值,包括小数,但不是下面的任何值。这是我的代码:
Enemy.java
updateEnemies()
Game.java
package main;
import java.awt.Point;
import java.util.ArrayList;
public class Enemy {
static ArrayList<Point> allEnemies = new ArrayList<Point>();
public static ArrayList<Point> createEnemies(int round) {
for (int i = 0; i < round; i++) {
Point newEnemyLocation = new Point((int) (Math.random()*Game.WIDTH - 64), 0);
allEnemies.add(newEnemyLocation);
}
return allEnemies;
}
public static ArrayList<Point> updateEnemies() {
if (allEnemies.size() != 0) {
for (int i = 0; i < allEnemies.size(); i++) {
Point enemyLocation = allEnemies.get(i);
if (enemyLocation.y <= Game.HEIGHT) {
allEnemies.get(i).y += 0.2;
} else {
allEnemies.remove(i);
}
}
}
return allEnemies;
}
}
答案 0 :(得分:2)
你好,因为点类包含2个整数x和y,你试图将0.2添加到一个只能存储没有小数的值的整数,所以你有2个选项1是将点更改为Point2D(保持双精度数)并且double可以保存带小数的数字)或者你可以用ax和y float / double创建一个敌人类,但在这种情况下我会选择1,因为这是一个小游戏,祝你好运!
编辑: 我错了关于point2d,只是看到它是一个抽象类,所以这样做
公共阶级敌人{
public double x,y;
公敌(双x,双y){
this.x = x;
this.y = y;
}
}
并将其用作你的arraylist中的对象