初步代码的实现
//
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
void menu()
{
printf("****************************\n");
printf("*********1,play*************\n");
printf("*********0,exit*************\n");
printf("****************************\n");
}
void play()
{
int a = rand() % 100 + 1;
int b = 0;
while (1)
{
printf("请输入你猜的数字:");
scanf("%d", &b);
if (b > a)
{
printf("猜大了\n");
}
else if (b < a)
{
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:play(); break;
case 0:printf("退出游戏\n"); break;
default:printf("输入错误,请重新输入\n");
}
} while (input);
return 0;
}
这是这个游戏代码的初步形态。
局部代码细讲
1,
首先用rand()函数产生随机数,我们玩家从键盘上输入,当我们输入的值不是电脑产生的随机数的时候,就会提示我们我们输入的数据与随机数的大小关系,知道输入正确然后跳出循环。这里我们用到了rand函数,后面我们介绍。
2,
作为一个小游戏肯定是需要一个菜单的,这里做的比较建议简易。根据菜单的提示我们要根据玩家输入的数字,来实现游戏。
输入1,就进入游戏,输入0,就会退出游戏。
3,*rand函数:*我们在调用rand函数的时候电脑会随机给出0-32767的一个数,由于我们游戏需要的是1-100的数据,我们可以做取余数处理,因为我们知道任何一个数%100的结果都是0-99的,此时我们再加上一就是1-100.
所以上面我们用的是rand()%100+1表示随机产生1-100之间的数。
但是我们发现单纯的使用rand函数每局游戏产生的随机数都是一样的,所以又要引出srand函数了。
*srand函数:*当srand函数的参数是不断变化的时候,我们每局产生的随机数就不同了,但又出现了一个问题,我们怎么保证srand函数的参数是随机的呢,这又要引出time函数
*time函数:*time(NULL):会产生时间戳,显然时间是不断变化的,所以就解决了srand函数参数要不断变化的问题。
惩罚措施
我们再对这个游戏进行优化一下,加入一个惩罚措施——当输入十次都没猜对的话就会使你的电脑在一分钟之后关机(当然你也可以加大难度比如五次没猜对),只有输入我是猪后才能关闭关机程序。
我们先介绍一下shutdown -s 这是电脑自带的关机命令,shutdown -s -t 60就表示一分钟之后关机。
shutdown -a是取消前面的关机程序。
这里还用到了strcmp函数,这是一个比较两个字符串的函数,依次比较相应元素的ascall码返回值有大于零,等于零,和小于零三种。若两个字符串完全相同,那么就会返回零。
下面展示最终的代码
//
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
void menu()
{
printf("****************************\n");
printf("*********1,play*************\n");
printf("*********0,exit*************\n");
printf("****************************\n");
}
void play()
{
int a = rand() % 100 + 1;
int b = 0;
int count = 0;
char arr[20] = "";
while (1)
{
printf("请输入你猜的数字:");
scanf("%d", &b);
count++;
if (b > a)
{
printf("猜大了\n");
}
else if (b < a)
{
printf("猜小了\n");
}
else
{
printf("恭喜你,猜对了\n");
break;
}
if (count >= 10)
{
system("shutdown -s -t 60");
printf("输入我是猪,否则电脑将在一分钟后关机\n");
scanf("%s", arr);
if (strcmp(arr, "我是猪") == 0)
{
system("shutdown -a");
break;
}
}
}
}
int main()
{
srand((unsigned int)time(NULL));
int input = 0;
do
{
menu();
printf("请选择:>");
scanf("%d", &input);
switch (input)
{
case 1:play(); break;
case 0:printf("退出游戏\n"); break;
default:printf("输入错误,请重新输入\n");
}
} while (input);
return 0;
}
希望对大家有所帮助。
制作不易给个“一键三连”吧。