手把手带你学会猜数字游戏代码编写

声明:因本人为非科班转码,个人水平有限,博客中难免有不准确之处,如有读者发现,本人恳请大家积极指出,本人也想知道自己的错误在哪里。欢迎大家一起指正,共同进步。

  • 联系方式:3146367553@qq.com

想直接看源代码的小可爱可以直接跳转至3.源代码。


目录

1.程序功能大致描述

2.代码编写思路分析

2.1 整体框架分析

2.2 重难点分析(1-100的随机数如何生成)

2.3 相关细节与两种模式

3. 源代码与截图


1.程序功能大致描述

由系统生成1-100的随机数(整型),由玩家在键盘上进行猜测,玩家无论猜大猜小电脑都会告知你,如果猜对了会恭喜你。同时,玩家可以在玩游戏的中途退出游戏。个人设置了简单和困难两种模式可以选择。


2.代码编写思路分析

2.1 整体框架分析

①首先,我们可以联系一下以前打过的小游戏(不是小游戏也可以),我们是不是进入游戏会有一个开始游戏和退出游戏的选项?点击屏幕其他部分是不是没有反应?因此,我们可以设立一个主菜单函数,打印游戏界面(因为界面可能不止见到一次)。同时,我们站在玩家的角度想一想,我们是不是有很大概率猜对了一把还想猜测的欲望,直到自己不想打就退出游戏?因此,游戏刚开始的选择是否游戏其实很符合循环。另外,用户第一次进游戏肯定得选择,小可爱,你说是不是?

 因此,在选择是否开始游戏就是一个do-while循环,同时循环条件可以为1(退出游戏可以break)。

②我们不难分析,退出游戏只需要一两个语句就可以。而开始游戏是一个较为复杂的代码,同时用户可以开始游戏很多次(只要他还想玩),那么,为了避免重复造轮子,我们应该把游戏设定成一个函数。

2.2 重难点分析(1-100的随机数如何生成)

其实,重点呼之欲出,就是我们怎么让电脑生成一个1-100的随机数呢?首先,如果有一个随机数x,那么x % 101就是1-100(余数范围为1-100)。接下来,就是随机数的问题了。

经查阅,有rand函数可以生成随机数。

我们查阅发现,rand头文件为stdlib.h,值得注意的是,调用rand函数我们需要在这之前生成srand随机数生成器。

而srand函数用法为srand(unsigned int),即括号内为无符号整型。但是,一旦括号内确定,随机数也随之确定。如此一来,小游戏数字便固定了。因此,括号内必须为随机数?但是,怎么可能让随机数生成随机数?这时,我们可以换一个思路,在括号内的只要是一个变化的数字就可以了。那么,我们在进行游戏的时候,什么是变化的呢?没错,是时间!

 经查阅,正好有一个time函数,该函数返回一个从当前时间点到计算机起始时间之间的差值(随着时间的变化,差值在变)。因此随机数生成器可以写成srand((unsigned int)time(NULL))。同时,经试验我发现,随机数生成器得和rand函数分开,也就是srand生成器在主函数,rand函数生成值赋值在game函数是正确做法。

2.3 相关细节与两种模式

①首先,我们在玩这个游戏肯定不喜欢一直见到游戏主界面,如此清屏函数就派上大用场了。

即system("cls"), 头文件为windows.h。

②我设计的模式有两种,一种为简单模式,可以看到自己之前的猜数字记录;另外一种为困难模式,看不到自己的猜数字记录。

③每猜测5次,电脑会询问是否终止游戏从而退出。(会有因为特殊原因突然不想玩或者不能玩的游戏客户)。


3. 源代码与截图

讲了这么多,还是代码最重要,需要的小伙伴自行复制哈。

源代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>void menu()
{printf("****************\n");printf("****************\n");printf("欢迎进入猜数字游戏界面\n");printf("1:开始游戏\n");printf("0:退出游戏\n");printf("****************\n");printf("****************\n");
}
void game1() //简单模式(可以看到自己猜测记录)
{int guess = 0;int x = rand() % 101;//存放随机数, 取余101余数为1-100int count = 0;while (1){printf("请输入您猜测的数字:");scanf("%d", &guess);count++;if (guess == x){system("cls");printf("恭喜您,猜对了\n");printf("将重新回到游戏界面\n");break;}else if (guess > x){           if (0 == count % 5){printf("是否终止游戏?\n");char input = 'A';getchar();//清理缓冲区回车键scanf("%c", &input);if ('Y' == input){break;}}printf("不好意思,您猜测的数字大了\n");}else{if (0 == count % 5){printf("是否终止游戏?\n");char input = 'A';getchar();//清理缓冲区回车键scanf("%c", &input);if ('Y' == input){break;}}printf("不好意思,您猜测的数字小了\n");}}
}void game2() //困难模式(不能看到自己猜测记录)
{int guess = 0;int x = rand() % 101;//存放随机数, 取余101余数为1-100int count = 0;while (1){printf("请输入您猜测的数字:");scanf("%d", &guess);count++;if (guess == x){system("cls");printf("恭喜您,猜对了\n");printf("将重新回到游戏界面\n");break;}else if (guess > x){           system("cls");if (0 == count % 5){printf("是否终止游戏?\n");char input = 'A';getchar();//清理缓冲区回车键scanf("%c", &input);if ('Y' == input){break;}}printf("不好意思,您猜测的数字大了\n");}else{system("cls");if (0 == count % 5){printf("是否终止游戏?\n");char input = 'A';getchar();//清理缓冲区回车键scanf("%c", &input);if ('Y' == input){break;}}printf("不好意思,您猜测的数字小了\n");}}
}int main()
{int choose = 0;srand((unsigned int) time(NULL));do{menu();scanf("%d", &choose);if (1 == choose){system("cls");printf("开始猜数字\n");int choose2 = 0;printf("请选择模式:1.简单模式  2.困难模式\n");getchar();scanf("%d", &choose2);while(1){if (1 == choose2){game1();break;}else if (2 == choose2){game2();break;}else{printf("您的选择有误,请重新输入\n");}}}else if (0 == choose){system("cls");printf("退出游戏\n");break;}else{system("cls");printf("您的输入有误,请重新输入\n");}} while (1);return 0;
}

