目录
注:本文涉及分支循环及少量函数知识。如对
猜数字游戏
大致思路:
既然是一个游戏,那么当我们点开程序时肯定得先设置一个菜单,因此我们得先设置出一个菜单;设置完后我们就开始选择,开始游戏or结束游戏,所以接下来得给一个scanf进行输入来判断是开始还是结束;
当输入完成选择开始游戏后,我们就得开始来进行游戏的逻辑判断了,首先我们得设置一个随机数,这时候我们就可以用rand函数来进行一个随机数的生成(记得包含头文件哦),不明白rand函数的应用可参考http://t.csdnimg.cn/XcfWx;随机数生成完后就可以开始编写游戏运行的逻辑啦,如果输入的数大于随机数就输出输大了,输小了就......,当输入正确时就结束游戏了,那如果我们想进行第二轮呢?这时候就是循环登场啦,我们整个游戏都可以用while循环进行,当在菜单选择时选择结束游戏就可以退出啦。
那么大概的思路讲完,现在来小试牛刀吧:
1:先设置出一个菜单void menu()
设置及运行结果如下图
2:判断游戏是否开始
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void menu()
{
printf("************************\n");
printf("****** 1.开始游戏 ******\n");
printf("****** 0.结束游戏 ******\n");
printf("************************\n");
printf("请选择:\n");
}
int main()
{
int input = 0;
menu();
scanf("%d", &input);//输入一个值从而通过输入的值来判定游戏是否运行,因此我们可以用switch来进行分支
switch (input)
{
case 1:
game();//开始游戏
break;
case 0:
printf("结束游戏\n");
break;
default:
printf("输入错误,请重新输入");
break;
}
return 0;
}
3:设置随机数
当我们完成上述的两步后,这时候就得开始进行游戏内容的设置了,如果要猜数字的话,那么应该先生成一个随机数才能进行下一步吧,随机数的设置如下图所示:
4:编写游戏运行的逻辑
通过上面一系列步骤,我们得到了系统生成的随机数,这时我们也应该输入数字来和生成的随机数进行比较判断,通过大小的比较来不断完善,最终得出正确答案。游戏运行逻辑如下:
void game()
{
int r = rand() % 100 + 1;//rand模100的余数为0~99,模100后表生成的随机数为0~99,再加1表生成出的随机数r的范围为1~100
int x = 0;
while (1)//我们要不断的猜来与随机数进行比对,所以需要不断循环
{
printf("请输入你所猜的数字(1~100):");
scanf("%d", &x);//表示你输入的数字
if (x > r)
{
printf("猜大了\n");
}
else if (x < r)
{
printf("猜小了\n");
}
else
{
printf("恭喜你,猜对了\n");
break;
}
}
}
此时的整体代码如下图:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>//用rand函数生成随机数所需要的头文件
#include <time.h>//用rand函数生成随机数所需要的头文件
void menu()//void表不返回参数
{
printf("************************\n");
printf("****** 1.开始游戏 ******\n");
printf("****** 0.结束游戏 ******\n");
printf("************************\n");
printf("请选择:");
}
void game()
{
int r = rand() % 100 + 1;//rand模100的余数为0~99,模100后表生成的随机数为0~99,再加1表生成出的随机数r的范围为1~100
int x = 0;
while (1)//我们要不断的猜来与随机数进行比对,所以需要不断循环
{
printf("请输入你所猜的数字(1~100):");
scanf("%d", &x);//表示你输入的数字
if (x > r)
{
printf("猜大了\n");
}
else if (x < r)
{
printf("猜小了\n");
}
else
{
printf("恭喜你,猜对了\n");
break;
}
}
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));//设置种子
menu();
scanf("%d", &input);//输入一个值从而通过输入的值来判定游戏是否运行,因此我们可以用switch来进行分支
printf("\n");
switch (input)
{
case 1:
game();//开始游戏
break;
case 0:
printf("结束游戏\n");
break;
default:
printf("输入错误,请重新输入\n");
break;
}
return 0;
}
到了这一步,我们的游戏就已经基本做完了,但当我们玩完一次后想再玩一次后该怎么办呢?简单,搞循环嘛嘛 这时候来个do-while循环不就可以进行多次游戏了么,所以此时我们就把代码添上最后一层瓦顶--循环就好了,完成后的代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>//用rand函数生成随机数所需要的头文件
#include <time.h>//用rand函数生成随机数所需要的头文件
void menu()//void表不返回参数
{
printf("************************\n");
printf("****** 1.开始游戏 ******\n");
printf("****** 0.结束游戏 ******\n");
printf("************************\n");
printf("请选择:");
}
void game()
{
int r = rand() % 100 + 1;//rand模100的余数为0~99,模100后表生成的随机数为0~99,再加1表生成出的随机数r的范围为1~100
int x = 0;
while (1)//我们要不断的猜来与随机数进行比对,所以需要不断循环
{
printf("请输入你所猜的数字(1~100):");
scanf("%d", &x);//表示你输入的数字
if (x > r)
{
printf("猜大了\n");
}
else if (x < r)
{
printf("猜小了\n");
}
else
{
printf("恭喜你,猜对了\n");
break;
}
}
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));//设置种子
do
{
menu();
scanf("%d", &input);//输入一个值从而通过输入的值来判定游戏是否运行,因此我们可以用switch来进行分支
printf("\n");
switch (input)
{
case 1:
game();//开始游戏
break;
case 0:
printf("结束游戏\n");
break;
default:
printf("输入错误,请重新输入\n");
break;
}
} while (input);
return 0;
}
以上就是完成猜数字游戏的所有思路和代码了,接下来我们就可以将这个猜数字游戏结合关机程序来进行整蛊好朋友(好朋友不就是用来坑的吗.jpg)
关机程序
假如此时要求你的程序运行起来时电脑60s后关机,那么要实现此功能的相应代码程序如下:
如果此时再要求你输入:我是猪,则取消关机,代码如下:
那么关机程序就介绍完啦,接下来就是将两者结合了
结合
我们可以将猜数字游戏进行次数限制,如果当次数耗尽后尚未猜对,那么就执行我们的关机程序,除非输入”我是猪“则取消关机,假设我限制猜5次,程序如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>//用rand函数生成随机数所需要的头文件
#include <string.h>//strcmp的头文件
#include <time.h>//用rand函数生成随机数所需要的头文件
void menu()//void表不返回参数
{
printf("************************\n");
printf("****** 1.开始游戏 ******\n");
printf("****** 0.结束游戏 ******\n");
printf("************************\n");
printf("请选择:");
}
void shutdown()
{
char input[20];
system("shutdown -s -t 60");
again:
printf("你的电脑将在一分钟内关机,如果输入我是猪,则取消关机\n");
scanf("%s", input);//输入我是猪
if (strcmp("我是猪", input) == 0)
{
system("shutdown -a");
}
else
goto again;//如果输错则再次提示
}
void game()
{
int r = rand() % 100 + 1;//rand模100的余数为0~99,模100后表生成的随机数为0~99,再加1表生成出的随机数r的范围为1~100
int x = 0;
int count = 5;//限制所猜的次数
while (count)//我们要不断的猜来与随机数进行比对,所以需要不断循环
{
printf("请输入你所猜的数字(1~100):");
scanf("%d", &x);//表示你输入的数字
if (x > r)
{
printf("猜大了\n");
}
else if (x < r)
{
printf("猜小了\n");
}
else
{
printf("恭喜你,猜对了\n");
break;
}
count--;
}
if (count == 0)//当猜完你所设置的次数后还没答对则运行关机程序
{
shutdown();
}
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));//设置种子
do
{
menu();
scanf("%d", &input);//输入一个值从而通过输入的值来判定游戏是否运行,因此我们可以用switch来进行分支
printf("\n");
switch (input)
{
case 1:
game();//开始游戏
break;
case 0:
printf("结束游戏\n");
break;
default:
printf("输入错误,请重新输入\n");
break;
}
} while (input);
return 0;
}
当猜错5次后就得输入我是猪,不然你的好哥们电脑就得关机了呢 (ಡωಡ)
当然,如果你不怕你兄弟揍你的话,可以把这里改成0,表示秒关。
那么代码已经教给大家怎么写了,接下来简单讲解一下怎么发送给别人:
我们在vs上写代码一般是(如图)
Debug版本,我们需要先将它改为Release版本,然后调试运行代码
运行后在你的对应文件夹中就会产生相应的应用程序(如下图),将应用程序发给你的“好哥们”就大功告成啦!
有这么好玩的小游戏,还不分享给你的好兄弟们吗 (ಡωಡ)
创作不易,随手点个免费的大拇指和收藏关注一下作者吧亲,大家一起加油进步。