C语言猜拳游戏
2016年最后一篇文章
今天闲来无事Google了一段C语言写的猜拳游戏的代码(本人水平比较低,几乎是刚入门),我没做什么修改。这个switch语句里面对result的处理让我眼前一新,原来是这么玩的,也算是学到了。
代码本身比较简单,算法上面也没有什么难理解的地方,所以我没有做什么修改,如果大家有兴趣可以完善一下交互的功能。
以下是代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
char gamer;
int computer;
int result;
while (1){
printf ("这是一个猜拳小游戏,请选择你的爪子:\n");
printf ("A:剪刀\nB:石头\nC:布\nD:不玩了\n");
scanf ("%c%*c",&gamer);
switch (gamer){
case 65:
case 97:
gamer = 4;
break;
case 66:
case 98:
gamer = 7;
break;
case 67:
case 99:
gamer = 10;
break;
case 68:
case 100:
return 0;
default:
printf ("你的选择是%c 选择错误,退出...\n",gamer);
getchar();
system("cls");
return 0;
break;
}
srand ((unsigned)time(NULL)); //随机数种子
computer = rand()%3; //产生随机数并取余,得到电脑出拳
result = (int)gamer+computer; // 运算时要将char类型的gamer转换成int
printf ("电脑出了");
switch (computer){
case 0: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==7||result==11){
printf ("你赢了!");
}
else if (result==5||result==9||result==10){
printf ("电脑赢了!");
}
else{
printf ("平手");
}
system("pause>nul&&cls"); //暂停并清屏
}
return 0;
}
由于本人是新手,所以有些函数的功能还不是很清楚,在这里做一些小小的解释:
srand和rand函数:在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( inta)。可以利用srand((unsigned)time(NULL))来产生随机序列,因为没一次运行程序的时间是不同的。
- 首先给srand()提供一个种子,它是一个unsigned int 类型,其取值范围从0~65535.
- 然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(0~32767).
- 根据需要多次调用rand(),从而不间断的得到新的随机数.
- 无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果.
time()函数:用于获取时间戳,用time(null)获取当前时间戳。
2016.12.31晚
C语言猜拳游戏的更多相关文章
- C语言写猜拳游戏中遇到的函数循环小问题
各位可能在初学C语言的时候都有写过猜拳游戏.但在写猜拳的函数时,避免不了会使用循环. 当函数被套在一个循环中的时候,你的计分变量可能就会被重置为函数体里的初始值.那么怎么解决这个问题? 其实很简单,你 ...
- Java 入门课程视频实战-0基础 上线了,猜拳游戏,ATM实战,欢迎围观
Java 入门课程视频实战-0基础 已经上传完了.欢迎小伙伴们过来围观 直接进入: http://edu.csdn.net/course/detail/196 课程文件夹例如以下: 1 初识Java ...
- JavaScript--面向对象--猜拳游戏
//html代码 <!doctype html> <html> <head> <meta charset="UTF-8"> < ...
- 猜拳游戏GuessGame源码
该游戏是一款比较不错的猜拳游戏GuessGame源码案例,GuessGame——猜拳游戏,这也是我自己的第一款休闲类的游戏案例,游戏实现也比较简单的,希望这个能够帮大家的学习和使用,更多安卓源码尽在源 ...
- 求三数中Max和猜拳游戏
方法一: Console.WriteLine("请输入三个数字:"); int a = int.Parse(Console.ReadLine()); int b = int.Par ...
- android版猜拳游戏源码分享
android版猜拳游戏源码分享安卓版猜拳游戏源码,该文件中带有安装测试包的,这个游戏源码比较简单的,现在有两个代码,一个自定义VIEW的,一个就是普通的imageView图片,游戏非常适合一些新手的 ...
- C#面向对象编程实例-猜拳游戏
1.需求 现在要制作一个游戏,玩家与计算机进行猜拳游戏,玩家出拳,计算机出拳,计算机自动判断输赢. 2.需求分析 根据需求,来分析一下对象,可分析出:玩家对象(Player).计算机对象(Comput ...
- 【C语言探索之旅】 第一部分第八课:第一个C语言小游戏
内容简介 1.课程大纲 2.第一部分第八课:第一个C语言小游戏 3.第一部分第九课预告: 函数 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写 ...
- 2017-2-22 if语句 if语句的嵌套 以及课堂练习 经典猜拳游戏,闰年判断,输出当前时间的天数等
(一)if语句 1.格式 if(){ }else if() { } 注意:如果if后面不写花括号,只执行下面第一句 (二)语句1:顺序语句 2:循环语句 3:分支语句 课后练习: 1.猜拳游戏(用 ...
随机推荐
- Gobblin采集kafka数据
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 找时间记录一下利用Gobblin采集kafka数据的过程,话不多说,进入正题 一.Gobblin ...
- JSP自定义tag
前端需要调用后端的配置,想起velocity-tools.然而jsp的话,目前只能想到tag和EL表达式了. Tag相当好写,jsp2.0提供了简化写法: 编写一个java类: public clas ...
- CloudNotes云端个人笔记系统系列文章汇总
[CloudNotes版本更新信息与下载地址:http://cloudnotes.cloudapp.net/webapi/Home/Release] [CloudNotes RESTful API帮助 ...
- jQuery-1.9.1源码分析系列(十五) 动画处理——缓动动画核心Tween
在jQuery内部函数Animation中调用到了createTweens()来创建缓动动画组,创建完成后的结果为: 可以看到上面的缓动动画组有四个原子动画组成.每一个原子动画的信息都包含在里面了. ...
- Struts2 源码分析——配置管理之ContainerProvider接口
本章简言 上一章笔者讲到关于Dispatcher类的执行action功能,知道了关于执行action需要用到的信息.而本章将会讲到的内容也跟Dispatcher类有关系.那就是配置管理中的Contai ...
- Visual Studio.NET单选题
在Visual Studio.NET窗口中,在__________窗口中可以察看当前项目的类和类型的层次信息. A. 解决方案资源管理器 B. 类视图 C. 资源视图 D. 属性 在线答题:http ...
- C#之tcp自动更新程序
.NETTCP自动更新程序有如下几步骤: 第一步:服务端开启监听 ServiceHost host; private void button1_Click(object sender, EventAr ...
- 数三角形 bzoj 1201
数三角形(1s 128MB)triangle [题目描述] 小苏看到一个这样的等边三角形:该等边三角形每边的长度为n且被分成n等份,于是每条边就有n-1个等分点.而整个三角形被连接两个不同边的等分点且 ...
- Easticsearch通信方式_API
目录 返回目录:http://www.cnblogs.com/hanyinglong/p/5464604.html 1.Elasticsearch概念 a. Elasticsearch是一个基于Luc ...
- .NET程序员走向高端必读书单汇总
.NET程序员走向高端必读书单汇总 一.知识树 1. 基本能力 1.1 数学 1.2 英语 1.3 语言表达 2. 计算机组织与体系结构 3. 算法与数据结构 4. 操作系统 5. 计算机网络 6. ...