c语言完成一个简单的猜数字游戏

游戏描述

在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;
}

在这里你会发现多次得到的数字已经能够做到随机了

1在这里插入图片描述在这里插入图片描述

设置主函数

在这里定义的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;
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值