作者:yinowl
2005年1月
1.1版注:完善了游戲輸贏的判定,由于考慮的比較匆忙,沒有非常仔細地考量算法的優劣程度,目的主要對游戲的輸贏進行一種實現,嵌入到程序中,給大家做為一個參考,由于其他內容和1.0版完全相同,我就把輸贏實現這一節提到最前面,后面再補上所有的內容。
游戲輸贏
最后要說的是判定游戲的輸贏。我的思路是,每次在玩家著棋(按下5)時,判定棋局的輸贏,然后用一個 Alert 顯示哪一方贏了以及當前的比分,返回后開始新的一局。判定的邏輯是,在當前所下的棋子的0/180度、90/270度、45/225度、135/315度四個方向上分別往兩頭按照由近至遠的順序判定各5個棋子是否是當前下棋方的棋子,假如是則累加到一個變量上,假如在到達5之前出現“否”的情況,則中止在這一方向或這一角度的判定,變量歸1(應為當前棋子肯定是當前下棋方下完的棋子)并進行下一個方向或角度。在判定是否是當前方時,用當前 isPlayer1 變量和棋子對象的 isPlayer1 變量進行比交。源代碼如下:
int player1win,player2win; PRotected synchronized void keyPressed(int keyCode) { ... else if (action == Canvas.FIRE) { if(chesses[selectedY][selectedX]==null){ chesses[selectedY][selectedX]=new Chesses(this.isPlayer1); if(checkWin()){ String winner; if(isPlayer1){ winner="白方勝利"; player1win++; } else{ winner="紅方勝利"; player2win++; } try{ Thread.sleep(3000);
新聞熱點
疑難解答