1

这是我的第一个 Android 游戏应用程序,我现在有点卡住了。

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

我最初的想法是在一个while循环中处理每个玩家转弯,该循环说明:WHILE(round <= 6),并将变量round初始化为0。

在那个 WHILE 循环中,我有一个 if(turn=1){ 在屏幕上显示播放器 1s 可用的动作和卡片,并设置 onclicklisteners 并在单击时将变量轮数增加 1},否则 if (turn=2){ 做同样的事情,但对于播放器 2}。

这显然是行不通的,考虑到while循环不会等待玩家点击按钮或卡片,我发现自己陷入了一个恶魔般的无限循环:(。

因此,我这几天一直在寻找解决方案,但似乎找不到非常有启发性的东西。

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

谢谢你。

4

3 回答 3

0

您不想通过循环来执行此操作。您最好的选择是研究状态设计模式

使用这种模式,您将有不同的“转弯”状态。然后当用户点击一个按钮或一张卡片时,回合的状态就会改变。然后“转”对象有侦听器来处理更改,比如轮到谁了。

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

于 2013-09-19T14:43:18.250 回答
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");
            }
        }

    }
于 2013-09-19T14:44:07.600 回答
0

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

轮到玩家 1 开始游戏,使用turns = 1whoseTurn = 1。单击“按钮”后,将您的值增加turns1 并更改whoseTurn为 2。然后您需要将界面从播放器 1 更改为播放器 2。再次单击“按钮”后,执行相反的操作,使其返回播放器 1计数器现在为turn3。继续此操作直到轮数达到 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 的小演示可能很有用。

演示

于 2013-09-19T15:17:12.967 回答