C语言石头剪子布游戏(详解保姆级)
石头剪子布游戏: (1)定义游戏规则剪刀 干掉 布石头 干掉 剪刀布 干掉石头 (2)显示玩家开始猜拳 (3)接收玩家输入的内容 (4)让电脑随机产生一种拳 (5)判断比较 (1)玩家赢的情况(显示玩家赢了) (2)电脑赢的情况(显示电脑赢了) (3)平局(显示平局)
首先我们需要让电脑随机出拳:
这里用rand函数(调用stdlib.h库)来生成随机数,代码如下:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{//1.让电脑随机出拳int cm = rand(); printf("%i\n",cm); //%i 指定整数 %d十进制整数return 0;
}
应该有小伙伴发现了,随机数一直都是一个相同吧
的数,因为C语言提供的rand函数 默认的是一个伪随机数,所以我们还需要用到srand函数(调用time.h库)为初始化随机数生成器,代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{//1.让电脑随机出拳srand(time(NULL));int cm = rand();printf("%i\n",cm); //%i 指定整数 %d十进制整数return 0;
}
如果大家不懂或者想更深层了解可以看这个rand和srand函数
接下来就是猜拳游戏规则:
0代表石头 1代表剪刀 2代表布
那我们怎么把随机数控制在0 1 2这三个数呢?
我们可以用模于3来实现:
0 % 3 = 0
1 % 3 = 1
2 % 3 = 23 % 3 = 0
4 % 3 = 1
5 % 3 = 2
6 % 3 = 0
具体如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{//1.让电脑随机出拳srand(time(NULL));int cm = rand() % 3;printf("%i\n",cm); //%i 指定整数 %d十进制整数return 0;
}
好,接下来就是 提示用户如何输入 ,定义变量保存用户的输入,接收用户的输入,代码如下:
//2.提示用户如何输入
printf("请出拳:0.剪刀 1.石头 2.布\n");//3.定义变量保存用户的输入
int number;//4.接收用户的输入
scanf("%d", &number);
注意如果用户输入非法数据呢? 这里我们知道非法数据肯定是小于0大于2的,所以你懂得:
//6.排出非法数据
if (number < 0 || number > 2) {printf("您输入的数据不对!");
}
第一种实现方法:判断用户和电脑出拳的几种情况从而去确定谁输谁赢和平手,游戏规则如下:
* 猜拳游戏规则: * 0代表石头 1代表剪刀 2代表布 * 电脑 用户(输了) 用户(赢了) * 0 1 2 * 1 2 0 * 2 0 1
代码如下:
else if((cm == 0 && number == 2) ||(cm == 1 && number == 0) ||(cm == 2 && number == 1)){//赢了printf("电脑出的是:%d,用户出的是:%d,用户赢了\n",cm,number);
}else if((cm == 0 && number == 1 ||cm == 1 && number == 2 ||cm == 2 && number == 0)){//输了printf("电脑出的是:%d,用户出的是:%d,用户输了\n",cm,number);
}else{printf("电脑出的是:%d,用户出的是:%d,打平了\n",cm,number);}
完整代码如下(可以拿去运行实践一下):
#include <stdio.h>
#include <stdlib.h>
#include <time.h>int main(void)
{// 1.让电脑随机出拳srand(time(NULL));int cm = rand() % 3;// printf("%i\n",cm);// 2.提示用户如何输入printf("请出拳:0.剪刀 1.石头 2.布\n");// 3.定义变量保存用户的输入int number;// 4.接收用户的输入scanf("%d", &number);// 5.判断电脑和用户出拳// 6.排出非法数据if (number < 0 || number > 2){printf("您输入的数据不对!");}// 7.判断出拳,输出结果//第一种方法:else if ((cm == 0 && number == 2) ||(cm == 1 && number == 0) ||(cm == 2 && number == 1)){//赢了printf("电脑出的是:%d,用户出的是:%d,用户赢了\n", cm, number);}else if ((cm == 0 && number == 1 ||cm == 1 && number == 2 ||cm == 2 && number == 0)){//输了printf("电脑出的是:%d,用户出的是:%d,用户输了\n", cm, number);}else{printf("电脑出的是:%d,用户出的是:%d,打平了\n", cm, number);}return 0;
}
第二种实现方法:用电脑出的拳 - 用户的出的拳的出的结果判断谁输谁赢,游戏规则如下:
* //赢了 * 0 - 2 = -2 * 1 - 0 = 1 * 2 - 1 = 1 * * //输了 * 0 - 1 = -1 * 1 - 2 = -1 * 2 - 0 = 2
代码如下:
else{int temp;temp = cm - number;if (temp == -2 || temp == 1){printf("电脑出的是:%d,用户出的是:%d,用户赢了\n", cm, number);}else if (temp == -1 || temp == 2){printf("电脑出的是:%d,用户出的是:%d,用户输了\n", cm, number);}else{printf("电脑出的是:%d,用户出的是:%d,打平了\n", cm, number);}}
完整代码如下(可以拿去运行实践一下):
#include <stdio.h>
#include <stdlib.h>
#include <time.h>int main(void)
{// 1.让电脑随机出拳srand(time(NULL));int cm = rand() % 3;// printf("%i\n",cm);// 2.提示用户如何输入printf("请出拳:0.剪刀 1.石头 2.布\n");// 3.定义变量保存用户的输入int number;// 4.接收用户的输入scanf("%d", &number);// 5.判断电脑和用户出拳// 6.排出非法数据if (number < 0 || number > 2){printf("您输入的数据不对!");}// 7.判断出拳,输出结果//第二种方法:else{int temp;temp = cm - number;if (temp == -2 || temp == 1){printf("电脑出的是:%d,用户出的是:%d,用户赢了\n", cm, number);}else if (temp == -1 || temp == 2){printf("电脑出的是:%d,用户出的是:%d,用户输了\n", cm, number);}else{printf("电脑出的是:%d,用户出的是:%d,打平了\n", cm, number);}}return 0;
}
如有错误或者建议欢迎各位在评论区留言:
C语言石头剪子布游戏(详解保姆级)相关推荐
- Pyhton之模拟石头剪子布游戏篇
石头剪子布游戏规则:石头>剪子来,剪子>布,布>石头.如果双方出示了一样的手势,就是平局. # coding :UTF_8 # 开发团队 :心心相印 # 开发人员 :机器人小白 # ...
- 【C语言】扫雷小游戏详解
[C语言]扫雷小游戏详解 前言: 还记得大明湖畔的夏雨荷,电脑课上的扫雷吗? ---------------------------是 他 吗--------------------------- 没 ...
- 菜鸟写C语言———石头剪子布
话不多说,上题 输入: 第一行是一个整数N,表示一共进行了N次游戏.1 ≤ N ≤ 100. 接下来N行的每一行包括两个字符串,表示游戏参与者Player1,Player2的选择(石头.剪子或者是布) ...
- c语言字符游动程序,C语言实现扫雷小游戏详解
本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供大家参考,具体内容如下 一.实现功能 首先显示一个小菜单,选择是否玩游戏.当用户选择退出时,程序运行结束,当用户选择玩游戏时,将提示用户输入扫雷位 ...
- shell编程实例-石头剪子布游戏
新建game.sh文件,编辑内容如下: Input() {while :doecho "请选择剪刀(J).石头(S)或(B)"read Choicecase $Choice inJ ...
- c语言模拟石头 剪子布游戏,用C++如何做出石头剪刀布的游戏。。。初学者不给力啊...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include using namespace std; int main() { int s; srand(int(0)); int ...
- 少儿编程150讲轻松学Scratch(十二)-用Scratch制作石头剪子布游戏
前言 Scratch融合卡通.动画.音效等多媒体的运用和直观拖拽式的编程方式,生动有趣,可以编写各种类型程序,游戏.动画.互动美术.实物模拟.数学模拟等,想象无限.同时蕴含丰富知识,体现现代编程思想, ...
- 信息学奥赛C++语言:石头剪子布
[题目描述] 石头剪子布,是一种猜拳游戏.起源于中国,然后传到日本.朝鲜等地,随着亚欧贸易的不断发展它传到了欧洲,到了近现代逐渐风靡世界.简单明了的规则,使得石头剪子布没有任何规则漏洞可钻,单次玩法比 ...
- 石头剪子布(字符串)c语言,石头、剪刀、布程序,C语言模拟
/*同问用C编写:同学 A 和B两个人玩最简单的石头剪子布游戏,游戏规则如下:石头赢剪子:剪子赢布:布赢石头: 如果二者相同,则平局:并且规定,如果赢一局则得 2 分,平局的话双方各得 1 分,输的人 ...
最新文章
- git - 简易指南
- 【MATLAB】MATLAB的控制流
- 用贪心算法解决马踏棋盘问题
- SQL Server表分区的NULL值问题
- kuangbin专题十六 KMP扩展KMP HDU3068 最长回文
- (3)Python3笔记之变量与运算符
- 图论 —— 二分图 —— 匈牙利算法
- end_request: I/O error
- react.js 表单验证-登录框
- python 通信_深入浅出通信原理(Python代码版)
- go html桌面,用 Go 开发桌面应用程序(GUI):Webview、Lorca 与 Electron
- 轻量级分布式事务-自定义多数据源事务注解
- 【生产优化】基于matlab遗传算法求解帐篷工序问题【含Matlab源码 2145期】
- 光线追踪算法—镜面反射
- 内存管理(15)——UI(20)——DeleteObject
- 小程中的web-view缓存问题
- 【深度学习】深度学习模型
- HiPER宽带安全网关——逍遥岛网吧应用实例(转)
- 网易月薪25K的Linux运维面试真题曝光
- 区块链联盟的正确方式
热门文章
- c语言外部中断th0,单片机C语言代码:外部中断,按下中断按键LED不亮,LED1正常亮...
- 典型计算机控制系统的基本框图6,计算机控制系统试题
- Django(一)-学习笔记整理
- 阿里巴巴优酷视频增强和超分辨率挑战赛记录
- Lyft抢跑Uber上市! 打响硅谷独角兽上市潮第一枪!
- 【Swift初见】Swift字典
- Markdown语法016:最常用的LaTeX语法
- 计算机毕业设计php_thinkphp_vue的家乡石泉网站-乡村家乡旅游信息网站
- Mac系统Kettle安装教程
- 【数据结构】常见七大排序总结