C语言 编写“剪刀石头布”小游戏[通俗易懂]

C语言 编写“剪刀石头布”小游戏[通俗易懂]目录前言一、游戏原理二、C语言代码1.引入函数2.初始页面显示3.游戏过程及结果总结前言大家好~我是一名C语言初学者,学了C语言基础后,我制作了一个小游戏:剪刀石头布。希望大家能对我的思路和代码提出小Tips(eg.更简便的方法与程序)我也会虚心接受大家的建议~一、游戏原理“剪刀石头布”这个游戏,想必大家都很熟悉了。两个人在玩游戏时,事先都不知道对方将要出什么,这中间存在着一种随机性。而这种随机性相当于C语言里stdlib.h库中rand()函数,rand()函数用来产生随机数,因为r..

大家好,又见面了,我是你们的朋友全栈君。


前言

大家好~
我是一名C语言初学者,学了C语言基础后,我制作了一个小游戏:剪刀石头布。
希望大家能对我的思路和代码提出小Tips(eg.更简便的方法与程序)
我也会虚心接受大家的建议~


一、游戏原理

“剪刀石头布”这个游戏,想必大家都很熟悉了。
两个人在玩游戏时,事先都不知道对方将要出什么,这中间存在着一种随机性。
而这种随机性相当于C语言里stdlib.h库中rand()函数,rand()函数用来产生随机数,因为rand是根据提供给srand()的种子值返回一个随机数,所以要使每次随机的结果不一样,需要在srand()函数里引用time()函数,因为每一次运行程序的时间是不同的,所以seed会不同,运行出来的结果也会不同。

补充:
rand()的内部实现是用线性同余法实现的,是伪随机数,由于周期较长,因此在一定范围内可以看成是随机的。
rand函数需要有srand()函数用来设置rand()产生随机数时的随机数种子。
参数seed是整数,通常可以利用time(0)或geypid(0)的返回值作为seed。


首先将游戏者(gamer)的选项输入,并用switch分三种情况,将输入的A、B、C(或a、b、c)转换为整数(Gamer),然后用rand函数在1-3中随机产生一个整数来代表计算机(computer)的选项,再将两个整数相加,最后用switch来分类讨论,输出结果。
(因水平有限,我目前只能想到用这种方法来判断胜负,所以要避免两种不同情况相加出的结果相同)

二、C语言代码

1.引入函数

代码如下:

#include "stdio.h"
#include "stdlib.h"
#include "time.h"

2.初始页面显示

代码如下:

int main()
{ 
   
    char Gamer=0;
    int computer,gamer;
    int result;
    while (1) 
    { 
   
        printf("这个小游戏是——剪刀石头布,\n你要出:\n");
        printf("A:剪刀\nB:石头\nC:布\n");
        scanf_s("%c", &Gamer);
        switch (Gamer) 
        { 
   
        case 65 | 97: //A a
            gamer = 4; 
            break;
        case 66 | 98: //B b
            gamer = 7; 
            break;
        case 67 | 99: //C c
            gamer = 10; 
            break;
      
        default:
            printf("你的选择为%c\n选择错误,退出...\n", Gamer);
            system("pause");
            return 0;
            break;
        }

3.游戏过程及结果

        srand((unsigned)time(0));//每一次的seed都不同
        computer = rand() % 3+1;
        result = gamer + computer;
        printf("电脑出了:");
        switch (computer)
        { 
   
        case 3:printf("剪刀\n"); break;
        case 1:printf("石头\n"); break;
        case 2:printf("布\n"); break;
        }
        printf("你出了:");
        switch (gamer)
        { 
   
        case 4:printf("剪刀\n"); break;
        case 7:printf("石头\n"); break;
        case 10:printf("布\n"); break;
        }
        if (result == 6 || result == 10 || result == 11)
            printf("你赢了!");
        else if (result == 5 || result == 9 || result == 13) 
            printf("电脑赢了!");
        else 
            printf("平手");
        system("pause>nul&&cls"); //清屏
    }
    return 0;
}

总结

以上就是有关于游戏的思路和代码,编写程序前,我查阅了一些资料,并且询问了他人,在这个过程中,我有学到许多新知识.
但是因为水平有限,程序代码还是很繁琐,方法也不是最好的,希望能通过进一步的学习,开拓自己的思路,用更快捷的方法编写程序。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163847.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • kmo检验和bartlett球形检验_轻松搞懂:球形压力容器如何焊接安装?[通俗易懂]

    kmo检验和bartlett球形检验_轻松搞懂:球形压力容器如何焊接安装?[通俗易懂]球形压力容器简称“球罐”,与其他形式的容器相比,其重量与体积之比最小,受力均匀,可以承受较高的压力,是工业中普遍应用的大容积定容储气罐。在冶金工厂中,球罐常用于贮存氧气、氮气及保护气体等,以供氧气炼钢、富氧鼓风、轧钢热处理炉及煤气置换等生产所需用气。球罐由球体壳板(分赤道带、下温带、下寒带、上温带、上寒带和极顶板)、支柱、操作平台及管件等组成。球罐按其结构型式分为桔瓣式和混合式两种。根据…

    2022年6月29日
    29
  • pandas读取excel某一行_python读取csv数据指定行列

    pandas读取excel某一行_python读取csv数据指定行列pandas中查找excel或csv表中指定信息行的数据使用loc函数来查找。话不多说,直接演示:有以下名为try.xlsx表:例如查找A部门所有成员的的姓名和工资或者工资低于3000的人:代码如下:importpandasaspd#导入pandas库excel_file=’./try.xlsx’#导入文件data=pd.read_excel(excel_file)#读入数据print(data.loc[data[‘部

    2022年10月2日
    3
  • Hmily 临时笔记「建议收藏」

    Hmily 临时笔记「建议收藏」概述Hmily是一款高性能分布式事务tcc开源框架。基于java语言来开发(JDK1.8),支持Dubbo、SpringCloud、Motan等RPC框架进行分布式事务。功能高可靠性:支持分布式场景下,事务异常回滚,超时异常恢复,防止事务悬挂易用性:提供零侵入性式的Spring-Boot,Spring-Name…

    2022年5月21日
    50
  • 动态规划经典题目_leetcode合并两个有序数组

    动态规划经典题目_leetcode合并两个有序数组一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例 1:输入:m = 3, n = 7输出:28示例 2:输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条路径可以到达右下角。向右 -> 向下 -> 向下向下 -> 向下 -> 向右向下 -> 向右 -&gt

    2022年8月8日
    5
  • sftp指定端口登录命令_sftp端口号怎么查

    sftp指定端口登录命令_sftp端口号怎么查  sftp-oPort=5022root@10.159.0.21  使用-o选项来指定端口号。  -oPort=远程端口号-oPort=5022不能放后面

    2025年11月15日
    3
  • 主键、唯一键与唯一索引的区别

    一般,我们看到术语“索引”和“键”交换使用,但实际上这两个是不同的。索引是存储在数据库中的一个物理结构,键纯粹是一个逻辑概念。键代表创建来实施业务规则的完整性约束。索引和键的混淆通常是由于数据库使用索

    2021年12月24日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号