用c语言写一个有多种模式的剪刀石头布游戏
时间: 2024-11-27 09:15:55 浏览: 5
C语言编写的剪刀石头布游戏
在 C 语言中编写一个有多种模式的剪刀石头布游戏,你可以创建一个简单的菜单系统,让用户选择对手的电脑模式(例如随机选择、总是出石头、总是出剪刀或总是出布)。这里是一个基本的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
enum GameMode { RANDOM, ROCK, PAPER, SCISSORS };
int get_user_choice() {
int choice;
printf("请输入你的选择 (1-剪刀, 2-石头, 3-布): ");
scanf("%d", &choice);
while (choice < 1 || choice > 3) {
printf("输入错误,请重新选择: ");
scanf("%d", &choice);
}
return choice - 1; // 减一对应 enum 游戏模式的索引
}
int get_computer_choice(GameMode mode) {
switch(mode) {
case RANDOM: return rand() % 3; // 随机选择
case ROCK: return 0; // 始终出石头
case PAPER: return 1; // 始终出纸
case SCISSORS: return 2; // 始终出剪刀
}
}
void play_round(int user, int computer) {
if ((user == computer) || (user == (computer + 1) % 3)) {
printf("平局!\n");
} else if (user == (computer + 2) % 3) {
printf("你赢了!\n");
} else {
printf("电脑赢了!\n");
}
}
int main() {
srand(time(0)); // 设置随机数种子
GameMode computer_mode = RANDOM; // 默认电脑模式
int user_win = 0, game_count = 0;
while (1) {
printf("\n电脑模式: %s\n", computer_mode == RANDOM ? "随机" : "固定");
user_win += play_round(get_user_choice(), get_computer_choice(computer_mode));
game_count++;
char cont;
printf("再来一局吗? (y/n): ");
scanf(" %c", &cont);
if (cont != 'y') break;
// 更新电脑模式选项
printf("请选择电脑模式 (r-随机, s-石头, p-纸, c-剪刀): ");
scanf(" %c", &cont);
switch(cont) {
case 'r': computer_mode = RANDOM; break;
case 's': computer_mode = ROCK; break;
case 'p': computer_mode = PAPER; break;
case 'c': computer_mode = SCISSORS; break;
default: continue;
}
}
printf("\n总游戏数: %d, 你赢了: %d 次\n", game_count, user_win);
return 0;
}
```
这个程序会循环进行游戏,直到用户选择退出。每次循环中,先获取用户的输入,然后根据电脑模式计算并显示结果。注意,这里通过 `get_computer_choice` 函数实现了不同的电脑模式。
阅读全文