目录
一、猜数字游戏
1、什么是猜数字游戏?
2、怎么实现猜数字游戏?
1>、分析需要的功能
2>、随机数的产生
3>、system()函数
4>、总代码
二、猜数字游戏+关机程序
1、关机和取消指令
2、总代码
3、用while思路分析
总结
猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。
首先,从用户端来看,用户进入界面后,应有多种选择,如:1 开始游戏 0 退出游戏。因此用menu()函数来显示游戏菜单
其次,按 1 开始游戏后,应有提示开始游戏。游戏的具体功能用game()函数实现,game()函数可以控制猜数字的次数(用循环,满足就break)
最后,完成游戏后有猜对和猜错两种情况,猜对了直接退出程序,猜错了继续游戏。
都说了猜数字猜数字,那必须要有数,且要求这个数:是一个随机数(每一把游戏都不同),但是该把游戏开始后它就不再改变,直到下一把游戏开始。所以就用到了rand()函数和srand()函数以及time()函数
rand()函数,srand()函数,time()函数功能介绍:
rand()函数返回一个整形值(生成0 — RAND_MAX(32767)的数),但玩一把后,该返回值就固定,所以需要配合srand()使用
srand()函数无返回值,传参类型是unsigned int ,传参是time()时需要强制转换类型
time()函数返回值类型是_t time,在C语言中解释为长整型,传参类型是_t time*。
思路:需要用rand()产生一个数,用srand()产生随机数,用time()时间戳协助srand()产生随机数,具体实现:srand((unsigned int)time(NULL)),传入time()的参数为空指针
system("cls") 清屏
system("pause") 停顿
system("color f 4") 改变颜色,f为背景色,4为前景色
0 = 黑色 8 = 灰色
1 = 蓝色 9 = 淡蓝色
2 = 绿色 A = 淡绿色
3 = 湖蓝色 B = 淡浅绿色
4 = 红色 C = 淡红色
5 = 紫色 D = 淡紫色
6 = 黄色 E = 淡黄色
7 = 白色 F = 亮白色
代码如下(示例):
1、头文件+函数声明
#pragma once
#include
#include
#include
void menu();
//菜单
int game();
//游戏
2、函数实现
#define _CRT_SECURE_NO_WARNINGS
#include "game.h"
void menu()
{
printf("***************************\n");
printf("********** 1.play *********\n");
printf("********** 0.exit *********\n");
printf("***************************\n");
}
int game() //return 0: 游戏完成 return 1: 游戏未完成
{
int guess = 0;
int aim = rand() % 100+1; //生成0~100
//printf("%d\n",aim);
int cnt = 0; //控制选择次数
printf("提示:你有8次机会猜数字,每次猜的数字在0~100区间:>\n");
system("pause");
while (1)
{
printf("请猜数字:\n");
scanf("%d", &guess);
if (guess > aim)
printf("猜大了\n");
else if (guess == aim)
{
printf("恭喜你,猜对了!\n");
return 0;
}
else
printf("猜小了\n");
cnt++;
if (cnt == 8)
{
printf("游戏结束,失败!:>\n");
system("pause");
system("cls");
return 1;
}
}
}
3、main()函数
#define _CRT_SECURE_NO_WARNINGS
#include "game.h"
//猜数字
int main()
{
int input = 0;
srand((unsigned int)time(NULL)); //生成随机数
system("color f4");
do
{
menu();
printf("请选择:>\n");
scanf("%d", &input);
switch (input)
{
case 1:
input=game();
break;
case 0:
printf("游戏结束\n");
break;
default:
printf("选择错误,请重新选择\n");
break;
}
} while (input);
return 0;
}
system("shutdown -s -t 60" //你的电脑将在60秒之后关机 (可以搜cmd,调出命令指示符)
system("shutdown -a") //取消关机
分析:除了循环改为while而不是do while,并加上关机和取消关机指令,其他内容基本相同。
代码如下(示例):
1、头文件+函数声明
#pragma once
#include
#include //srand()函数的头文件
#include //time()函数的头文件
#include
void menu();
int game(); //函数声明
2、函数实现
#define _CRT_SECURE_NO_WARNINGS
猜数字游戏
void menu()
{
printf("************************\n");
printf("****** 1.play ******\n");
printf("****** 0.exit ******\n");
printf("************************\n");
}
int game()
{
int guess;
// 1、生成随机数
//rand()生成0 — RAND_MAX(32767)的数
int ret = rand() % 100 + 1; //生成随机数的函数
// 0 -- 99 -> 0 -- 100
//printf("%d\n", ret);
// 2、猜数字
int i = 0;
printf("你有8次机会猜数字,要猜的数字均在100以内:>\n");
system("pause");
while (i < 8)
{
i++;
printf("请猜数字:>\n");
scanf("%d", &guess);
if (guess < ret)
{
printf("猜小了\n");
}
else if (guess > ret)
{
printf("猜大了\n");
}
else
{
printf("恭喜你猜对了\n");
printf("本次游戏结束,你总共猜了%d次\n", i);
printf("哈哈哈,关机取消了,是不是很刺激!\n");
system("shutdown -a");
return 1;
}
}
if (i == 8)
{
printf("机会用光,本次游戏结束,请重新游戏\n");
return 0;
}
}
3、main()函数
#define _CRT_SECURE_NO_WARNINGS
#include "game.h"
int main()
{
system("shutdown -s -t 180");
system("color f4");
printf("你的电脑将在180秒内关机,如果想取消关机,请通过猜数字游戏!\n");
system("pause");
system("cls");
srand((unsigned int)time(NULL));
while (1)
{
menu();
printf("请输入您的选择:>\n");
int x = 0;
scanf("%d", &x);
switch (x)
{
case 1:
x = game();
system("pause");
system("cls");
break;
case 0:
printf("退出游戏\n");
printf("如果不通过游戏,那电脑很快自动关机咯\n");
system("pause");
system("cls");
menu();
printf("请确认您的选择:>\n");
int nox;
scanf("%d", &nox);
printf("不能退出程序哦,嘿嘿,你得通过游戏才行\n");
system("pause");
system("cls");
break;
default:
printf("输入错误,请重新输入\n");
break;
}
if (x == 1)
break;
else//x=0
continue;
}
return 0;
}
<1>、在case 1: 中,如果完成游戏,game返回0,否则返回1
<2>、在case 0: 中,不管nox=1或者nox=0都对结果操作无影响,都是x在控制是否退出程序
<3>、如果改为 case 1: 完成游戏返回0,否则返回1,主函数条件改为x==0退出
那么当输入的x=0的时候就可以自动退出,而不需要完成猜数字游戏
友情提示:这个代码可以拿来整蛊你的好兄弟哦
方法:在vs中粘贴复制代码,把Debug版本改为Release版本,然后编译运行。在你存放该工程的文件中打开该文件,从release版本中找到exe文件发给某个人,就可完成。
(也可以不加猜数字游戏单独使用关机程序,可以指定内容让他输入,才能退出关机)
总结
总的来说,求随机数要用到rand()函数 srand()函数 time()函数
清屏 停顿 该背景前景色 以及关机和取消 用到system()函数