运行截图:

 

创作不易,小可爱们,动动你们的小手点个赞再走呗。

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/5948.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用python,重温小时候猜数字大小游戏

目录 前言 一、猜数字实现思路 二、实例 代码&#xff1a; 效果&#xff1a; 解析&#xff1a; 三、总结 前言 游戏规则&#xff1a; 心里想一个0-100之间的数字&#xff0c;让用户猜&#xff0c;如果小了或者大了&#xff0c;就给予提示&#xff0c;直到用户猜到。 …

c语言那些有趣的事 -- 猜数字游戏

&#x1f4d5;博主介绍&#xff1a;目前大一正在学习c语言&#xff0c;数据结构&#xff0c;计算机网络。 c语言学习&#xff0c;是为了更好的学习其他的编程语言&#xff0c;C语言是母体语言&#xff0c;是人机交互接近底层的桥梁。 本章用循环去写一些题目。 让我们开启c语言…

python实现猜数字游戏

欢迎光临我的blog&#xff01;&#xff01;&#xff01;下面我将用python实现猜数字游戏。 用python实现猜数字游戏可以加深python初学者循环结构的理解和运用。 猜数字游戏规则如下&#xff1a; 电脑程序随机生成一个数字&#xff0c;作为猜数字游戏的最终答案&#xff0c;…

11行代码教你写一个猜数字游戏,妈妈再也不怕我无聊了

每次学完后总是可能忘掉或者一时记不起来所要用的东西&#xff0c;在网上找总是找不到自己要用的东西。或者给别人解释时太过麻烦&#xff0c;所以干脆发到csdn公开&#xff0c;一些好的文章或者程序早已年代久远或者不适用于现在的这个版本或许有更好的编写方法。 有时会写一些…

ChatGPT+Midjourney实现儿童绘本故事及其插图(数字1~10的故事)

团队模型、论文、博文、直播合集&#xff0c;点击此处浏览 一、背景 近期AI对话技术与AI绘画技术突飞猛进。其中1.&#xff09;AI对话技术是指用于模拟人类语言交流的人工智能技术。它可以让机器通过自然语言文本或语音与人类进行交流&#xff0c;并能理解人类的话语内容并做出…

服务异常:本地计算机上的服务启动后又停止。某些服务在未由其他服务或程序使用时将自动停止

1、安装服务成功之后启动服务报错&#xff0c;如下 2、主要问题还是代码报错&#xff0c;可以进入进入计算机管理器&#xff0c;选择&#xff1a;诊断-事件查看器-windows日志-应用程序&#xff0c;选择错误消息查看报错日志&#xff0c;如下 3、查看日志分析报错原因&#x…

解决Linux关闭终端(关闭SSH等)后运行的程序或者服务自动停止【后台运行程序】

转载自&#xff1a;https://www.cnblogs.com/bohaoist/p/4965103.html 问题描述&#xff1a;当SSH远程连接到服务器上&#xff0c;然后运行一个服务 ./catalina.sh start&#xff0c;然后把终端开闭&#xff08;切断SSH连接&#xff09;之后&#xff0c;发现该服务中断&#xf…

ChatGPT大封号,注册功能关闭!亚洲成重灾区!

来源&#xff1a;量子位&#xff08;ID:QbitAI &#xff09; 作者&#xff1a;明敏 萧箫 “不要登录ChatGPT&#xff01;” “暂时远离人工智能和ChatGPT概念板块高位股&#xff01;” 就在这两天&#xff0c;一些关于ChatGPT的疾呼突然在各种社交平台和群聊刷屏了。 而看到这…

突发 ChatGPT Plus停售?

现在&#xff0c;ChatGPT已不支持Plus付费了。 △ChatGPT截图 原因很简单&#xff1a;High demand。需求量太大&#xff0c;以至于OpenAI不得不暂停Plus的销售。 之后何时开放也没有明说。 前几天ChatGPT就因出现大规模封号引发热议&#xff0c;现在竟正儿八经地关闭了Plus…

