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;
}
总结
以上就是有关于游戏的思路和代码,编写程序前,我查阅了一些资料,并且询问了他人,在这个过程中,我有学到许多新知识. 但是因为水平有限,程序代码还是很繁琐,方法也不是最好的,希望能通过进一步的学习,开拓自己的思路,用更快捷的方法编写程序。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/163847.html原文链接:https://javaforall.cn
相关文章
- C语言结构体(struct)常见使用方法[通俗易懂]
- C语言求最大公约数和最小公倍数(思路清晰+拓展)[通俗易懂]
- void loop在c语言中什么意思,C语言中的loop是什么意思,在C语言中loop是什么意思?…[通俗易懂]
- C语言打印short、long、long long和unsigned类型整数[通俗易懂]
- C语言和JAVA的区别[通俗易懂]
- C语言编写简易病毒[通俗易懂]
- C语言逆序输出整数[通俗易懂]
- C语言socket实现文件下载[通俗易懂]
- C语言基础知识梳理总结[通俗易懂]
- C语言system()函数的用法[通俗易懂]
- C语言根据经纬度计算距离[通俗易懂]
- C语言实现大数运算[通俗易懂]
- C语言中的所有运算符用法及总结[通俗易懂]
- C语言之形参和实参详解编程语言
- 有参函数,C语言有参函数详解
- C语言狼追兔子问题
- Linux C语言编程中的常用函数(linuxc常用函数)
- MySQL C语言批量插入功能实现方法简介(mysqlc批量插入)
- MySQL语句在C语言中的应用(C 中的mysql语句)
- 怎样在C语言中引用Mysql数据库(c 中引用mysql)
- C语言操作MySQL数据库实现数据交互(c 与mysql数据交互)
- C语言操作MySQL轻松获取列名(c mysql获取列名)
- MySQL并发下的C语言修改技巧(c mysql 并发修改)
- 解析C语言中空指针、空指针常量、NULL&0的详解
- C语言实现堆排序的简单实例