使用C语言设计一个游戏石头剪刀布游戏程序

问题描述

石头剪刀布是大家小时候常玩的游戏。请设计程序模拟这一游戏。(使用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);
}

程序说明

  1. 输入局数和胜利局数: 程序首先要求用户输入要玩多少局(numberOfGames)和赢得比赛所需的局数(winningScore)。
  2. 出拳信息: 在每局中,两个玩家分别输入出拳(可以是 rockpaperscissors)。他们的出拳信息在输入过程中互不影响。
  3. 判断胜负: 根据出拳规则判断胜负并记录每位玩家的胜利次数。
  4. 检查胜利: 在每局结束后,检查是否有玩家达到了胜利局数,如果达到了则提前退出游戏。
  5. 输出结果: 游戏结束时,输出每局的对局信息和最终的胜利次数。

使用方法

  • 编译并运行该程序。
  • 按照提示输入局数和胜利条件,每个玩家依次输入自己的出拳信息。
  • 最后,程序将输出每局的详细情况以及最终的胜利记录。
© 版权声明
THE END
喜欢就支持一下吧
点赞10赞赏 分享