突发!ChatGPT Plus停售!

Datawhale分享 最新&#xff1a;ChatGPT&#xff0c;来源&#xff1a;量子位 现在&#xff0c;ChatGPT已不支持Plus付费了。 △ChatGPT截图 需求量太大&#xff0c;地球上没有足够算力了&#xff1f; 原因很简单&#xff1a;High demand。需求量太大&#xff0c;以至于OpenAI不…

暂停更新,ChatGPT还能不能玩了

今天凌晨&#xff0c;一位网名anton的用户发推称&#xff1a;对GPT的需求如此之高&#xff0c;以至于现在新用户都无法升级到高级版了&#xff01; 注意&#xff1a;官网只是说暂停升级&#xff0c;不是永久停售Plus&#xff01; 一时间话题的焦点就引发到了“算力供应紧张”…

免费体验比ChatGPT更强大的AutoGPT

如果说chatgpt是汽车的话&#xff0c;那AutoGPT就是飞机 简单点说就是比chatGPT更进一步&#xff0c;AI自己上网、自己使用第三方工具、自己思考、自己操作你的电脑。执行设定的目标&#xff0c;直到完成。 不到3分钟搞定一个你想要的网站&#xff01; Auto GPT与ChatGPT对比…

对抗 ChatGPT,免费体验 Claude

对抗 ChatGPT&#xff0c;免费体验 Claude Claude 是 Anthropic 构建的大型语言模型&#xff08;LLM&#xff09;&#xff0c;对标ChatGPT。 Anthropic 创始团队多是前openai研究员和工程师&#xff0c;Claude 的特点是能够检测和回避ChatGPT的潜在陷阱&#xff0c;如逻辑错误…

都别吹牛逼了,2个英语指令简单评测便知ChatGPT、博弈Ai、文心一言、通义千问、讯飞星火真实水平

一、博弈Ai&#xff1a;GPT3.5版 演示&#xff1a;点此进入 1、充当英语发言助手 评分&#xff1a;10分 总结&#xff1a;完整满足了指令需求 2、充当英汉互译器 评分&#xff1a;8分 总结&#xff1a;基本满足了我的指令需求。但是有点啰嗦&#xff0c;扣2分 二、ChatGP…

博弈Ai官网ChatGPT能力真实测评

链接&#xff1a;点此进入&#xff08;基于ChatGPT4和3.5研发的智能聊天机器人国产镜像&#xff09; 一&#xff0c;博弈Ai的UI设计样式 1、博弈Ai&#xff08;ChatGPT&#xff09;白天模式 2、博弈Ai&#xff08;ChatGPT&#xff09;黑天模式 3、博弈Ai&#xff08;ChatGPT&a…

OpenAI Java SDK——chatgpt-java更新支持GPT-3.5-Turbo,支持语音转文字,语音翻译。

简介 chatgpt-java是一个OpenAI的Java版SDK&#xff0c;支持开箱即用。目前以支持官网全部Api。支持最新版本GPT-3.5-Turbo模型以及whisper-1模型。增加chat聊天对话以及语音文件转文字&#xff0c;语音翻译。 开源地址&#xff1a;https://github.com/Grt1228/chatgpt-java …

ChatGPT似乎有的时候并不能搞懂Java的动态分派,你懂了吗?

目录 碎碎念 ChatGPT 中出现的问题 那么正确答案应该是什么呢&#xff1f; 分派的相关知识点总结&#xff1a; 分派是什么&#xff1f; 静态分派与动态分派&#xff1a; Java语言是静态多分派&#xff0c;动态单分派的&#xff1b; 静态分派&#xff1a;静态重载多分派…

使用java对接chatgpt(含全部代码)

使用java对接chatgpt&#xff08;含全部代码&#xff09; 因为对vscode不熟悉&#xff0c;前段界面我也是在idea里写的&#xff0c;先看一下效果图是这样&#xff0c;比较简陋 我直接上代码&#xff0c;关于chatgpt前端的html&#xff0c;对了因为这个是我用之前写的匿名群聊改…

【开源免费】ChatGPT-Java版SDK重磅更新至1.0.10版,支持Tokens计算,快来一键接入!!!

简介 ChatGPT Java版SDK开源地址&#xff1a;github.com/Grt1228/cha… &#xff0c;目前收获将近1000个star。 有bug欢迎朋友们指出&#xff0c;互相学习&#xff0c;所有咨询全部免费。 最新版&#xff1a;1.0.10 <dependency><groupId>com.unfbx</groupId&…

面向Java开发者的ChatGPT提示词工程(1)

各位Java开发者们&#xff0c;欢迎来到万猫学社&#xff01;在这里&#xff0c;我将和大家分享ChatGPT提示词工程的系列文章&#xff0c;希望能够和大家一起学习和探讨提示词的最佳实践。 虽然互联网上已经有很多有关提示词的材料&#xff0c;比如那些“每个人都必须知道的30个…