Я пытаюсь создать игру в libGDX. У меня возникла проблема с попыткой заставить ИИ выполнять задачи по порядку. Первоначально я использовал таймеры libGDX для планирования задач, но это не очень подходит для того, что я пытаюсь выполнить.Задачи по заказу libGDX
Игра представляет собой стратегию, основанную на поворотах, поэтому порядок, в котором выполняются задачи, важен.
Вот как я сейчас делаю это
float teamSizeDelay = team.getUnits().size() * gameSpeed;
float eventDelay = gameSpeed * 2;
// Move Units
if (team.getUnits().size() > 0 && enemyTeam.getHqHealth() > 0) {
unitIndex = 0;
for (int i = 0; i < team.getUnits().size(); i++) {
Timer.schedule(new Timer.Task() {
@Override
public void run() {
selectUnit(unitIndex);
unitIndex++;
}
}, i * gameSpeed);
}
}
int availableFactories = getAvailableFactories();
// Spawn Units
Timer.schedule(new Timer.Task() {
@Override
public void run() {
if (enemyTeam.getHqHealth() > 0)
spawnUnits();
}
}, teamSizeDelay + eventDelay * 2);
float spawnDelay = availableFactories * gameSpeed;
// End Turn
if (enemyTeam.getHqHealth() > 0) {
Timer.schedule(new Timer.Task() {
@Override
public void run() {
endTurn();
}
}, (teamSizeDelay) + (eventDelay * 3) + (spawnDelay));
}
Как вы можете видеть, используя таймеры могут быть грязными, особенно с таймингами
Так что, если кто-нибудь знает, что лучший способ сделать это было бы оценил
Если игра основана на поворотах, почему у вас есть связанный с временем код (например, 'i * gameSpeed' и' teamSizeDelay + eventDelay * 2')? Почему бы не сделать эти действия мгновенно? – John
Потому что я хочу, чтобы игрок мог видеть, что движет компьютером, вместо того, чтобы только что произошло в одно мгновение –