如何在Java Android中延迟基于回合制游戏的方法

Suc*_*hem 1 java multithreading android delay

在一个简单的纸牌游戏(人类与CPU)中,逻辑有效,但我想延迟计算机的转向.

我尝试过使用Thread.sleep(int milliseconds)哪种方法有效,但它会影响图像的显示顺序.我没有使用游戏循环,我只是在更改卡时动态更新ImageViews.Thread.sleep的问题是所有图像只 Thread.sleep 之后更新, Thread.sleep之前没有只显示人卡.在Thread.sleep之后显示人的卡和计算机的卡.

我像这样使用Thread.sleep:

playPlayerCard(player); // Human first
displayPile(); // Display card pile (ImageView's)

player = nextPlayer(player); // Get's next player in Player mPlayers List<Player>

// Wait for computer to 'Think'
Thread.sleep(500);

playPlayerCard(player); //Computer's turn
displayPile(); // Display card pile (ImageView's)
Run Code Online (Sandbox Code Playgroud)

我使用Thread.sleep()错了吗?有更好/更正确的方法吗?我在线搜索并尝试使用new Thread(),使用但handler.postDelayed(Runnable r, long milliseconds)CountDownTimer没有工作,因为我的变量:playPlayerCard(player);不是最终变量.

我总是遇到延迟动作和在正确时间出现的图像的问题.有什么建议?提前致谢.

Jea*_*Roy 5

难道你不能在AsyncTask中实现计算机播放逻辑并在人工转向完成后触发它吗?

我认为这样会更有意义,就这样,一旦计算机完成"播放",你就可以确定在该onPostExecute()方法中采取的行动,在你的情况下,我认为这将是处理卡片.

在计算机正在播放时阻止用户输入也是非常简单的,或者使用进度对话框(这不是我理解的游戏所需要的)或者只是通过禁用按钮:)

这是它的文档.

希望这可以帮助!