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

  • 联系方式: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;
}

运行截图:

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

手把手带你学会猜数字游戏代码编写相关推荐

  1. Go-实现猜数字游戏代码

    实现猜数字游戏代码 1 package main 2 3 import ( 4 "fmt" 5 "math/rand" 6 "time" 7 ...

  2. linux脚本猜数字游戏,101个shell脚本 猜数字游戏代码

    原本书上这个例子是教调试脚本的,它故意给出的脚本中有几个错误,教我们认识系统提示的错误,并修改运行.但比较难写出来,所以把修改好了的脚本放上来,这个脚本比较有趣味的 #!/bin/sh # hilow ...

  3. python3.3使用tkinter实现猜数字游戏代码

    发布时间:2014-06-18   编辑:www.jbxue.com 原文地址:http://www.jbxue.com/article/python/22152.html python3.3使用tk ...

  4. python外星人入侵游戏代码_黄哥Python:猜数字游戏代码

    """猜数字游戏 黄哥所写黄哥Python培训 2020 全新升级课程"""import randomcomputer_num = rand ...

  5. PHP代码猜数字游戏,基于JavaScript实现猜数字游戏代码实例

    环境 vscode 1.46 Microsoft Edge 83 示例 以下内容为了解和熟悉 JavaScript,不需要理解,能够复制粘贴并正确运行即可. 新建网页模板 在 vscode 中新建一个 ...

  6. python猜数字代码_Python版的文曲星猜数字游戏代码

    # -*- coding: utf-8 -*- import random #数字类 class NumberItem: #数字个数 _GUESS_NUMBER_COUNT_ = 4 def __in ...

  7. 猜数字游戏代码+设计思路分析

    #define _CRT_SECURE_NO_WARNINGS 1 # include<stdio.h> #include<Windows.h> #include<tim ...

  8. python猜数字游戏代码多次_黄哥Python:猜数字游戏代码

    猜数字游戏,电脑随机生存一个[1, 100] 之间的正整数,人输入一个数字,输出大了,还是小了,猜对了,就退出游戏.由于初学者没有学异常,所以没有采用异常. """ 猜数 ...

  9. Python猜数字游戏代码报错的解决办法

    在尝试输入执行经典猜字游戏程序时,出现了奇怪的异常错误. 让我们先来看一下原始代码(在AI Sweigart的著作<Python游戏编程快速上手(第4版)>一书的第20页): import ...

最新文章

  1. Nuget很慢,我们该怎么办
  2. Algs4-2.1.37部分有序
  3. 为什么要看源码、如何看源码,高手进阶必看
  4. 配置设备作为DHCP 服务器(基于全局地址池)
  5. linux django搭建网站,Linux下搭建Django站点一
  6. Python的正则匹配
  7. mappedbytebuffer_小师妹学JavaIO之:MappedByteBuffer多大的文件我都装得下
  8. NASA-TLX (Task Load Index)量表学习总结
  9. dubbo源码解析-简单原理、与spring融合
  10. java ssm进销存源码,ssm进销存流程管理系统
  11. 靠微信小程序两周获客20万,同城小程序开始爆发
  12. 终于,阿里云网盘来了!
  13. 联想y7000笔记如何安装matlab,联想y7000p安装配置ubuntu笔记
  14. 网络文化经营许可证这样办,省时又便捷!
  15. Scrapy爬虫框架之爬取校花网图片
  16. 【bat/batch】bat中的转义字符
  17. uniapp 微信小程序 map获取接口数据后地图标注marker不会渲染显示
  18. HTTPS证书文件格式转换
  19. 数字证书原理[转载]
  20. Flash 游戏制作一些资源

热门文章

  1. 支付宝小额免密码支付
  2. python hashlib哈希加密等一些加密方式的使用方法
  3. 北鲲云超算平台助力基因检测
  4. SQL Pretty Printe 漂亮的sql 美化工具
  5. Python计算机视觉编程 第一章——基本的图像操作和处理
  6. 微服务架构的分布式事务解决方案(3)--常规MQ队列消息的处理流流程和特点(基于可靠消息的最终一致性)
  7. linux下crontab命令的用法,Linux下crontab命令的用法
  8. HOT78-跳跃游戏
  9. GLSL转换HLSL
  10. 【计算机基础】半角符号与全角符号