objective-c - 如何改进我的代码(C/Objective C)乒乓球游戏

标签 objective-c c

我是 C 和 Objective C 的新手。因此我正在做一些小而简单的任务。 在这个例子中,我正在模拟一场乒乓球比赛。我的代码正在执行它应该执行的所有操作,但我对其结构不满意。

我的代码应该涵盖的内容:

  • 随机选出获胜者/失败者
  • 击中 21 个获胜者将获得荣誉

但我对这样的观点不满意:如果双方都数到了 20,则比赛应该继续下去,直到一方领先 2 分。 我很确定有更好的方法来完成这个任务。

谢谢

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {

    int player1 = 0;
    int player2 = 0;



    while (player1 < 21 && player2 < 21){

            if(player1 == 20 && player2 == 20){
                do{
                    int pick = arc4random()%2;

                    if (pick == 0) {
                        player1 = player1 + 1;
                    } else if (pick == 1){
                        player2 = player2 + 1;
                    }
                }while (player1 == player2 - 2 || player2 == player1 - 2);
            }

        int pick = arc4random()%2;

        if (pick == 0) {
            player1 = player1 + 1;
        } else if (pick == 1){
            player2 = player2 + 1;
        }

    }

    if (player1 > player2){
       NSLog(@"Player 1 has %i points and Player 2 %i", player1, player2);
    } else if (player2 > player1){
        NSLog(@"Player 2 has %i points and Player1 %i",player2, player1);
    }


  return 0;
}

最佳答案

我将通过使用 players 数组而不是 player1player2 变量来改进此代码。 players 将有两个项目,第一个项目的索引为 0 (player1),第二个项目的索引为 1。

这样你就可以改变

                if (pick == 0) {
                    player1 = player1 + 1;
                } else if (pick == 1){
                    player2 = player2 + 1;
                }

players[pick]++;

另一个问题是,即使分数是20-20的情况下,你仍然在随机化,这是不必要的。将随机化代码移至返回 0 或 1 的函数中会对您有很大帮助。

关于objective-c - 如何改进我的代码(C/Objective C)乒乓球游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51692579/

相关文章:

c - 使用递归的简单移动平均线

c - 内存泄漏示例的问题

c - 如何将函数地址插入哈希表?

c - 从一个 header 到另一个 header 中的结构的结构

ios - 在 UIView 动画 block 中调用 layoutIfNeeded 会导致 subview 更早移动

C 将文件内容从 EOF 复制到 SOF

ios - 我可以返回两个数组吗?

Objective-C 选项卡设置和空格样式

ios - Xcode 6 Beta 3/4/5/6,无法使用 Obj-C 连接 IBOutlet 或 IBAction。另外,不能选择 "Module"

ios - 使用 Swift iOS 使用 RS256 或 RS512 验证 JWT token