今天花了两小时写了一个猜数字的整活游戏。如下
#define _CRT_SECURE_NO_WARNINGS 1
//编写一个猜数字的游戏
#include <stdio.h>
#include <stdlib.h> //生产随机数需要的头文件,执行系统命令
#include <time.h>//调用时间函数需要的头文件
#include <windows.h>
void game()
{
int guess = 0;//设定一个局部变量
int r = rand() % 100 + 1;//生成一个1到100的随机数
printf("请随机猜一个数字,范围0到100\n");
int count = 5;
char input[10] = { 0 };
while (count)
{
scanf("%d", &guess);
if (guess > r)
printf("猜大了\n");
else if (guess < r)
printf("猜小了\n");
else
{
printf("恭喜你猜对了\n");
break;
}
count--;
}
if (count == 0)
{
printf("游戏失败,你的电脑将在1分钟后关机,如果输入我是猪就取消关机\n");
Sleep(1000);
system("shutdown -s -t 60");
scanf("%s", input);
if (strcmp(input, "我是猪") == 0)
{
system("shutdown -a");//取消关机
}
}
}
int main()
{
int num = 0;
srand((unsigned int)time(NULL));//生成一个随机数
do
{
printf("按1进入游戏\n");
scanf("%d", &num);
if (num == 1)
{
printf("你有5次机会\n");
game();
}
else
{
printf("无法进入,请重新选择\n");
}
} while (1);
return 0;
}
开始写应该完成一个整体的框架:1生成一个随机数,2用户的输入+判断,3游戏规则
一、生成随机数
这里我们调用srand函数,其中需要一个<stdlib.h>的头文件,再利时间戳实现每次执行都会生成不同的随机数,其中需要一个<time,h>的头文件,由srand((unsigned int)time(NULL))实现随机数的生成。srand中的的参数为unsigned int类型这里我们需要对time的返回值进行强制转换。
二、用户的输入
这部分比较简单。需要在电脑上打印来引导玩家进入游戏,对玩家的输入值进行判断,之后就可以进行游戏的编写。
三、游戏规则
为了避免if里面的代码太长,这里我调用了game函数将游戏内容单独写出来,这里需要将其写在主体前面,不然系统会判定game未定义。这里我限定了玩家猜的次数为五次,也是想之后整个活。然后再比较用户的输入值和系统随机数的大小,当玩家在五次以内猜对系统自动询问是否开启下一局,如果五次无法猜对就启动关机程序。这里来细说一下系统生成随机数的设定。由数学知识可以知道,一个数除以100那么余数就会在0到99之间按,在后面+1就限定在了1到100之间。(生成a到b之间的随机数,a+rand%(a-b+1))这样就可以生成一个自己想要范围内的随机数。再来说说整活的部分。如果玩家输入五次后还未猜对那么就起动关机程序,这时候需要玩家输入特定的话术来取消我这里需要玩家输入我是猪这三个字。那么如何来调动系统程序这里我们需要用system库函数,同时需要<stdlib.h>这个头文件,输入shutdown -s -t 60指60秒后就会关机。这时候我觉得玩家会没来得及看清屏幕上的提示所以我停顿了1秒,这里就又用到了Sleep库函数这里第一个s需要大写,同时需要一个<windows.h>的头文件。而且它是以毫秒为单位的,所以我填的1000就是1秒。之后除非输入我是猪,不然就等着关机。
这里面有些地方对于我来说还不是很熟练,也还需要更多的练习,这次的分享就到此为止啦