简述
在本游戏中需要用到的头文件
#include<stdio.h>
#include<stdlib.h>//使用srand()所需,可以初始化随机发生数
#include<time.h>//获得时间戳所需头文件
首先,在main()中用do{…}while()作为游戏的主循环。
int a = 0;
do { //游戏主循环
} while (a);
接着,设置菜单界面
//界面
void meun()
{
printf("***********************************\n");
printf("************1、开始游戏************\n");
printf("************0、退出游戏************\n");
printf("***********************************\n");
}
然后,在main()中添加switch选择语句,把输入的变量a放入while()中,这样选择1就开始游戏,选择0就结束游戏。
do { //游戏主循环
meun();
printf("请输入:\n");
scanf("%d", &a);
switch (a)
{
case 1:
game();
break;
case 0:
printf("成功退出游戏。\n");
break;
default:
printf("输入错误!\n");
break;
}
} while (a);
最后,编写game()的游戏部分
再开始之前需要设置电脑随机数
srand((unsigned int)time(NULL));//初始化随机发生数
int x = rand() % 100 + 1;//设置随机数值1~100
开始判定所输入的数值是否等于设置的随机数,并且给与一定的提示
//开始游戏
void game()
{
int x = rand() % 100 + 1;//设置随机数值1~100
int num = 0;
printf("游戏开始!\n");
while ( i )
{
scanf("%d", &num);
if (num == x)
{
printf("恭喜你,猜对了!\n");
break;
}
else if (num < x) {
printf("猜小了!\n");
}
else {
printf("猜大了!\n");
}
}
}
同时,也可以给游戏添加猜测次数,限制游戏时长过长
//开始游戏
void game()
{
int x = rand() % 100 + 1;//设置随机数值1~100
int num = 0;
int i = 10;
printf("游戏开始!\n");
while ( i )
{
scanf("%d", &num);
if (num == x)
{
printf("恭喜你,猜对了!\n");
break;
}
else if (num < x) {
printf("猜小了!\n");
}
else {
printf("猜大了!\n");
}
i--;
}
if(i==0)
printf("机会已用完!\n");
}
这样猜数字游戏就基本完成,后面有兴趣可以给游戏继续添加其他功能或者新玩法。
代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//界面
void meun()
{
printf("***********************************\n");
printf("************1、开始游戏************\n");
printf("************0、退出游戏************\n");
printf("***********************************\n");
}
//开始游戏
void game()
{
int x = rand() % 100 + 1;//设置随机数值1~100
int num = 0;
int i = 10;
printf("游戏开始!\n");
while ( i )
{
scanf("%d", &num);
if (num == x)
{
printf("恭喜你,猜对了!\n");
break;
}
else if (num < x) {
printf("猜小了!\n");
}
else {
printf("猜大了!\n");
}
i--;
}
if(i==0)
printf("机会已用完!\n");
}
int main()
{
srand((unsigned int)time(NULL));//初始化随机发生数
int a = 0;
do { //游戏主循环
meun();
printf("请输入:\n");
scanf("%d", &a);
switch (a)
{
case 1:
game();
break;
case 0:
printf("成功退出游戏。\n");
break;
default:
printf("输入错误!\n");
break;
}
} while (a);
return 0;
}
总结
其中,随机数的生成需要以下代码
srand((unsigned int)time(NULL));//初始化随机发生数 int x = rand() % 100 + 1;//设置随机数值1~100
因为随机数发生只要初始化一次就好了,于是把srand()移入main()当中。
对于该猜字游戏主循环不使用do{……}while()也没有问题,这样子会使代码量增加,增加了很多可以被简化的工作。下面就是不使用循环的案例!
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//界面
void meun()
{
printf("***********************************\n");
printf("************1、开始游戏************\n");
printf("************0、退出游戏************\n");
printf("***********************************\n");
}
//开始游戏
void game()
{
int x = rand() % 100 + 1;
int num = 0;
int i = 5;
printf("游戏开始!\n");
while ( i )
{
scanf("%d", &num);
if (num == x)
{
printf("恭喜你,猜对了!\n");
break;
}
else if (num < x) {
printf("猜小了!\n");
}
else {
printf("猜大了!\n");
}
i--;
}
if(i==0)
printf("机会已用完!\n");
//再来一次
int c = 0;
printf("***********************************\n");
printf("************1、再来一次************\n");
printf("************0、退出游戏************\n");
printf("***********************************\n");
printf("请输入:\n");
scanf("%d", &c);
if (c == 1)
game();
else
system("pause");
}
int main()
{
srand((unsigned int)time(NULL));
int a = 0, b = 1;
meun();
printf("请输入:\n");
scanf("%d", & a);
switch(a)
{
case 1:
game();
break;
case 0:
printf("成功退出游戏。\n");
break;
default:
printf("输入错误!\n");
main();
break;
}
return 0;
}