我正在为2个玩家编写一个简单的游戏,他们必须在彼此之后轮流 - 选择一些物体从棋盘上移除(移除实际上是将一个ImageView
设置为不可见),然后一个玩家按下“End turn”最终将转身传递给另一名球员。如何在游戏中转向AI?
该板是GridLayout
与ImageView
S,所有ImageView
■找onClickListener()
,以及他们在比赛一开始所有可见。玩家点击几个ImageView
(在这些时刻,他们的ID被放置在一个数组中),然后点击“结束转弯”,分析他的移动阵列,将相应的ImageView
设置为不可见,之后转弯被传递给另一个玩家(阵列被清理并且当前玩家的号码改变)。
板上的所有物体都附有onClickListeners()
。点击后,他们的ID被放置在一个数组中,并且一个变量包含当前玩家的号码。在“End turn”按钮上连接的onClickListener()
上的方法被切换为onClick()
方法,它只是清除ID的数组并更新当前播放器的编号。
它适用于2人玩的情况(在同一设备上)。但是如果一个人玩电脑,AI会计算并采用相同的onClick()
方法。由于用户界面仅在处理onClick()
后才更新,因此(ImageView
被设置为不可见等),AI的移动不会在屏幕上绘制,并且播放器看起来好像在移动之后(点击对象),板子随着计算机的移动(删除对象)所做的更改立即重新绘制。
所以,我需要以不同的方式通过轮到AI,而不是在“End turn”按钮的onClick()
,以便能够绘制AI的选择并隐藏选定的视图 - 在玩家可以进行下一步之前。 但如何做到这一点,在哪里?为“结束转弯”按钮
onClick()
方法:
public void onClick(View v) {
hideSelectedImageViews();
if (currentGame.isWinningState()) {
//you won
} else {
changePlayer();
if (playWithAI) {
calculateAImove(currentGame);
showSelectedImageViewsByAI(); //doesn't work even with .invalidate()
hideSelectedImageViews();
if (currentGame.isWinningState()) {
//AI won
}
changePlayer();
}
}
}
在showSelectedImageViewsByAI()
,特定图像资源被设定为ImageView
S,使得它们看起来不一样(“选择”)。
发布您的代码/流程/图表/绘图会很有帮助。 – 2014-10-08 21:21:32
请发布您的代码。尝试 。invalidate()“board” – 2014-10-08 21:38:21