【问题标题】:How can I handle player turns in Android?如何在 Android 中处理玩家回合?
【发布时间】:2013-09-19 14:35:20
【问题描述】:

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

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

我最初的想法是在一个while循环中处理每个玩家转弯,该循环声明:WHILE (round

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

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

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

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

谢谢。

【问题讨论】:

    标签: java android loops sdk onclicklistener


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      你可以使用一个 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");
                  }
              }
      
          }
      

      【讨论】:

        【解决方案3】:

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

        轮到玩家 1 开始游戏,使用 turns = 1whoseTurn = 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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-07-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多