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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 2021pycharm永久激活码[免费获取]

    (2021pycharm永久激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~MLZPB5EL5Q-eyJsaWNlb…

    2022年3月20日
    90
  • win10封装系统(sc封装)

    大家都知道Win10系统是微软最新发布的具有划时代意义的新一代操作系统,担负着振兴微软的大任,凭借卓越的性能和流畅的用户体验赢得了广大用户的认可和信任,市场占有率那是芝麻开花节节高啊,不过作为装机维修的技术员同行们肯定想知道如何封装Win10操作系统,从而为我们的日常装机工作带来便利,不过据爱学府软件园了解到目前网络上几乎找不到比较详细好用且具备学习价值的Win10系统封装教程,针对这一问…

    2022年4月13日
    83
  • 组合数的各种性质和定理

    组合数的各种性质和定理从m个物品里选出n个的方案数,记作CnmCmnC_m^n,即为组合数组合数有很多很多的性质和定理。。。注意由于本人沉迷玩梗无法自拔,如果看见您看不懂的梗请随意跳过。组合数通项公式Cnm=m!n!∗(m−n)!Cmn=m!n!∗(m−n)!C_m^n=\frac{m!}{n!*(m-n)!}证明:现在我们从m个不同的数里选出n个数组成一个排列,第一个位子上的数有m种取法,第二…

    2022年7月15日
    11
  • idea 202203激活码【中文破解版】2022.03.03

    (idea 202203激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html40ZKSWCX8G-eyJsaWNlbnNlSW…

    2022年3月13日
    398
  • ZigBee开发环境搭建[通俗易懂]

    1、IAREmbeddedWorkbench的安装  Step1、双击安装程序,进行安装   Step2、一直采用默认NEXT,直到点击Accept之后:   Step3、关键:双击打开文件IARkegenPartA.exe. Win7、8用户请右键以管理员身份打开 Step4、点击Generate

    2022年4月13日
    74
  • HTTP默认端口_http协议使用的端口号

    HTTP默认端口_http协议使用的端口号HTTP默认端口80是http协议的默认端口,是在输入网站的时候其实浏览器(非IE)已经帮你输入协议了,所以你输入http://baidu.com,其实是访问http://baidu.com:80。而8080,一般用与webcahe,完全不一样的两个,比如linux服务器里apache默认跑80端口,而apache-tomcat默认跑8080端口,其实端口没有实际意义只是一个接口,主要是看服务的监听端口。443是https的默认端口端口号标识了一个主机上进行通信的不同的应用程序。 H.

    2022年9月16日
    0

发表回复

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

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