Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取uno中的for循环以反转顺序_Java_For Loop - Fatal编程技术网

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

Java 获取uno中的for循环以反转顺序,java,for-loop,Java,For Loop,我正在尝试制作一个java版的纸牌游戏Uno。在游戏中,有一张牌会颠倒游戏顺序,因此如果玩家1玩这张牌,玩家3是下一个,然后是玩家2,依此类推。但是,我很难尝试获得: 对于(int i=0;i

我正在尝试制作一个java版的纸牌游戏Uno。在游戏中,有一张牌会颠倒游戏顺序,因此如果玩家1玩这张牌,玩家3是下一个,然后是玩家2,依此类推。但是,我很难尝试获得:

对于(int i=0;i<3;i++){
if(game.skipNext){
游戏。游戏回合((i+1)%3);
game.skipNext=false;
}否则{
游戏。玩回合(一);
}
颠倒顺序,让玩家3跟随玩家1,以此类推

我现在有这个代码: `

while(game.gameIsActive){
如果(game.gameIsClockwise){
对于(int i=0;i<3;i++){
if(game.skipNext){
游戏。游戏回合((i+1)%3);
game.skipNext=false;
}否则{
游戏。玩回合(一);
}
}
}否则{
int loopStart=(game.newlyClockwise)?game.activePlayer-1/*从前一个玩家开始*/:2;
对于(int i=loopStart;i>-1;i--){
if(game.skipNext){
游戏。游戏回合((i+1)%3);
game.skipNext=false;
}否则{
游戏。玩回合(一);
}
}
}
}
`
作为我的游戏循环,但它不起作用。如果玩家1玩反向牌,玩家2仍会接着玩。

我认为您不想使用
for
循环来实现此逻辑。您希望在玩反向牌时立即反转方向,而不是在for循环结束时

我会依次处理它,将当前播放器视为状态的一部分,而不是循环变量

尝试实现如下内容(伪代码):


现在还不清楚你想要什么或者问什么如果用户1播放然后是3,如果用户2播放然后是1,如果用户3播放然后是2,1这就是你想要的吗?非常感谢,看起来它会起作用:)。我习惯于使用for循环,但这会更有意义
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);
                    }
                }
            }
        }
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