c/c++开发分享C语言详细实现猜拳游戏流程

一、游戏逻辑1.打印选择菜单(1.play,0.exit)2.提示玩家0、1、2 分别代表石头、剪刀、布3.设置与计算机博弈次数4.为计算机设置出拳(调用rand()函数生成0、1、2其中一个随机数)

一、游戏逻辑

1.打印选择菜单(1.play,0.exit)

2.提示玩家0、1、2 分别代表石头、剪刀、布

3.设置与计算机博弈次数

4.为计算机设置出拳(调用rand()函数生成0、1、2其中一个随机数)

5.玩家出拳

6.判断输赢

7.展示玩家和计算机出的拳

8.若退出游戏展示玩家胜负与平局信息

二、思维导图

C语言详细实现猜拳游戏流程

三、游戏过程

C语言详细实现猜拳游戏流程

四、代码分析

1.设置随机数的方法

C语言详细实现猜拳游戏流程

仅仅使用rand()函数来生成随机数是不行的,因为它每玩一次生成的随机数都是相同的,即随机数不随机,所以要通过srand()函数,种下一个随机种子,来产生随机数。根据时间每时每刻都是变化的,可以用time()时间函数来产生种子。

C语言详细实现猜拳游戏流程

C语言详细实现猜拳游戏流程

这里 time_t 的类型就是在c语言中被定义为长整型,而srand()函数的参数类型unsignedint(无符号整形),所以使用时要强制类型转换,而且**time()**函数,不需要设置参数,故用null代替。

2.设置计算机出拳的方法

comp = rand() % 3;

调用 rand() 函数 %3 就可以得到有个0~2之间的数值

3.判断输赢的方法

C语言详细实现猜拳游戏流程

据图可以看出只需要判断 (human – comp + 3) % 3 的值是 0、1 还是 2 就可以判断是平局、计算机赢还是电脑赢。

代码示例:

void disp_result(is_winer)  {  	switch (is_winer)  	{  	case 0:  		printf("平局n");  		draw++;//平局次数加1  		break;  	case 1:  		printf("计算机赢n");  		lose++;//失败次数加1  		break;  	case 2:  		printf("玩家赢n");  		win++;//获胜次数加1  		break;  	}  }

is_winer 中存放的是 (human – comp + 3) % 3 的值,利用 switch 语句判断其结果,再输出对应的语句。变量draw、lose、win是用来统计玩家战绩信息。

4.玩家猜拳

控制玩家输入的范围是0~2之间的数值

倘若玩家输入的数值不是0~2之间的,程序就无法正常运行了,所以要控制范围。

可以利用do while循环来达到此目的。

代码示例:

do  {  	scanf("%d", &human);//玩家出拳  	printf("n");  	if (human < 0 || human > 2)  	{  		printf("输入错误,重新输入n");  	}  	is_winer = (human - comp + 3) % 3;  	disp_result(is_winer);//判断输赢的函数         dishumanplayer(human);//展示玩家出的拳  	discomplayer(comp);//展示计算机出拳  } while (human < 0 || human > 2);//控制玩家输出范围是0~2	

if 语句的作用是用来当玩家输入的数值超过了范围时,对其进行提示输入错误。

五、完整代码

#include<stdio.h>  #include<time.h>  #include<stdlib.h>  int draw = 0;//统计平局数  int lose = 0;//统计失败数  int win = 0;//统计获胜数  int human = 0;//玩家手势  int comp = 0;//计算机手势  int is_winer = 0;//判断胜负  void menu()  {  	printf("****************************************n");  	printf("*************** 猜拳游戏 ***************n");  	printf("****************************************n");  	printf("***************  1.play ****************n");  	printf("***************  0.exit ****************n");  	printf("****************************************n");  }  void displayer(int comp, int human)//展示计算机和玩家出拳的函数  {  	printf("计算机出的是:");  	switch (comp)  	{  	case 0:  		printf("石头n");  		break;  	case 1:  		printf("剪刀n");  		break;  	case 2:  		printf("布n");  		break;  	}  	printf("玩家出的是:");  	switch (human)  	{  	case 0:  		printf("石头n");  		break;  	case 1:  		printf("剪刀n");  		break;  	case 2:  		printf("布n");  		break;  	}  }  //判断输赢  void disp_result(is_winer)  {  	switch (is_winer)  	{  	case 0:  		printf("平局n");  		draw++;//平局次数加1  		break;  	case 1:  		printf("计算机赢n");  		lose++;//失败次数加1  		break;  	case 2:  		printf("玩家赢n");  		win++;//获胜次数加1  		break;  	}  }  void game()  {  	printf("(0)-石头,(1)-剪刀,(2)-布n");  	printf("猜拳游戏开始!!!n");  	int number = 0;//猜拳次数  	printf("请选择猜拳次数:");  	scanf("%d", &number);  	while (number)  	{  		comp = rand() % 3;//计算机出拳  		printf("玩家出拳:");  		do  		{  			scanf("%d", &human);//玩家出拳  			printf("-----------猜拳游戏-------------n");  			if (human < 0 || human > 2)  			{  				printf("输入错误,重新输入n");  			}  			is_winer = (human - comp + 3) % 3;  			disp_result(is_winer);//判断输赢的函数  			displayer(comp, human);//展示出拳  		} while (human < 0 || human > 2);//控制玩家输出范围是0~2	  		number--;  	}  }  int main()  {  	srand((int)time(null));  	int input = 0;  	do  	{  		menu();  		printf("选择玩游戏还是退出游戏!!!n");  		printf("请选择:");  		scanf("%d", &input);  		switch (input)  		{  		case 1:  			game();  			break;  		case 0:  			printf("退出游戏n");  			break;  		default:  			printf("选择错误,重新选择n");  			break;  		}  	} while (input);  	//展示玩家成绩	  	printf("an%d平 %d败 %d胜n", draw, lose, win);  	return 0;  }

到此这篇关于c语言详细实现猜拳游戏流程的文章就介绍到这了,更多相关c语言猜拳游戏内容请搜索<猴子技术宅>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<猴子技术宅>!

需要了解更多c/c++开发分享C语言详细实现猜拳游戏流程,都可以关注C/C++技术分享栏目—猴子技术宅(www.ssfiction.com)

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/c-cyuyankaifa/1240280.html

(0)
上一篇 6天前
下一篇 6天前

精彩推荐

发表回复

您的电子邮箱地址不会被公开。