Как я могу дождаться конца движения, чтобы авторизовать ИИ для рисования? - PullRequest
0 голосов
/ 08 апреля 2020

Я создаю карточную игру для 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 возьмите карту одновременно. Как я могу дождаться конца движения, чтобы автоматически изменить ИИ для рисования. С наилучшими пожеланиями, Алексис

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...