如何在Android中处理玩家转弯?

时间:2013-09-19 14:35:20

标签: java android loops sdk onclicklistener

这是我的第一款Android游戏App,目前我有点卡住了。

所以,基本上我所拥有的是一款纸牌游戏,共有6个回合。第1回合=玩家1,第2回合=玩家2,第3回合=玩家1,依此类推。

我一开始的想法是处理每个玩家在一个while循环内转,声明:WHILE(round< = 6),并在0处初始化变量。

在WHILE循环中,我有一个if(转= 1){显示播放器1s可用的动作和卡在屏幕上并设置onclicklisteners并在点击时将变量递增1},否则if(turn = 2){do the同样但对于玩家2}。

这显然不起作用,考虑到while循环不等待玩家点击一个按钮或一张卡片,我发现自己处于恶魔般的无限循环中:(。

所以,我现在一直在寻找一个解决方案,而且我似乎无法找到一些非常有启发性的东西。

如果有人能推荐某种解决方案或我可以阅读的任何信息来源以获得可能的解决方案,我将非常感激。

谢谢。

3 个答案:

答案 0 :(得分:0)

你不想用循环来做这件事。最好的办法是查看State Design Pattern

使用此模式,您将有一个“转弯”的不同状态。然后,当用户点击按钮或卡时,转弯的状态改变。然后“转向”对象让听众交易变化,就像轮到它一样。

没有看到一些实际的代码,我不能给你一个代码示例。

答案 1 :(得分:0)

你可以使用一个For循环,那个有转数,然后检查它是否是偶数,如果它甚至你可以设置一个转向1或2,如果不是另一个玩家转

public static void startGame() {
        for (int i = 0; i <= 6; i++) {
            if(i%2==0){
            System.out.print("player 1 turns"+i+"\n");
            }else{
            System.out.print("player 2 turns"+i+"\n");
            }
        }

    }

答案 2 :(得分:0)

如果您使用按钮让用户在轮到他们时完成点击,这非常简单。只需创建一个跟踪转弯次数的全局turns变量,并保留一个包含“1”或“2”的whoseTurn变量,这样您就可以知道它当前是谁了。

使用turns = 1whoseTurn = 1作为玩家1的回合开始游戏。单击“按钮”后,将turns增加1并将whoseTurn更改为2.然后,您需要将界面从播放器1更改为播放器2.再次单击“按钮”相反,所以它返回到玩家1,turn计数器现在为3.继续,直到转到6。

伪代码:

int turns = 1;
int whoseTurn = 1;

on button click {
    //Check for end of game
    if(turns >= 6) {
        //game over
    }
    else {
        turns++;
        if(whoseTurn == 1)
            whoseTurn = 2;
            player2();
        else
            whoseTurn = 1;
            player1();
    }
}

player1() {
    //code for player 1's turn
}

player2() {
    //code for player 2's turn
}

我知道你是用Java做的,但Javascript中的这个小演示可能很有用。

Demo