我是 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
数组而不是 player1
和 player2
变量来改进此代码。 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/