利用C语言编写“剪刀石头布”小游戏

 更新时间:2020年12月04日 11:11:36   作者:张某婷  
这篇文章主要给大家介绍了关于如何利用C语言编写“剪刀石头布”小游戏的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

大家好~

我是一名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;
}

总结

以上就是有关于游戏的思路和代码,编写程序前,我查阅了一些资料,并且询问了他人,在这个过程中,我有学到许多新知识.

但是因为水平有限,程序代码还是很繁琐,方法也不是最好的,希望能通过进一步的学习,开拓自己的思路,用更快捷的方法编写程序。

到此这篇关于利用C语言编写“剪刀石头布”小游戏的文章就介绍到这了,更多相关C语言写剪刀石头布游戏内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言实现合式公式的判断示例

    C语言实现合式公式的判断示例

    这篇文章主要介绍了C语言实现合式公式的判断示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • c++下迭代器总结

    c++下迭代器总结

    大家好,本篇文章主要讲的是c++下迭代器总结,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • C++ OpenCV技术实战之身份证离线识别

    C++ OpenCV技术实战之身份证离线识别

    OpenCV身份证离线识别技术的主要技术就是通过OpenCV找到身份证号码区域,然后通过OCR进行数字识别该区域的截图即可得到身份证号码。感兴趣的可以了解一下
    2021-12-12
  • C++中基本的输入输出函数使用指南

    C++中基本的输入输出函数使用指南

    这篇文章主要介绍了C++中基本的输入输出函数使用指南,是C++入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • VSCode无法打开源文件及无法打开链接库文件的解决方法

    VSCode无法打开源文件及无法打开链接库文件的解决方法

    本文主要介绍了VSCode无法打开源文件及无法打开链接库文件的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • C++实现动态顺序表(vector)

    C++实现动态顺序表(vector)

    这篇文章主要为大家详细介绍了C++实现动态顺序表,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • QT实现用户登录注册

    QT实现用户登录注册

    这篇文章主要为大家详细介绍了QT实现用户登录注册,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • C++ 转换函数用法案例详解

    C++ 转换函数用法案例详解

    这篇文章主要介绍了C++ 转换函数用法案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • C语言 超详细介绍与实现线性表中的无头单向非循环链表

    C语言 超详细介绍与实现线性表中的无头单向非循环链表

    无头单向非循环链表:结构简单,一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构,如哈希桶、图的邻接表等等。另外这种结构在笔试面试中出现很多
    2022-03-03
  • C++实现LeetCode(95.独一无二的二叉搜索树之二)

    C++实现LeetCode(95.独一无二的二叉搜索树之二)

    这篇文章主要介绍了C++实现LeetCode(95.独一无二的二叉搜索树之二),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07

最新评论