这里实现一个猜数字游戏, 具体的游戏环节就是:
1.由计算机随机产生一个数字;
2.我们玩家再输入一个数字;
3.比较这两个数字的大小关系;
4.没有猜对的话会让玩家一直猜, 直到猜对为止
我们先上一段代码:
void Game()
{
srand((unsigned int)time(0)); //时间戳
int num = rand() % 100 + 1; //产生1-100的随机整数
while (1)
{
int guess = 0;
printf("输入你猜的数字:\n");
scanf("%d", &guess);
if (guess < num)
{
printf("猜小了, 再试一次!\n");
}
else if (guess > num)
{
printf("猜大了, 再试一次!\n");
}
else
{
printf("恭喜你猜对了!\n");
break;
}
}
}
上面就是实现游戏环节的关键代码, 我们先认识几个函数:
int rand( void ); 作用是生成一个伪随机数
rand函数返回一个伪随机整数, 范围为0到RAND_MAX, 在调用rand之前, 使用srand函数播种伪随机数生成器
那么RAND_MAX是多大呢??
常数RAND_MAX是rand函数可以返回的最大值, RAND_MAX定义为值0x7fff
16进制数0x7fff转换为10进制数大小为32767, 因为范围实在太大, 所以代码中我们的 rand() % 100是为了产生0-99范围的随机整数
rand() % 100 + 1; 产生的就是1-100以内的随机整数
我们再看看srand函数
void srand( unsigned int seed ); 作用是设定随机起点
参数seed是rand()的种子, 用来初始化rand()的起始值
time函数
time_t time( time_t *timer ); 获取系统时间
根据系统时钟, 时间函数返回自1970年1月1日午夜(00:00:00)以来协调的通用时间经过的秒数, 返回值存储在计时器给定的位置, 此参数可以为NULL, 在这种情况下, 不存储返回值。
完整代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void Game()
{
srand((unsigned int)time(0)); //时间戳
int num = rand() % 100 + 1; //产生1-100的随机整数
while (1)
{
int guess = 0;
printf("输入你猜的数字:\n");
scanf("%d", &guess);
if (guess < num)
{
printf("猜小了, 再试一次!\n");
}
else if (guess > num)
{
printf("猜大了, 再试一次!\n");
}
else
{
printf("恭喜你猜对了!\n");
break;
}
}
}
int Menu()
{
printf("\n");
printf(" ###################################### \n");
printf(" * 1. 猜数字 * \n");
printf(" * 2. 退出 * \n");
printf(" ###################################### \n");
printf("\n");
int choice = 0;
printf("请输入你的选择:\n");
scanf("%d", &choice);
return choice;
}
int main()
{
while (1)
{
int choice = Menu();
if (choice == 1)
{
Game();
}
else if (choice == 2)
{
printf("退出游戏\n");
break;
}
else
{
printf("你的输入有误, 请重新选择:\n");
}
}
return 0;
}
运行结果截图: