文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C语言实现猜拳游戏的代码怎么写

2023-06-30 15:39

关注

本篇内容主要讲解“C语言实现猜拳游戏的代码怎么写”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言实现猜拳游戏的代码怎么写”吧!

一、游戏逻辑

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

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

设置与计算机博弈次数

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

玩家出拳

判断输赢

展示玩家和计算机出的拳

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

二、思维导图

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++;//平局次数加1break;case 1:printf("计算机赢\n");lose++;//失败次数加1break;case 2:printf("玩家赢\n");win++;//获胜次数加1break;}}

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++;//平局次数加1break;case 1:printf("计算机赢\n");lose++;//失败次数加1break;case 2:printf("玩家赢\n");win++;//获胜次数加1break;}}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~2number--;}}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("\a\n%d平 %d败 %d胜\n", draw, lose, win);return 0;}

到此,相信大家对“C语言实现猜拳游戏的代码怎么写”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