對於我在執行下面的代碼爲我的遊戲JS很難某種原因:重複無效的用戶輸入,直到它是有效的(僞)
比方說,我們要求用戶移動電路板上的一塊。他們可以做的位置是位置A,位置B或位置C.每個位置一次只能放置一件。否則它是無效的舉動。
第一個用戶決定移動位置A.第二個用戶想要移動到位置A,但當然不能,因爲它已經被佔用。在第二位用戶正確輸入有效移動之前,第一位用戶必須等到那時。
在我的代碼中,我能夠創建一個函數來檢查用戶的輸入是否有效,board.validMove(position)(boolean)。
我想象像這樣的作品,但它似乎進入一個無限循環:
Game.prototype.playerTurn = function(player){
$(".cell").click(function(){
var position = #(this).attr("id");
var isItValid = board.validMove(position) // this will return true or false if it is valid
while(isItValid === false) { // I'd thought until isItValid becomes true, it will ask the user to choose another position
game.playerTurn(player) //call again
if (isItValid === true){
break;
}
}
board.updateBoard(position, player) // updates the board
game.switchPlayer() //switch the currentPlayer
}
我缺少什麼?
是什麼'game.playerTurn()'做。 「isItValid」如何改變? – charlietfl
看起來您每次調用'playerTurn'時都會設置一個新的點擊處理程序。你確定這就是你想要做的?而且,用那個'while'循環,你永遠不會給玩家一個改變他們行動的機會。相反,您應該檢查它是否有效,如果不是,請指出移動無效並提前退出該功能。否則,執行該回合的其餘邏輯。 –