C语言实现的猜拳游戏代码分享

yizhihongxing

C语言实现的猜拳游戏代码分享

1. 概述

本文将介绍C语言实现的猜拳游戏的代码分享,该游戏采用了简单的命令行交互界面,玩家与计算机进行猜拳游戏。

2. 猜拳游戏规则

猜拳游戏的规则非常简单,玩家和计算机各出一招,谁胜利就由出招的手势确定。具体规则如下:

  • 石头胜剪刀
  • 剪刀胜布
  • 布胜石头

3. 代码实现

下面是C语言实现的猜拳游戏的代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    int player_choice, computer_choice;
    int player_win_count = 0, computer_win_count = 0;
    int round_count = 0;

    srand((unsigned)time(NULL));

    while (1) {
        printf("请输入出拳的数字(1 - 石头,2 - 剪刀,3 - 布): \n");
        scanf("%d", &player_choice);
        if (player_choice == -1) {
            break;
        }

        computer_choice = rand() % 3 + 1;

        if (player_choice == computer_choice) {
            printf("平局!\n");
        } else if (player_choice == 1 && computer_choice == 2 ||
            player_choice == 2 && computer_choice == 3 ||
            player_choice == 3 && computer_choice == 1) {
            printf("你赢了!\n");
            player_win_count++;
        } else {
            printf("计算机赢了!\n");
            computer_win_count++;
        }

        round_count++;
    }

    printf("游戏结束!\n");
    printf("你赢了%d局,计算机赢了%d局,平局%d局\n", player_win_count, computer_win_count, round_count - player_win_count - computer_win_count);

    return 0;
}

代码实现过程比较简单,主要分为三个部分:

3.1 设置变量和随机数种子

定义了一些变量,包括玩家出的招,电脑出的招,玩家胜利的场数,电脑胜利的场数和比赛的轮数。同时,通过使用 srand 函数生成一个随机数种子,用于生成电脑出招的随机数字。

int player_choice, computer_choice; // 玩家和计算机选择的招
int player_win_count = 0, computer_win_count = 0; // 玩家胜利场数和计算机胜利场数
int round_count = 0; // 比赛的轮数

srand((unsigned)time(NULL)); // 初始化随机数种子

3.2 进行猜拳游戏

通过一个 while 循环来进行猜拳游戏,每进行一轮游戏,就会跳出询问玩家出招,同时生成电脑出招的随机数。接着会计算比赛结果,并累计场数。

while (1) {
    printf("请输入出拳的数字(1 - 石头,2 - 剪刀,3 - 布): \n");
    scanf("%d", &player_choice);
    if (player_choice == -1) {
        break;
    }

    computer_choice = rand() % 3 + 1;

    if (player_choice == computer_choice) {
        printf("平局!\n");
    } else if (player_choice == 1 && computer_choice == 2 ||
        player_choice == 2 && computer_choice == 3 ||
        player_choice == 3 && computer_choice == 1) {
        printf("你赢了!\n");
        player_win_count++;
    } else {
        printf("计算机赢了!\n");
        computer_win_count++;
    }

    round_count++;
}

在这个例子中,当玩家输入 -1 时,游戏循环会被打破,整个游戏结束,并输出比赛结果。

3.3 输出比赛结果

当游戏结束时,通过 printf 函数输出比赛结果。

printf("游戏结束!\n");
printf("你赢了%d局,计算机赢了%d局,平局%d局\n", player_win_count, computer_win_count, round_count - player_win_count - computer_win_count);

4. 示例说明

下面提供两个对这个猜拳游戏代码的示例说明。

4.1 示例1

当玩家依次输入 123121 时,可得到如下的输出结果:

请输入出拳的数字(1 - 石头,2 - 剪刀,3 - 布):
1
你赢了!
请输入出拳的数字(1 - 石头,2 - 剪刀,3 - 布):
2
你赢了!
请输入出拳的数字(1 - 石头,2 - 剪刀,3 - 布):
3
计算机赢了!
请输入出拳的数字(1 - 石头,2 - 剪刀,3 - 布):
1
你赢了!
请输入出拳的数字(1 - 石头,2 - 剪刀,3 - 布):
2
你赢了!
请输入出拳的数字(1 - 石头,2 - 剪刀,3 - 布):
1
你赢了!
请输入出拳的数字(1 - 石头,2 - 剪刀,3 - 布):
-1
游戏结束!
你赢了4局,计算机赢了1局,平局1局

4.2 示例2

当玩家输入 -1 时,游戏会立即结束

