当前位置:网站首页>【C语言】猜数字小游戏
【C语言】猜数字小游戏
2022-08-01 21:34:00 【万羽西】
前言
哈喽大家好,我是Aaron,程序员的生活是非常苦逼的,总是在敲代码和女朋友之间做不出选择,有没有什么两全其美的办法呢?要不然。。我们写个游戏给女朋友,直接让她shut up!
一、源码
首先给大家附上博主的源码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{
printf("**********************************\n");
printf("*********** 1.play **********\n");
printf("*********** 0.exit **********\n");
printf("**********************************\n");
}
// 时间
// 时间戳
// C语言怎么获得时间戳
// time函数 - 可以返回时间戳
// timne_t - long long int
void game()
{
int guess = 0;
// 1. 生成随机数
int ret = rand() % 100 + 1; // 0 ~ 99 + 1 --> 1 ~ 100
//rand - 需要调用头文件"stdlib.h"
// 2. 猜数字
while (1)
{
printf("请猜数字:>");
scanf("%d", &guess);
if (guess < ret)
{
printf("猜小了\n");
}
else if (guess > ret)
{
printf("猜大了\n");
}
else
{
printf("恭喜你,猜对了\n");
break;
}
}
}
int main()
{
//设置随机数的生成起点 - 不要频繁调用
srand((unsigned int)time(NULL));
int input = 0;
do
{
menu();
printf("请选择:>");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误,重新选择\n");
break;
}
} while (input);
return 0;
}
然后逐步给大家讲解:
二、功能分析
我们在写代码之前,一定要想清楚我们需要什么功能,要怎么实现。
猜数字游戏功能:
- 电脑随机生成一个1-100之间的数字
- 玩家猜数字
如果猜对了,就提示:猜对了
如果猜错了,就提示猜大了,或者猜小了,直到猜正确为止 - 游戏可以反复玩。
三、代码逐过程分析
源码以及给大家了,现在我们从头开始分析代码。
- 首先写出主函数,为了使这个游戏可以重复玩,我们可以把他写成do…while的形式或者利用goto语句实现,这里博主就采用do…while形式了。
- 通过键盘输入控制是进入游戏还是退出游戏,就可以利用switch语句来实现。
- 既然是个游戏,就应该有菜单界面,所以需要封装一个函数来显示游戏菜单。
- 游戏的实现应该是比较繁琐,也封装成一个函数实现,不然全部挤在主函数里,让人看着属实难受。
根据以上几点分析,主函数的代码就可以写了:
#include <stdio.h>
int main()
{
int input = 0;
do
{
menu();
printf("请选择:>");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误,重新选择\n");
break;
}
} while (input);
return 0;
}
这里细心的小伙伴应该会发现少了什么东西,,啊没错就是下面这个代码不见了:
srand((unsigned int)time(NULL));
这个代码是设置随机数的生成起点的,整个代码只需要设置一次,所以会被放在主函数里,上面的代码分析没有分析到,所以上述代码没有加,如果放进去完整的主函数代码应该是:
完整的主函数代码:
int main()
{
//设置随机数的生成起点 - 不要频繁调用
srand((unsigned int)time(NULL));
int input = 0;
do
{
menu();
printf("请选择:>");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误,重新选择\n");
break;
}
} while (input);
return 0;
}
接下来是封装界面菜单的函数,因为博主水平有限,所以只能封装一个丑陋至极的界面菜单,哈哈哈哈,希望大家不要介意嗷~~
菜单函数:
void menu()
{
printf("**********************************\n");
printf("*********** 1.play **********\n");
printf("*********** 0.exit **********\n");
printf("**********************************\n");
}
然后就是最关键的游戏函数了,这里面包含了玩这个游戏的全过程,其中就包括了随机生成1-100的数字。
game函数:
void game()
{
int guess = 0;
// 1. 生成随机数
int ret = rand() % 100 + 1; // 0 ~ 99 + 1 --> 1 ~ 100
//rand - 需要调用头文件"stdlib.h"
// 2. 猜数字
while (1)
{
printf("请猜数字:>");
scanf("%d", &guess);
if (guess < ret)
{
printf("猜小了\n");
}
else if (guess > ret)
{
printf("猜大了\n");
}
else
{
printf("恭喜你,猜对了\n");
break;
}
}
}
rand函数就是用来生成随机数的,原理是利用是时间戳,具体用法可以百度,或者利用MSDN工具,如果大家没有这个工具想要的可以评论区留言哦~博主发给你!!
总结
以上就是本文全内容啦~喜欢的朋友可以给个三连哦
点赞 + 收藏 + 关注
对本文或者博主有什么建议欢迎在评论区留言哦~博主也希望和大家一起进步呐!!!
边栏推荐
- C Expert Programming Chapter 1 C: Through the Fog of Time and Space 1.1 The Prehistoric Phase of the C Language
- C Expert Programming Chapter 1 C: Through the Fog of Time and Space 1.4 K&R C
- Appendix A printf, varargs and stdarg A.1 printf family of functions
- Get started with Grafana in 15 minutes
- Shell programming conditional statement
- CS-NP白蛋白包覆壳聚糖纳米颗粒/人血清白蛋白-磷酸钙纳米颗粒无机复合材料
- 回收租凭系统100%开源无加密 商城+回收+租赁
- 【Jmeter常用断言组件】
- Flink集群搭建
- XSS漏洞
猜你喜欢
基于php在线考试管理系统获取(php毕业设计)
方舟开服需要知道的那些事
TP5-NPs负载噻吩类化合物TP5白蛋白纳米粒/阿魏酸钠新糖牛血清蛋白纳米粒
ORI-GB-NP半乳糖介导冬凌草甲素/姜黄素牛血清白蛋白纳米粒的研究制备方法
ARFoundation Getting Started Tutorial U2-AR Scene Screenshot Screenshot
网络水军第一课:手写自动弹幕
shell脚本
Based on php animation peripheral mall management system (php graduation design)
基于php旅游网站管理系统获取(php毕业设计)
ModuleNotFoundError: No module named 'yaml'
随机推荐
Flink集群搭建
可视化——Superset使用
上传markdown文档到博客园
MySQL相关知识
第一讲 测试知多少
Pagoda application experience
Dichotomy Medium LeetCode6133. Maximum Number of Groups
WEB 渗透之端口协议
微软校园大使喊你来秋招啦!
关于npm的那些事儿
0DFS中等 LeetCode6134. 找到离给定两个节点最近的节点
Pytest: begin to use
Centos7--MySQL的安装
HCIP---Multiple Spanning Tree Protocol related knowledge points
测试开发人均年薪30w+?软件测试工程师如何进阶拿到高薪?
C expert programming
基于php酒店在线预定管理系统获取(php毕业设计)
Mini Program--Independent Subcontracting & Subcontracting Pre-download
PyQt5 + MySQL5.8 【学生信息管理系统】【增删改查】
网络水军第一课:手写自动弹幕