猜数字游戏 C语言

Posted Naion

tags:

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

        用C语言来写一些小游戏,比如猜字谜游戏。我们要模块化来写这个游戏,而不是把全部的功能堆在主函数(main)上,使代码看起来杂乱。我们由电脑产生随机数但不打印来猜数字。

        首先,我们需要打印一个游戏菜单以及选择操作,如选择1则继续,选择0则退出,若选择了其他的数字,提示错误。这个时候要用到do...while语句。它的特点是先实行一次语句,再判断。当输入的值为0(也就是假)的时候,退出循环。然后,我们用switch语句来调用相应的函数。我们定义menu函数用来打印菜单,如下。


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

        switch部分的代码如下:

//do...while循环内的语句
        menu();
		printf("请选择:>");
		scanf("%d", &input);
		
		switch(input)
		{
			case 1:
				game();
				break;
			case 0:
				printf("退出\\n");
				break;
			default:
				printf("error!\\n");
				break;
		}

         接下来就是游戏的主体部分:随机数的生成。随机数的产生需要用到rand函数。rand函数的用法简单介绍如下:

        头文件为: #include<stdlib.h>;

        函数原型为: int rand(void);表示产生0~RAND_MAX之间的随机整数(RAND_MAX = 32767)

        如 int r = rand() % 100 + 1;他表示随机产生1~100之间的随机数。若要产生其他范围的随机数,则需要“模除+加法”的方法 。公式如下:

        产生[m,n]范围内的随机数num:int num=rand()%(n-m+1)+m;

        要注意的是rand产生的并不是随机的值,而是伪随机值。当你重复运行程序的时候,你可能会看见rand函数产生的值是一样的。因此在调用rand()函数之前,可以使用srand()函数设置随机数种子。srand函数的用法简单介绍如下:

        头文件为:<stdlib.h>

        函数原型:void srand (usigned int seed);用来设置rand()产生随机数时的随机数种子。参数seed是整数,通常可以利用time(0)或getpid(0)的返回值作为seed。

        感兴趣的可以改变()中的值来查看rand函数产生随机值的变化。

        time()为时间戳,头文件为:#include<time.h> 。本文不做过多介绍。这部分代码如下:

srand((unsigned int)time(NULL));
int r = rand() % 100 + 1;

        不过要注意的是将srand函数放在主函数之中。没必要每一次都重新随机生成。

        完整代码如下。

//Guessing
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

void game()
{
	//过程
	//生成随机数
	int guess = 0; 
	int r = rand() % 100 + 1;
	//printf("  %d\\n", r);
	//猜数字
	while(1)
	{
		printf("猜数字:>");
		scanf("%d", &guess); 
		if(guess < r)
		{
			printf("小了!\\n");
		}
		else if(guess > r)
		{
			printf("大了!\\n");
		}
		else
		{
			printf("你猜对了!\\n");
			break;
		}
	} 
}

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

int main(void)
{
	int input = 0;
	srand((unsigned int)time(NULL));//设置游戏的生成器
	do
	{
		//menu
		menu();
		printf("请选择:>");
		scanf("%d", &input);
		
		switch(input)
		{
			case 1:
				game();
				break;
			case 0:
				printf("退出\\n");
				break;
			default:
				printf("error!\\n");
				break;
		}
	}while(input);
	
	return 0;
}

结果如下图

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

c语言猜数字

c语言设计猜数字游戏

c语言猜数游戏编程

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

Java猜数字游戏(附C语言)

猜数字游戏程序设计