问题描述
石头剪刀布是大家小时候常玩的游戏。请设计程序模拟这一游戏。(使用C语言程序编写)
要求如下
(1)在游戏前能够输入几局几胜的信息。游戏双方可输入自己的出拳信息,出拳信息对对
方应当不可见。
(2)当双方均输入完毕后,系统进行判断,本局比赛谁能够获胜。
(3)在双方完成指定局数后,游戏结束。要求能够输出当前比赛中的全部对局信息。
源码如下
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_GAMES 100
#define MAX_INPUT_LENGTH 10
// 函数声明
void playGame(int numberOfGames, int winningScore);
int main() {
int numberOfGames, winningScore;
// 输入局数和胜利局数
printf("请输入要进行的局数: ");
scanf("%d", &numberOfGames);
printf("请输入获得胜利所需的局数: ");
scanf("%d", &winningScore);
// 开始游戏
playGame(numberOfGames, winningScore);
return 0;
}
void playGame(int numberOfGames, int winningScore) {
char player1Moves[MAX_GAMES][MAX_INPUT_LENGTH];
char player2Moves[MAX_GAMES][MAX_INPUT_LENGTH];
int player1Wins = 0, player2Wins = 0;
for (int i = 0; i < numberOfGames; i++) {
printf("\n第 %d 局:\n", i + 1);
// 输入玩家1的出拳信息
printf("玩家1,请输入出拳 (rock/paper/scissors): ");
scanf("%s", player1Moves[i]);
// 输入玩家2的出拳信息
printf("玩家2,请输入出拳 (rock/paper/scissors): ");
scanf("%s", player2Moves[i]);
// 判断胜负
if (strcmp(player1Moves[i], player2Moves[i]) == 0) {
printf("第 %d 局平局!\n", i + 1);
} else if ((strcmp(player1Moves[i], "rock") == 0 && strcmp(player2Moves[i], "scissors") == 0) ||
(strcmp(player1Moves[i], "scissors") == 0 && strcmp(player2Moves[i], "paper") == 0) ||
(strcmp(player1Moves[i], "paper") == 0 && strcmp(player2Moves[i], "rock") == 0)) {
printf("第 %d 局 玩家1 胜利!\n", i + 1);
player1Wins++;
} else {
printf("第 %d 局 玩家2 胜利!\n", i + 1);
player2Wins++;
}
// 检查是否有玩家达到胜利局数
if (player1Wins >= winningScore) {
printf("玩家1 已经获胜!\n");
break;
} else if (player2Wins >= winningScore) {
printf("玩家2 已经获胜!\n");
break;
}
}
// 输出所有对局信息
printf("\n游戏结果:\n");
for (int i = 0; i < numberOfGames; i++) {
printf("第 %d 局: 玩家1 出拳: %s, 玩家2 出拳: %s\n",
i + 1, player1Moves[i], player2Moves[i]);
}
printf("最终成绩: 玩家1 胜利: %d, 玩家2 胜利: %d\n", player1Wins, player2Wins);
}
程序说明
- 输入局数和胜利局数: 程序首先要求用户输入要玩多少局(
numberOfGames
)和赢得比赛所需的局数(winningScore
)。 - 出拳信息: 在每局中,两个玩家分别输入出拳(可以是
rock
、paper
或scissors
)。他们的出拳信息在输入过程中互不影响。 - 判断胜负: 根据出拳规则判断胜负并记录每位玩家的胜利次数。
- 检查胜利: 在每局结束后,检查是否有玩家达到了胜利局数,如果达到了则提前退出游戏。
- 输出结果: 游戏结束时,输出每局的对局信息和最终的胜利次数。
使用方法
- 编译并运行该程序。
- 按照提示输入局数和胜利条件,每个玩家依次输入自己的出拳信息。
- 最后,程序将输出每局的详细情况以及最终的胜利记录。
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END