C语言编写猜数字小游戏

Posted 凩子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言编写猜数字小游戏相关的知识,希望对你有一定的参考价值。

C语言编写猜数字小游戏

经过对C语言的初步学习,为提高编程能力,可以敲一些稍费脑筋的代码,猜数字就是一个很好的选择。要想实现该游戏,那么首先我们应该知道制作的大体思路。

  1. 电脑应随机产生一个数字(为便于玩家猜的同时,增加难度和趣味性,所以选择1~100)
  2. 玩家输入所猜数字,电脑给予反馈。
  3. 玩家得知反馈后进行进一步操作。
    (如:所猜数字过大,所猜数字过小,所猜数字正确(是否重玩一局))

知道大体思路后我们就可以着手写代码了

首先玩游戏肯定要有进入界面,让别人知道这是什么游戏。

#include<stdio.h>//头文件万万不能忘
void menu()//无需返回值

    printf("*********猜数字********\\n");
	printf("********1.PLAY********\\n");
	printf("********0.EXIT********\\n");

接着可以将主函数大体写出来

int main()

    srand((unsigned int)time(NULL));//产生随机数
	int input = 0;
	do//选用do—while是因为它可以先执行后判断,符合当前需求
	
		menu();
		printf("请选择(1/0)\\n");
		scanf("%d", &input);
		switch (input)//在此如果使用if语句有些繁琐
		
		case 1:
			game();//游戏主体,下面会写到
			break;
		case 0:
			printf("退出游戏\\n");
			break;
		default:
			printf("输错啦,请重新输入\\n");//应对输错情况
			break;
		
	 while(input);//0为假,非0为真,所以借input判断循环是否执行
	return 0;

然后就是重头戏——游戏主体
根据思路首先要产生随机数
rand
Generates a pseudorandom number.
int rand( void );
The rand function returns a pseudorandom integer in the range 0 to RAND_MAX. Use the srand function to seed the pseudorandom-number generator before calling rand.

MSDN上对rand部分解释如上,我们可以知道rand的返回值在0到RAND_MAX(0x7fff,十进制为32767)之间,那么它是否可以起到产生随机数的作用呢?
经测试其确实可以产生随机数,但再次编译时不难发现,两次的数字是相同的,这就使游戏的趣味性下降了。


srand
Sets a random starting point.
void srand( unsigned int seed );

所以需要srand为其提供生成起点,但srand又需要一个变化的随机数种子来帮助rand生成随机数,所以我们引入一个时间戳的概念(时间戳:当前时间和计算机的起始时间的差值,单位是秒;计算机起始时间:1970年1月1日上午8:00:00)time()函数返回的即是时间戳,时间肯定是一直在改变的,即时间戳也是如此。因每次只需取一次随机种子,所以将该语句放在主函数中。

void game()

     int ret = rand() % 100+1;//因为rand取值范围为0~32767,所以%100并+1使其<=100
	int num;
	while (1)//只要没猜出来就一直猜
	
		printf("猜猜看:");
		scanf("%d", &num);
		if (num > ret)
		
			printf("猜大了\\n");
		
		else if (num < ret)
		
			printf("猜小了\\n");
		
		else
		
			printf("恭喜你猜对了\\n");
			break;//猜对后跳出循环
		
	

最后再写一下主程序

#include<stdio.h>
#include<stdlib.h>//为使用srand
#include<time.h>//为使用time()函数
void menu()

	printf("********猜数字********\\n");
	printf("********1.PLAY********\\n");
	printf("********0.EXIT********\\n");

void game()

	int ret = rand() % 100+1;//因为rand取值范围为0~32767,所以%100并+1使其<=100
	int num;
	while (1)//只要没猜出来就一直猜
	
		printf("猜猜看:");
		scanf("%d", &num);
		if (num > ret)
		
			printf("猜大了\\n");
		
		else if (num < ret)
		
			printf("猜小了\\n");
		
		else
		
			printf("恭喜你猜对了\\n");
			break;
		
	

int main()

	int input = 0;
    srand((unsigned int)time(NULL));
	do//选用do—while是因为它可以先执行后判断,符合当前需求
	
		menu();
		printf("请选择(1/0)\\n");
		scanf("%d", &input);
		switch (input)//在此如果使用if语句有些繁琐
		
		case 1:
			game();//游戏主体,下面会写到
			break;
		case 0:
			printf("退出游戏\\n");
			break;
		default:
			printf("输错啦,请重新输入\\n");//应对输错情况
			break;
		
	 while(input);//0为假,非0为真,所以借input判断循环是否执行
	return 0;

ps:第一次写技术类博客,还有很多地方需要改正完善,望各位大佬可以指出我的不足。

以上是关于C语言编写猜数字小游戏的主要内容,如果未能解决你的问题,请参考以下文章

使用C语言编写猜数字问题

c语言猜数字

c语言猜数字游戏源代码

学习 C 语言丨编写一个简单的猜数字游戏

猜数字游戏c语言编程一到五?

用C#编写猜数字游戏,