很抱歉,如果这是一个非常封闭的问题,对其他人不会有用,但我只是被这个错误所困扰,而且我已经能够解决它几周了!
我正在研究基于波浪的生存游戏,目前我正在开发一种产卵机制。 我写的代码完美适用于一个波,但不知何故不会重新开始进一步的波。 我写了下面的代码:
public void run() {
while (ingame) {
if (enemyList.isEmpty()) {
stopSpawn = false;
try {
Thread.sleep(500);
spawnNewEnemy();
} catch (InterruptedException ex) {
System.out.println("Interrupted");
}
} else {
if (!enemyList.isEmpty() && !stopSpawn) {
// getEnemyAmount returns the amount of enemies that should be spawned this wave
for (int enemiesSpawned = 0; enemiesSpawned < getEnemyAmount(); enemiesSpawned++) {
try {
Thread.sleep(500);
} catch (InterruptedException ex) {
}
System.out.println(currentWave);
spawnNewEnemy();
}
stopSpawn = true;
}
}
}
}
这是spawnNewEnemy方法
public void spawnNewEnemy() {
Random spawn = new Random();
int spawnX = spawn.nextInt(500);
int spawnXTest = b.bX - spawnX;
if (spawnXTest < 20) {
spawnX = spawnX + 20;
} else {
}
int spawnY = spawn.nextInt(500);
int spawnYTest = b.bX - spawnY;
if (spawnYTest < 20) {
spawnY = spawnY + 20;
} else {
}
spawnY = spawnY + 20;
spawnX = spawnX + 20;
enemyList.add(new Enemy(spawnX, spawnY));
}
答案 0 :(得分:1)
我猜你的循环问题是stopSpawn
值。
在第一波之后将其设置为true
,并且在开始下一波之前可能不会设置为“false”。
答案 1 :(得分:1)
我可以在您的代码中阅读以下内容:
stopSpawn
设置为false并生成敌人。stopSpawn
设置为true,因此您的else语句不再被触发。逻辑似乎没问题,所以我想通过spawnNewEnemy()
产生敌人的方式是错误的,或者你从enemyList
移除敌人的方式是错误的。我没有看到那些代码,因此我可以在这个答案中尽可能地去。