当前位置:网站首页>3.猜数字游戏
3.猜数字游戏
2022-07-06 09:20:00 【是王久久阿】
猜数字游戏:随机生成1~100的数,让用户去猜。当猜的数比随机数大时,提示“猜大了”;当才的数比随机数小时,提示“猜小了”;猜的数与随机数相同时,提示“猜对了”。
1.整体框架
首先,在开始时要有一个菜单,菜单栏中打印出选项:1.paly、0.exit。
然后,玩家输入选项,当输入1时,开始游戏;输入0时,结束游戏;出去其他数时,重新输入。并且将游戏设置成可以循环玩的,玩完一次后,可以接着玩。
#include<stdio.h>
void menu()
{
printf("******************\n");
printf("***** 1.paly *****\n");
printf("***** 0.exit *****\n");
printf("******************\n");
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));//用srand修饰rand
do
{
menu();
printf("请选择(1/0):>");
scanf("%d", &input);
switch (input)
{
case 0:
printf("退出游戏\n");
break;
case 1:
printf("开始游戏,请猜数字(1~100)\n");
game();//游戏
break;
default:
printf("输入错误,请重新输入\n");
}
} while (input);
return 0;
}
2.游戏部分
当整体框架写完成后,运行测试一下。测试成功,开始写游戏部分game()代码。
游戏部分的设计主要为:系统生成一个数字——玩家输入——判断——猜错了——提示——重新输入——判断——猜对了(或是次数用尽了)
因为整个过程需要不断的输入、判断,所以需要用到while循环。(注意:生成随机数部分不能放进while循环中,否则每循环一次,都将生成新的随机数)
void game()
{
int num = rand() % 100 + 1;//生成1~100的随机数
int guess = 0;
int count = 6;
while (count--)//6次机会;后置++,先使用再++
{
printf("请输入:>\n");
scanf("%d", &guess);
if (guess > num)
{
printf("猜大了\n");
}
else if (guess < num)
{
printf("猜小了\n");
}
else
{
printf("猜对了\n");
Sleep(500);//停止运行500毫秒
system("cls");//清空屏幕.......
break;
}
}
printf("对不起,机会已用完\n");
Sleep(500);//停止运行500毫秒
system("cls");//清空屏幕
}
(1)当使用rand()函数时创建随机值时,会发现每次的随机值都一样,利用MSDN,查询可知:
这时需要在主函数用srand修饰一下rand的函数,利用时间time,来生成一个随机数。
srand((unsigned int)time(NULL)),这里(unsigned int)将time的返回值强制类型转换,转成换无符号整型,然后给time传一个空指针(NULL)即可。使用rand需要包含头文件<stdlib.h>,使用time需要包含<time.h>。
(2)int num = rand() % 100 + 1,当随机数%100时,其范围是0~99,所以需要再+1。
(3)while (count--),这里指定有count次机会,后置--表示为先使用,再--,当count=0时结束循环。
(4)sleep(a)为停止运行a毫秒,system("cls")为清空屏幕,需包含头文件<windows.h>。
整体代码如下:
//猜数字游戏
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include <windows.h>
void menu()
{
printf("******************\n");
printf("***** 1.paly *****\n");
printf("***** 0.exit *****\n");
printf("******************\n");
}
void game()
{
int num = rand() % 100 + 1;//生成1~100的随机数
int guess = 0;
int count = 6;
while (count--)//6次机会;后置++,先使用再++
{
printf("请输入:>\n");
scanf("%d", &guess);
if (guess > num)
{
printf("猜大了\n");
}
else if (guess < num)
{
printf("猜小了\n");
}
else
{
printf("猜对了\n");
Sleep(500);//停止运行500毫秒
system("cls");//清空屏幕.......
break;
}
}
printf("对不起,机会已用完\n");
Sleep(500);//停止运行500毫秒
system("cls");//清空屏幕
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));//用srand修饰rand
do
{
menu();
printf("请选择(1/0):>");
scanf("%d", &input);
switch (input)
{
case 0:
printf("退出游戏\n");
break;
case 1:
printf("开始游戏,请猜数字(1~100)\n");
game();//游戏
break;
default:
printf("输入错误,请重新输入\n");
}
} while (input);
return 0;
}
如果想将我们制作的游戏发给同学试玩,将VS中debug改成release,测试并保存,到项目保存的地方找到release文件。
X86为32位,推荐保存X64,将X64发给同学可正常运行。
点击release——将其中的exe文件发给同学即可。
边栏推荐
- TYUT太原理工大学2022数据库之关系代数小题
- Questions and answers of "signal and system" in the first semester of the 22nd academic year of Xi'an University of Electronic Science and technology
- 9.指针(上)
- 抽象类和接口
- Small exercise of library management system
- MYSQL索引钟B-TREE ,B+TREE ,HASH索引之间的区别和应用场景
- XV Function definition and call
- Share a website to improve your Aesthetics
- 阿里云微服务(四) Service Mesh综述以及实例Istio
- Network layer 7 protocol
猜你喜欢
Heap sort [handwritten small root heap]
西安电子科技大学22学年上学期《射频电路基础》试题及答案
Smart classroom solution and mobile teaching concept description
View UI plus released version 1.2.0 and added image, skeleton and typography components
抽象类和接口
Answer to "software testing" exercise: Chapter 1
TYUT太原理工大学2022数据库之关系代数小题
9.指针(上)
TYUT太原理工大学2022数据库大题之数据库操作
TYUT太原理工大学2022数据库题库选择题总结
随机推荐
(超详细onenet TCP协议接入)arduino+esp8266-01s接入物联网平台,上传实时采集数据/TCP透传(以及lua脚本如何获取和编写)
Differences and application scenarios between MySQL index clock B-tree, b+tree and hash indexes
Set container
阿里云微服务(四) Service Mesh综述以及实例Istio
Fundamentals of UD decomposition of KF UD decomposition [1]
Employment of cashier [differential constraint]
Smart classroom solution and mobile teaching concept description
arduino+DS18B20温度传感器(蜂鸣器报警)+LCD1602显示(IIC驱动)
Abstract classes and interfaces
View UI plus released version 1.2.0 and added image, skeleton and typography components
Network layer 7 protocol
一文搞定 UDP 和 TCP 高频面试题!
TYUT太原理工大学2022软工导论简答题
Application architecture of large live broadcast platform
Fairygui bar subfamily (scroll bar, slider, progress bar)
MySQL backup -- common errors in xtrabackup backup
KF UD decomposition pseudo code implementation advanced [2]
A brief introduction to the database of tyut Taiyuan University of technology in previous years
MPLS experiment
Counter attack of flour dregs: redis series 52 questions, 30000 words + 80 pictures in detail.