目录
前言
整体构思
内容
游戏目录
整体实现
游戏实现
代码
前言为了确保博客内容的连贯,最近把C语言学的差不多了,最近博客一天一更,关注一下。
整体构思
首先打印游戏目录,通过输入让玩家选择是否进行游戏,0为退出游戏,1为开始游戏,游戏的开始需要先生成一个随机数,猜的过程中反馈信息,猜到了,猜大了,猜小了,并且游戏过程中可以中断游戏。
内容
游戏目录
void menu()
{
printf("******1.猜数字******n");
printf("******0.退游戏******n");
}
整体实现
int main()
{
srand((unsigned int)time(NULL));
int n = 1;
do
{
menu();
printf("请输入数字n");
scanf("%d", &n);
switch (n)
{
case 1:
{
printf("开始游戏n"); game(); break;
}
case 0:
{
printf("退出游戏n"); break;
}
default:
{
printf("输入错误,请重新输入n"); break;
}
}
} while (n);
return 0;
}
void menu()
{
printf("******1.猜数字******n");
printf("******0.退游戏******n");
}
整体实现
int main()
{
srand((unsigned int)time(NULL));
int n = 1;
do
{
menu();
printf("请输入数字n");
scanf("%d", &n);
switch (n)
{
case 1:
{
printf("开始游戏n"); game(); break;
}
case 0:
{
printf("退出游戏n"); break;
}
default:
{
printf("输入错误,请重新输入n"); break;
}
}
} while (n);
return 0;
}
用do-while语句实现一开始就打印菜单,用switch语句接收输入的内容,执行玩家输入相应的情况,输入1的时候开始玩游戏,game函数实现游戏;输入0的时候,退出游戏;输入其它数字的时候,显示输入错误,并且能够循环,重新输入。此时用n作为while循环条件的时候,整体逻辑通顺。
游戏实现
void game()
{
//%100,范围是0~99,加1后才是1~100
int guess = rand()%100 + 1;
int search = 0;
printf("提示:0为中断游戏n");
printf("猜数字范围是1-100");
printf("请输入猜的数n");
while (1)
{
scanf("%d", &search);
if (0 == search)
{
printf("游戏中断n");
break;
}
else if (search > guess)
{
printf("猜大了,请继续猜n");
}
else if (search < guess)
{
printf("猜小了,请继续猜n");
}
//上面条件都不成立,即为猜到数字
else
{
printf("猜对了,数是%dn", guess);
break;
}
}
}
进入游戏,最先需要做的就是生成一个随机数,C语言提供了rand库函数来生成随机数,范围是0~32767,但是只使用rand函数,每次开始程序的生成的随机数都是与上一次开始程序相同的随机数。为了避免这种问题,要先使用srand库函数来调用一个随机数作为rand函数生成随机数的起点。C语言提供了一个time库函数来生成时间戳(北京时间1970年01月01日08时00分00秒到现在的总秒数),而时间戳是每秒都在改变的。
用srand函数来接收time函数,srand函数需要的参数是unsigned int类型的,而time函数返回的类型是time_t类型的,类型的差异,强制类型转换,time函数的值不需要存起来,所以time函数的参数用空指针,srand((unsigned int)time(NULL)),srand函数只需调用一次就好,所以在main函数执行的时候调用。
猜数字需要不断的猜,所以用while循环实现,游戏的过程中如果不想玩了,用if语句判断,输入0,break退出循环;其它数就显示猜大了、猜小了,继续循环;如果猜对了,则break跳出循环。注意guess变量的生成要放在while循环的外面,不然每次猜都是不同的数,输入放在while循环里面,要不断的猜数。
代码
printf、scanf的头文件是stdio.h,rand、srand的头文件是stdlib.h,time的头文件是time.h
#define _CRT_SECURE_NO_DEPRECATE #include#include #include void menu() { printf("******1.猜数字******n"); printf("******0.退游戏******n"); } void game() { int guess = rand()%100 + 1; int search = 0; printf("提示:0为中断游戏n"); printf("猜数字范围是1-100"); printf("请输入猜的数n"); while (1) { scanf("%d", &search); if (0 == search) { printf("游戏中断n"); break; } else if (search > guess) { printf("猜大了,请继续猜n"); } else if (search < guess) { printf("猜小了,请继续猜n"); } //上面条件都不成立,即为猜到数字 else { printf("猜对了,数是%dn", guess); break; } } } int main() { srand((unsigned int)time(NULL)); int n = 0; do { menu(); printf("请输入数字n"); scanf("%d", &n); switch (n) { case 1: { printf("开始游戏n"); game(); break; } case 0: { printf("退出游戏n"); break; } default: { printf("输入错误,请重新输入n"); break; } } } while (n); return 0; }
感谢大家的观看,觉得文章写得不错的话,点赞、评论、关注支持一下,后续还会整理别的知识点,若文章编写出现错误,麻烦在评论或者私信一下,我看到后及时更改,谢谢。