请输入出拳的数字(1 - 石头,2 - 剪刀,3 - 布):
-1
游戏结束!
你赢了0局,计算机赢了0局,平局0局

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现的猜拳游戏代码分享 - Python技术站

(0)
上一篇 2023年5月24日
下一篇 2023年5月24日

相关文章

  • golang生成JSON以及解析JSON

    生成JSON: 在golang中生成JSON非常简单,可以使用标准库中的encoding/json包来实现。下面是一个示例代码: package main import ( "encoding/json" "fmt" ) type Person struct { Name string `json:"name…

    C 2023年5月23日
    00
  • spring循环注入异常问题的解决方案

    以下是关于“Spring循环注入异常问题的解决方案”的完整攻略,分为三个部分: 问题分析 在使用Spring框架进行依赖注入的时候,很容易遇到循环依赖的问题,比如A类依赖于B类,而B类又依赖于A类,这种情况下就会出现循环依赖的问题。Spring框架默认是不支持循环依赖的,在出现循环依赖的情况下,Spring会抛出BeanCurrentlyInCreation…

    C 2023年5月23日
    00
  • python中黄金分割法实现方法

    Python中黄金分割法实现方法 在Python中,黄金分割法(Golden section search)是解决区间最小值问题的一种方法,也称为黄金分割搜索法。该算法的思想是通过缩减区间,逐步逼近极小值。下面将详细讲解该算法的实现方法及其在两个具体案例中的应用。 黄金分割法的实现方法 黄金分割法要求在分析过程中需要给出一个区间 [a, b],在该区间上进行…

    C 2023年5月22日
    00
  • VSCode下.json文件的编写之(1) linux/g++ (2).json中参数与预定义变量的意义解释

    下面是关于“VSCode下.json文件的编写之(1) linux/g++ (2).json中参数与预定义变量的意义解释”的完整攻略。 1. 简介 首先,我们应该知道,.json文件是一种轻量级的数据交换格式,可用于跨语言和跨平台传输数据,并且在VSCode中可以用来配置我们的编译环境。 在这个话题中,我们会讲解两个方面的内容:- (1) linux/g++…

    C 2023年5月23日
    00
  • C++简易通讯录系统实现流程详解

    下面是C++简易通讯录系统实现流程的详细攻略: 1. 设计思路 本通讯录系统主要由以下几个部分组成: 联系人信息类ContactPerson: 包含联系人姓名、性别、电话号码、住址等属性。 实现获取、设置各属性值的方法。 通讯录类Contacts: 包含多个联系人对象,可以进行联系人的添加、删除、修改、遍历等操作。 通过文件操作实现通讯录的存储和读取。 主函…

    C 2023年5月30日
    00
  • Win10电脑错误代码0xc0000f怎么办?电脑出现0Xc0000f代码修复方法

    Win10电脑错误代码0xc0000f怎么办? 问题描述 在开机时出现错误代码0xc0000f,导致系统无法正常启动。该问题可能是由于电脑无法读取启动文件引起的。 修复方法 方法1:使用Windows启动修复工具 准备一个可引导的U盘或DVD光盘,插入电脑中并重启电脑。 在Windows启动时按F2、F8或F12等键进入电脑的启动设置,并选择从U盘或DVD光…

    C 2023年5月23日
    00
  • C语言实现维吉尼亚密码的示例代码

    本文将介绍如何使用C语言实现维吉尼亚密码,并提供示例代码和对代码的详细解释。 什么是维吉尼亚密码? 维吉尼亚密码是一种多表替换密码,具有很高的安全性。它通过多次替换明文中的每个字符来生成密文,替换规则基于密钥和一组密文表,因此需要人工进行密钥分配和密文表的生成。由于密钥和密文表不会在通信中传输,因此维吉尼亚密码非常安全。 维吉尼亚密码的实现方式 维吉尼亚密码…

    C 2023年5月24日
    00
  • C++编程语言实现单链表详情

    C++编程语言实现单链表详情 本文将详细讲解如何使用C++语言实现单链表。单链表是一种非常常见的数据结构,它由多个节点组成,在每个节点中存储一个数据元素和指向下一个节点的指针。本文将分步骤介绍如何设计和实现单链表。 1、单链表节点的定义 在C++中,我们可以定义一个节点类来表示单链表中的每个节点。每个节点中包含两个成员变量,一个是存储数据元素的变量,另一个是…

    C 2023年5月24日
    00
合作推广
合作推广
分享本页
返回顶部