前言
本期浅来制作一个猜数字的小游戏,玩法很简单,即随机输入一个数字,猜错则重新来,猜对则回答正确
1.源码
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//猜字谜小游戏:游戏界面->按钮选择是否游戏->生成随机数开始猜数字
void menu()
{
printf(" 欢迎来到猜字谜小游戏\n");
printf(" 按1进入游戏\n");
printf(" 按0退出游戏\n");
}
//接下来要创建游戏环节的函数了
void game()
{
//要生成随机数,即需要用到rand函数,注意其函数的头文件为<stdlib.h>
int ret = rand() % 100 + 1;// rand() % n的意思即其余数的范围在0~n,所以该步骤的意义是将随机数的值域定在[1,100]
//若只有rand函数,每次代码执行随机数都会一样
//所以为了设置随机数的不同,要引入时间戳(永远变化的东西),又涉及了新的头文件<time.h>
srand((unsigned int)time(NULL));//NULL意为空指针,而因为time返回值的类型为time_t类型,而srand需要unsigned int类型,所以在前面加个括号修改下类型即可
int a = 0;
while (1)
{
scanf("%d", &a);
if (a < ret)
{
printf("太小了bro\n");
printf("再输入:");
}
else if (a > ret)
{
printf("太大了bro\n");
printf("再输入:");
}
else
{
printf("恭喜答对,根本难不倒你!我的bro\n");
}
}
}
int main()
{
srand((unsigned int)time(NULL));
int input = 0;
do {
menu();
printf("请选择:");
scanf("%d", &input);
switch (input)
{
case 1:game();
case 0:printf("退出游戏");
default:printf("输入错误");
}
} while (input);//当input=0时为假,则不再进行循环,即退出游戏了
return 0;
}
2.源码解析
在制作过程中,我们需要先明确所需要的程序步骤
- 第一个我们需要打开界面的菜单,所以我们首先要创建一个包含菜单的内容函数
- 是否进入游戏的按钮,这里就需要用到scanf函数
- 接下来需要对我们输入的按钮进行回应的程序,而因为我们的输入情况分多种,这里可以用switch语句来接受我们的输入
- 而后最重要的是游戏环节,而这时候就需要取创建游戏的内容函数,而游戏种需要包含哪些重要点呢?
5.输入函数的设置(即scanf),随机数的生成,随机数的设置,而接下来,我将着重分析后两者
随机数的生成
随机数的生成涉及到了rand函数,而使用rand函数时一定要记得引用<stdlib.h>头文件,源码中ret = rand() % 100 + 1; // rand() % n的意思即其余数的范围在0~n,所以该步骤的意义是将随机数的值域定在[1,100]
随机数的设置
首先先解答为何还要对随机数进行再设置,因为倘若不设置,每次代码运行,生成的随机数都会一模一样,所以,要想每次生成的随机数不同,则需要为rand函数设置一个永远变化的量,而这又涉及了 time函数,而其的头文件为<time.h>,源码中srand((unsigned int)time(NULL)); //NULL意为空指针,而因为time返回值的类型为time_t类型,而srand需要unsigned int类型,所以在前面加个括号修改下类型即可
注意:将srand函数放置在main主函数而不放在while循环中,是因为前者全程只调用一次数据,而后者每次循环都调用,而如果循环时间间隔短,会导致每次生成的随机数很相邻
游戏试玩
srand函数
srand
函数是C和C++标准库中的一个随机数生成函数,它用于设置伪随机数生成器的种子。srand
函数需要传入一个整数作为参数,该整数将被用作种子来初始化随机数生成器。通常情况下,我们会使用当前时间作为种子,以获取每次程序运行时不同的随机数序列。
使用srand
函数的基本步骤如下:
- 在你的代码中包含头文件
cstdlib
(C)或stdlib.h
(C++)。 - 在需要产生随机数之前,使用
srand
函数设置种子。例如,可以使用srand(time(NULL))
来使用当前时间作为种子。 - 通过调用
rand
函数来生成随机数。
以下是一个简单的示例,展示了如何使用 srand
和 rand
生成随机数:
#include <iostream>
#include <cstdlib>
#include <ctime>
int main() {
// 设置种子为当前时间
srand(time(NULL));
// 生成并打印10个随机数
for (int i = 0; i < 10; i++) {
int randomNum = rand();
std::cout << randomNum << std::endl;
}
return 0;
}
值得注意的是,由于 rand
函数生成的是伪随机数,所以在每次程序执行时,如果使用相同的种子值,则会得到相同的随机数序列。因此,在实际使用中,我们通常使用时间作为种子来获取不同的随机数序列。
本期游戏制作到此结束,谢谢。