简易的猜数字游戏

用C语言实现简单的猜数字游戏

 

目录

前言

一、代码

二、组成部分

       1.思路

       2.菜单

       3.主函数

       4.游戏体

       5.测试游戏 


 

 

前言

各位如果觉得博主写的不错,请诸位多多支持(点赞+收藏+关注)。如果有不对的地方,欢迎指出。 

简易的猜数字游戏_第1张图片 


 

 

一、代码

代码如下:

#define _CRT_SECURE_NO_WARNINGS 1
#include 
#include 
#include            

//菜单
void menu()
{
	printf("**********************\n");
	printf("        1.play        \n");
	printf("        0.exit        \n");
	printf("**********************\n");
}

//游戏
int game()
{
	srand((unsigned int)time(NULL));   //随机生成数字
	int number=rand()%100;          
	printf("请输入数字\n");
	while(1)
	{
		int input = 0;
		scanf("%d", &input);    //玩家猜数字
		if (input > number)
		{
			printf("猜大了,请重新输入数字\n");
		}
		else if (input < number)
		{
			printf("猜小了,请重新输入数字\n");
		}
		else
		{
			printf("猜对了\n");
			break;
		}
	}
}

//主函数
int main()
{
	int i;
	do
	{
		menu();               //打印菜单
		scanf("%d", &i);
		switch (i)                  //选择是否开始游戏
		{
		case 1:
		{
			printf("开始游戏\n");
			game();                   //输入1进入游戏
		}
		case 0:
		{
			printf("游戏结束\n");         //输入0结束游戏
			break;
		}
		default:
            printf("输入错误,请重新输入\n");   //输入错误时提示
			break;
		}
	} while (i);
	return 0;
}

二、组成部分

1.思路

猜数字游戏顾名思义,就是给出一个随机的给出一个0~100的整数。

玩家猜这个整数,猜对了,恭喜玩家,游戏结束;玩家猜错了,在屏幕上给出提示,玩家继续猜。

那么我们怎么用代码来实现这样一个游戏呢?

2.菜单

代码如下: 

//菜单
void menu()
{
	printf("**********************\n");
	printf("        1.play        \n");
	printf("        0.exit        \n");
	printf("**********************\n");
}

游戏开始前通常会给玩家说明供玩家游戏选项选择,比如选择开始游戏和结束游戏,那么我们就需要一个菜单;这个菜单很简单,用几个printf()库函数打印出几行字符串就行。玩家输入1表示玩游戏,玩家输入0就表示游戏结束。

3.主函数

代码如下: 

//主函数
int main()
{
	int i;                    
	do
	{
		menu();                      //打印菜单
        printf("请输入->");           
		scanf("%d", &i);             //输入
		switch (i)                   //选择是否开始游戏
		{
		case 1:
		{
			printf("开始游戏\n");
			game();                             //玩家输入1进入游戏
            break;
		}
		case 0:
		{
			printf("游戏结束\n");               //玩家输入0结束游戏
			break;
		}
		default:
            printf("输入错误,请重新输入\n");   //输入错误时提示
			break;   
		}
	} while (i);                              //玩家输入0循环结束
	return 0;
}

 主函数当中,我采用do while的结构这样就能先执行一遍循环体;当程序运行时我们可以看到屏幕上打印出了菜单,这是提示玩家要输入选择开始游戏还是结束游戏。然后我们还需要一个分支语句,这里我用的是switch,在玩家输入相应的数字后,进入相应的分支。(1--玩游戏  0--结束游戏)

 简易的猜数字游戏_第2张图片

 可以看到玩家输入1游戏开始,玩家输入0游戏结束程序结束。

4.游戏体

代码如下:

//游戏
int game()
{
	srand((unsigned int)time(NULL));
	int number=rand() % 100 + 1;            //随机生成数字
	printf("请输入数字\n");
	while(1)
	{
		int input = 0;
		scanf("%d", &input);
		if (input > number)
		{
			printf("猜大了,请重新输入数字\n");
		}
		else if (input < number)
		{
			printf("猜小了,请重新输入数字\n");
		}
		else
		{
			printf("猜对了\n");
			break;
		}
	}
}
srand((unsigned int)time(NULL));   //随机生成数字
int number=rand()%100;  
#include     //包含头文件(time())
#include   //包含头文件(srand()和rand())

首先,我们要生成一个随机数,而C语言中有一个函数rand()可以用来生成随机数。

简易的猜数字游戏_第3张图片 当我们直接使用rand()库函数时,会发现这个函数的值并不是那么随机甚至会出现连续相等的值,这样一个不够随机的数是无法实现猜数字游戏的。 

rand()的使用之前,我们还要调用srand()来设置一个随机的起点,srand()需要一个参数来生成随机的起点;当我们给srand()传的参数是随机的时候,rand()也就是随机的。

srand((unsigned int)time(NULL)); 

所以这里我们需要时刻变化的值传给srand(),而时间是时刻变化的所以我们把时间也就是时间戳传进去;time()就是C语言获取时间戳的库函数,time()函数有参数所以我们传空指针过去,其返回类型为time_t,srand()需要一个无符号整型,用(unsigned int)把 time() 强制转换成无符号整型。(时间戳就是一个时间转换成数字)

srand()只需要调用一次,所以把它放在循环体的外面。

int number=rand() % 100 + 1;    

rand()生成一个整数再对100取余加1就得到一个1~100的随机数了。

while(1)
	{
		int input = 0;
		scanf("%d", &input);    //玩家猜数字
		if (input > number)                        //判断猜大了
		{
			printf("猜大了,请重新输入数字\n");
		}
		else if (input < number)                   //判断猜小了
		{
			printf("猜小了,请重新输入数字\n");
		}
		else                                       //判断是否猜对                                   
		{
			printf("猜对了\n");
			break;
		}
	}

随机数确定后,玩家就可以开始玩游戏了。玩家猜数字可能猜很多次,所以我们把玩家猜数字的过程放在一个死循环当中;当玩家猜对数字时循环结束,否则给出相应的提示游戏继续。

5.测试游戏 

简易的猜数字游戏_第4张图片

运行代码,输入1开始游戏,可以看到猜错了程序会给出相应的提示,而玩家猜对了游戏结束,玩家可以选择继续玩游戏。 

 

 

 

你可能感兴趣的:(C语言,c语言)