我正在爲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