游戏呢,总体思路就是系统随机生成一个数字,然后玩家去猜这个数字,等到如果玩家猜错到一定次数时,可以相应的一些惩罚,比如关机,或者让玩家做一些限定的事情来防止关机。
需要用到的头文件:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
#include<string.h>
首先呢,我们既然做游戏,得有一个菜单,供玩家选择。这是一个函数
第二呢,就是玩家选择开始游戏时,对游戏总思路进行设计的一个函数。
第三,就是惩罚函数,当玩家错误到一定次数时,实行惩罚的一个函数。
我们分别用到如下三个函数。
void meau();
void game();
void punish();
还有一个main主函数
程序从main主函数开始,我们每一次开始都需要调用一下菜单,需要玩家进行输入,然后菜单里每一个数字都对应着一个功能,我们可以用switch函数。而且每一次游戏结束之后都要再调用菜单,所以我们需要do...while函数。具体代码如下:
在此之前,因为我们需要调用菜单,所以先把菜单函数写一下:
void meau()
{
printf("**********1.PLAY GAME*********\n");
printf("**********0. EXIT *********\n");
}
我们设置菜单中1为开始游戏,0为离开游戏
但是如果用户输入除了0和1之外的数时,我们应该提醒一下对方要重新输入
所以主函数代码如下:? ? ??
int main()
{
int input = 0;//定义变量
srand((unsigned int)time(NULL));//用来生成随机数的,不必过多了解,会用即可。
do//循环执行,直至用户输入0时结束,即结束游戏,因为0为假
{
meau();
printf("请输入对应的数字哦\n");
scanf_s("%d", &input);//用户输入对应的选项
switch (input)
{
case 1://如果用户选择1,那说明开始游戏
{
printf("让我们开始游戏吧\n");
game();//开始游戏,调用对应的游戏函数
break;
}
case 0:
{
printf("游戏结束,你一定玩的很愉快吧/偷笑\n");
break;
}
default://如果用户输入了0和1之外的数,提醒用户重新输入
{
printf("你能不能按选项选择啊?重新选择\n");
break;
}
}
} while (input);
return 0;
}
实现了之后,我们开始写实现游戏的函数 game函数
首先我们需要随机生成一个随机数。然后需要用户输入并与之进行比较,如果输入大于生成的随机数,则提醒用户输入的数较大,反之,提醒用户输入的数较小。如果一致时,则告诉用户猜对数字。
然后呢,我们还需要创建一个计数器,用来计算用户猜错的次数,如果猜错的次数等于10的时候
我们便进行相应的惩罚,实行惩罚punish函数
下面是game函数
void game()
{
int ret = rand() % 100 + 1;//存放随机数,如果不+1则产生0-99之间的随机数,我们是为了产生1-100之间的随机数
int guess = 0;//用于用户进行猜测
int count = 0;//计数器,用来计算用户猜错的次数
while (1)//每次进行循环,直到猜对执行break跳出为止
{
printf("请输入正确的数字,提示:数字在1-100之间哦\n");
scanf_s("%d", &guess);//用户输入猜测的值
if (guess > ret)//如果用户猜测的大于正确的数,提醒用户猜大了
{
printf("你猜大了,往小里试试,\n");
count++;//如果执行这条语句,说明用户一定猜错了,则计数器+1.
if (count == 5)//当用户输错5次时,提醒用户输错10次会受到惩罚
{
printf("你已经猜错了5次了,猜错10次会有惩罚哦\n");
}
if (count == 10)//当用户输错10次时,执行惩罚函数
{
punish();
count = 0;用户做出正确的抉择后,清空计时器,从0开始再次进行计算
}
}
if (guess < ret)
{
printf("哈哈你猜小了,往大里试试\n");
count++;//执行到这条语句时,用户一定是输入错误,count+1、
if (count == 5)
{
printf(你已经猜错了5次了,猜错10次会有惩罚哦\n");
}
if (count == 10)//同样地,如果猜错10次,执行惩罚函数
{
punish();
count = 0;//和上面同样的道理。
}
}
if (guess == ret)
{
printf("哇!棒棒,恭喜你猜对了哈哈\n");
count = 0;//猜中之后,也要清空计时器,避免下一局时继承上一局的错误次数
break;
}
}
}
说了这么多,总算该进行惩罚函数了,该怎么惩罚呢?
我的惩罚措施是这样:
用户将会面临两种选择(此时已经执行关机倒计时60秒):
一.输入guanji立即将电脑关机
二.输入“我是猪”可以将关机命令撤销(如果关系密切,可以让输入"我爱你xxx"才能撤销/偷笑)
输入其他的则提示用户这是无效的
具体punish函数内容如下
void punish()
{
int input;//用于用户的输入
char arr[50];//用于用户的输入
char test1[20] = { "guanji" };//将第一种答案存在test1数组里
char test2[30] = { "我是猪" };//将第二种答案存在test2数组里
system("cls");//将之前游戏的文字全部清空
printf("xxx你已经输入错误十次\n\n");
printf("现在已经关机进入倒计时60秒\n\n");
system("shutdown -s -t 60");//进入关机倒计时60秒
printf("下面是你自己选择:\n\n");
printf("一.输入guanji立刻关机 二.输入:“我是猪”可以继续进行游戏\n\n");//告诉用户做出选择
printf("提示一下:你关掉程序也没用哦,而且此时你如果关掉程序的话就没有挽救的机会了\n\n");
printf("请输入你的选择\n");
while (1)//循环执行。直到用户做出与选项匹配的答案
{
scanf_s("%s", arr, 30);
if (strcmp(test1, arr) == 0)//如果用户输入guanji,则执行此条程序
{
system("shutdown -s -t 1");//将关机时间设置为1秒,即立刻关机
}
else if (strcmp(test2, arr) == 0)//如果用户输入我是猪,则取消关机指令,并跳出循环,继续进行游戏
{
printf("\n\n\n哇真的吗?你果然是猪\n");
printf("那你继续玩游戏吧\n我已经帮你停止了关机程序哦嘿嘿\n\n\n\n\n\n\n\n\n\n");
system("shutdown -a");//取消关机指令
break;
}
else//如果用户输入其他的答案啊,告诉用户这是无效的,继续循环
{
printf("没用的,没用的,不要挣扎了哈哈\n");
continue;
}
}
}
至此,我们所有的思路就讲完了,是不是很简单呢?
总代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
#include<string.h>
void punish()
{
int input;
char arr[50];
char test1[20] = { "guanji" };
char test2[30] = { "我是猪" };
system("cls");
printf("你已经输入错误十次\n\n");
printf("现在已经关机进入倒计时60秒\n\n");
system("shutdown -s -t 60");
printf("下面是你自己选择:\n\n");
printf("一.输入guanji立刻关机 二.输入:“我是猪”可以继续进行游戏\n\n");
printf("提示一下:你关掉程序也没用哦,而且此时你如果关掉程序的话就没有挽救的机会了\n\n");
printf("请输入你的选择\n");
while (1)
{
scanf_s("%s", arr, 30);
if (strcmp(test1, arr) == 0)
{
system("shutdown -s -t 1");
}
else if (strcmp(test2, arr) == 0)
{
printf("\n\n\n哇真的吗?没想到你真是猪啊\n");
printf("那你继续玩游戏吧\n我已经帮你停止了关机程序哦嘿嘿\n\n\n\n\n\n\n\n\n\n");
system("shutdown -a");
break;
}
else
{
printf("没用的,没用的,不要挣扎了哈哈\n");
continue;
}
}
}
void game()
{
int ret = rand() % 100 + 1;
int guess = 0;
int count = 0;
while (1)
{
printf("请输入正确的数字,提示:数字在1-100之间哦\n");
scanf_s("%d", &guess);
if (guess > ret)
{
printf("你猜大了,往小里试试\n");
count++;
if (count == 5)
{
printf("你已经猜错了5次了,猜错10次会有惩罚哦\n");
}
if (count == 10)
{
punish();
count = 0;
}
}
if (guess < ret)
{
printf("哈哈你猜小了,往大里试试\n");
count++;
if (count == 5)
{
printf("你已经猜错了5次了,猜错10次会有惩罚哦\n");
}
if (count == 10)
{
punish();
count = 0;
}
}
if (guess == ret)
{
printf("哇!棒棒,恭喜你猜对了哈哈\n");
count = 0;
break;
}
}
}
void meau()
{
printf("**********1.PLAY GAME*********\n");
printf("**********0. EXIT *********\n");
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
do
{
meau();
printf("请输入对应的数字哦\n");
scanf_s("%d", &input);
switch (input)
{
case 1:
{
printf("让我们开始游戏吧\n");
game();
break;
}
case 0:
{
printf("游戏结束,你一定玩的很愉快吧/偷笑\n");
break;
}
default:
{
printf("你能不能按选项选择啊?\n");
break;
}
}
} while (input);
return 0;
}
|