游戏描述
在0—100之间猜数字,限定次数为5次,可以重复玩。
源代码在这(有需要改进的地方请大神们指正)
涉及知识
随机值函数(rand、srand)的调用,do while 循环,switch语句的使用。
效果展示
具体实施
1.想完成猜数字,首先要保证能够调用一个随机值。
而 rand 函数要做到真正随机需要能够一个改变种子,这个种子需要一直变化,我们正好可以利用 time(NULL) 调用出时间戳来充当这个种子。(时间戳:就是现在这个时间与1970年1月1日0时0分之间秒数的差值。)
rand函数公式
取a到b之间的范围的随机数 | rand ( ) % b + a |
---|---|
例如:1-100的范围的随机数 | rand ( ) %100 + 1 |
rand函数的调用方法
int main()
{
int i = 0;
for (int i = 0; i < 10; i++)
{
printf("%d ", rand () % 100 + 1);
}
system("pause");
return 0;
}
在这里多次调用rand之后,会发现得到的结果是一样的,所以接下来就要使用srand改变rand的种子让他真正做到随机。
调用srand函数
int main()
{
int i = 0;
srand((unsigned int) time(0));
for (int i = 0; i < 10; i++)
{
printf("%d ", rand () % 100 + 1);
}
system("pause");
return 0;
}
在这里你会发现多次得到的数字已经能够做到随机了
设置主函数
在这里定义的chose既可以作为我们是否开始游戏的选择,也可以作为我们是否循环while的条件。
int main()
{
int chose = 1;
srand((unsigned int)time(NULL));
\\在主函数里面设置srand防止放在其他地方多次定义种子导致数字一直变化
do
{
menu();
scanf("%d", &chose);
switch (chose)
{
case 1:
printf("开始游戏\n");
break;
case 0:
printf("结束游戏\n");
break;
default:
printf("输入错误请重新选择\n");
break;
}
game();
} while (chose);
return 0;
}
建立一个菜单(menu函数)
因为这个菜单不需要返回值,我们直接采用void定义函数menu
void menu()
{
printf("****** 欢迎来到猜数字游戏 ********\n");
printf("********************************\n");
printf("******* 1.开始猜数字游戏 *********\n");
printf("********************************\n");
printf("******* 0.结束猜数字游戏 *********\n");
printf("********************************\n");
}
设计游戏主体
void game()
{
int r = rand() % 100 + 1;\\利用rand定义一个随机数r
printf("请输入你猜的数字\n");
int guess;\\这个是玩家猜的数字
int num = 5;\\你想游戏能猜的次数
while (num)\\这里我们使用while循环,用num的次数来作为条件,当num等于0时终止循环
{
printf("你还有%d次机会\n", num);
scanf("%d", &guess);
if (guess > r)
{
printf("猜大了\n");
}
else if (guess < r)
{
printf("猜小了\n");
}
else
{
printf("恭喜你猜对了\n");
break;\\游戏结束跳出循环
}
num--;
if (num == 0)\\这个纯属娱乐,可以删除不影响
{
printf("你的次数用光了请续费\n");
printf("拒绝续费\n");
printf("游戏失败,正确答案是%d\n", r);
printf("\n");
}
}
}
游戏源码
#define _CRT_SECURE_NO_WARNINGS 1\\防止vs编译器报错
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//做一个猜数字的游戏,范围在0-100之间,计数限定5次
void menu()
{
printf("****** 欢迎来到猜数字游戏 ******\n");
printf("********************************\n");
printf("******* 1.开始猜数字游戏 *******\n");
printf("********************************\n");
printf("******* 0.结束猜数字游戏 *******\n");
printf("********************************\n");
}
void game()
{
int r = rand() % 100 + 1;
printf("请输入你猜的数字\n");
int guess;
int num = 5;
while (num)
{
printf("你还有%d次机会\n", num);
scanf("%d", &guess);
if (guess > r)
{
printf("猜大了\n");
}
else if (guess < r)
{
printf("猜小了\n");
}
else
{
printf("恭喜你猜对了\n");
break;
}
num--;
if (num == 0)
{
printf("你的次数用光了请续费\n");
printf("拒绝续费\n");
printf("游戏失败,正确答案是%d\n", r);
printf("\n");
}
}
}
int main()
{
int chose = 1;
srand((unsigned int)time(NULL));
do
{
menu();
scanf("%d", &chose);
switch (chose)
{
case 1:
printf("开始游戏\n");
break;
case 0:
printf("结束游戏\n");
break;
default:
printf("输入错误请重新选择\n");
break;
}
game();
} while (chose);
return 0;
}