【C语言】猜数字游戏

目录

0.目标

1.搭建游戏框架

2.game函数的实现

2.1 rand函数

2.2 srand函数

3.猜数字游戏


0.目标

  1. 电脑会生成一个随机数
  2. 玩家猜数字,电脑会根据玩家猜的大小回复是否正确

1.搭建游戏框架

  • 首先游戏应该先玩一次,然后再决定要不要继续,所以用do...while循环
  • 游戏开始前,应该有个菜单,封装成函数,调用就行
  • 玩家输入可能不止1、0,所以需要switch语句,将别的输入放在default里面
  • 1为play,在case 1里面封装游戏函数
  • 0为exit,将输入input放到do...while循环的条件判断里面。0为假,直接跳出整个游戏,也就是退出游戏

2.game函数的实现

2.1 rand函数

  • rand函数,生成一个随机数,范围在0-RAND_MAX之间。(想要看RAND_MAX的定义,需要引头文件stdlib,就能看到
  • rand函数的头文件也是stdlib

 注意:

  • 因为这个里面随机种子没有改变,所以每次生成的随机数是一样的
  • 所以,rand函数的定义,生成的是一个pseudorandom number 伪随机数

2.2 srand函数

  • srand 头文件是stdlib
  • srand里面需要一个无符号整型
  • 如果srand里面给的是个1或者2,每次生成的随机数就是固定的。如果需要生成的随机数不一样,则需要传递一个变化的无符号整数

时间戳:当前的计算机时间减去计算机起始时间的数值,单位是秒(s)

计算机起始时间:1970.1.1           00:00:00

  • 因为计算机的时间是时刻发生变化的,只需要将时间戳传递给srand即可。用时间戳设置随机数的生成起点
  • time函数需要头文件time.h
  • srand需要无符号整数,所以将time强制转化成(unsigned int)
  • time需要一个指针,但我们这里不需要别的操作,可以传递一个NULL空指针

设置srand随机数的起点,在整个程序中只需要调用一次,所以放到主函数里面

 

3.猜数字游戏

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{
	printf("******************************\n");
	printf("*****  1.play    0.exit  *****\n");
	printf("******************************\n");
}
void game()
{

	printf("猜数字\n");
	int guess = 0;
	int ret = rand()%100+1;
	while (1)
	{
		printf("请输入猜的数字:>");
		scanf("%d", &guess);
		if (guess > ret)
			printf("猜大了\n");
		else if (guess < ret)
			printf("猜小了\n");
		else
		{
			printf("恭喜你,猜对了\n");
			break;
		}
	}

}
int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));
	do
	{
		menu();
		printf("请选择:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game();  //猜数字游戏
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("选择错误\n");
			break;
		}
	} while (input);

	return 0;
}




 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵星人监护人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值