在uno中获取for循环以反转顺序

时间:2014-09-12 03:00:26

标签: java for-loop

我试图制作纸牌游戏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仍然是下一个。

1 个答案:

答案 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