Я создаю карточную игру для Android в JAVA. Это игра на двоих по очереди.
Главное: когда человек бросает карту, и если у вас в руке одна и та же карта, бросайте одну и ту же карту.
Я создаю задание, расширяет AsyncTask пусть ИИ играет медленно, но я бы хотел сделать это:
взять карту -> обменять карту моей руки и положить в колоду -> бросить карту того же достоинства -> следующий игрок -> IA берет карту -> exchange, et c ...
Я делаю это для Задачи
public class ThrowTask extends AsyncTask<Void, Void, Void> {
private GameView gameView; //the wiew
private ArrayList<Throw> throw_list; //list of card to throw
public ThrowTask(GameView gameView) {
gameView.can_click.throw_card();
gameView.can_throw = true;
for (Player player : gameView.game.players) {
player.throw_list = new ArrayList<>();
}
this.gameView = gameView;
}
@Override
protected void onPreExecute() {
throw_list = new ArrayList<>();
for (int nb = 1; nb < Game.number_of_player; nb++) {
IA ia = (IA) gameView.game.players.get(nb);
ia.throw_card(gameView);
throw_list.addAll(ia.throw_list);
}
}
@Override
protected Void doInBackground(Void... voids) {
gameView.time = System.currentTimeMillis();
long first = 0;
//return card after time
for (Throw th : throw_list) {
long time = th.getTime() - first;
try {
Thread.sleep(time);
} catch (InterruptedException e) {
e.printStackTrace();
}
gameView.move_list.add(th.getMove());
th.getPlayer().setHand_idx(null, th.getIdx());
gameView.postInvalidate();
first = th.getTime();
}
try {
Thread.sleep(2000 - first);
} catch (InterruptedException e) {
e.printStackTrace();
}
gameView.can_click.no();
gameView.can_throw = false;
//the animate movement is in the postInvalidate
gameView.postInvalidate();
return null;
}
@Override
protected void onPostExecute(Void v) {
gameView.game.next_player();
gameView.Play();
}
}
Я оживляю карту, чтобы следить за движением карты, но когда я бросить карту AI возьмите карту одновременно. Как я могу дождаться конца движения, чтобы автоматически изменить ИИ для рисования. С наилучшими пожеланиями, Алексис