我试图制作纸牌游戏Uno的java版本。在游戏中有一张牌可以反转比赛的顺序,所以如果玩家1玩牌,玩家3玩下一张,玩家2则等等。但是,我在努力获得:
for(int i = 0; i < 3; i++){
if(game.skipNext){
game.playTurn((i + 1) % 3);
game.skipNext = false;
} else {
game.playTurn(i);
}
颠倒顺序,以便玩家3跟随玩家1等。
我有这个当前的代码: `
while(game.gameIsActive){
if(game.gameIsClockwise){
for(int i = 0; i < 3; i++){
if(game.skipNext){
game.playTurn((i + 1) % 3);
game.skipNext = false;
} else {
game.playTurn(i);
}
}
} else {
int loopStart = (game.newlyClockwise) ? game.activePlayer - 1/* Starts with previous player*/ : 2;
for(int i = loopStart; i > -1;i--) {
if(game.skipNext){
game.playTurn((i + 1) % 3);
game.skipNext = false;
} else {
game.playTurn(i);
}
}
}
}
` 作为我的游戏循环,但它不起作用。如果玩家1反向播放,则播放器2仍然是下一个。
答案 0 :(得分:1)
我不认为您想使用for
循环来实现此逻辑。您希望在播放反向卡时立即反向,而不是在for循环结束时反向。
我会轮流处理它,将当前玩家视为状态的一部分,而不是循环变量。
尝试实现类似的东西(伪代码):
subroutine nextPlayer:
if direction == 1:
player = (player + 1) % playerCount
else:
player = (player - 1) % playerCount
main loop:
while game not over:
play turn (player)
if played skip:
nextPlayer
nextPlayer
else if played reverse:
direction = direction * -1
nextPlayer
else
nextPlayer
end if
end while