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");
c语言编程小游戏scanf_s("%c",&Gamer);
switch(Gamer)
{
case65|97://A a
gamer =4;
break;
case66|98://B b
gamer =7;
break;
case67|99://C c
gamer =10;
break;
default:
printf("你的选择为%c\n选择错误,退出...\n", Gamer);
system("pause");
return0;
break;
}
3.游戏过程及结果
srand((unsigned)time(0));//每⼀次的seed都不同
computer =rand()%3+1;
result = gamer + computer;
printf("电脑出了:");
switch(computer)
{
case3:printf("剪⼑\n");break;
case1:printf("⽯头\n");break;
case2:printf("布\n");break;
}
printf("你出了:");
switch(gamer)
{
case4:printf("剪⼑\n");break;
case7:printf("⽯头\n");break;
case10: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");//清屏
}
return0;
}
总结
以上就是有关于游戏的思路和代码,编写程序前,我查阅了⼀些资料,并且询问了他⼈,在这个过程中,我有学到许多新知识.
但是因为⽔平有限,程序代码还是很繁琐,⽅法也不是最好的,希望能通过进⼀步的学习,开拓⾃⼰的思路,⽤更快捷的⽅法编写程序。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。