【C语言】猜数字小游戏详细教程

大家好!我是同学〖森〗,一名计算机爱好者,今天让我们进入小游戏开发模式。若有错误,请多多指教。小主使用的是VS2019编译器。

由于小主是大一学生,知识掌握水平有限,代码可能会有写漏洞和不足,仅供借鉴。

目录

大家好!我是同学〖森〗,一名计算机爱好者,今天让我们进入小游戏开发模式。若有错误,请多多指教。小主使用的是VS2019编译器。

游戏效果

1.首页面

2.模式选择页面 

3.游戏页面

 4.成功页面

 项目源码分享

分步讲解

一、主函数

 1)system("COLOR 0A");

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

3)system("cls");        //清屏

4) gotoxy(54, 25)                //光标定位

5)Sleep()

 6)exit(0);

二、pattern子函数

1)goto语句

三、简单模式

游戏设置思路

四、魔鬼模式

游戏设置思路 


游戏效果

先带大家看下游戏效果,

1.首页面


2.模式选择页面 

3.游戏页面


 4.成功页面

 项目源码分享

注: VS2019编译器不能用scanf,若想用要在第一行加上下面的代码

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>

void gotoxy(short x, short y);	//将光标移动到指定位置

void date();		//时间函数

void Menu();		//游戏首页面

void menu1();		//游戏模式选择页面

void menu2();		//魔鬼模式页面

void menu3();		//变态模式页面

void quit();		//游戏结束页面

void fault();		//错选提示

void win();			//获胜页面

void fail();		//失败页面

void game1();		//简单模式

void game2();		//正常模式

void game3();		//魔鬼模式

void game4();		//变态模式

void pattern();		//模式选择程序

int main()
{
	
	system("COLOR 0A");
	int input = 0;
	srand((unsigned int)time(0));
	do
	{
		system("cls");		//清屏
		date();				//打印时间。
		Menu();				//打印菜单
		gotoxy(54, 25);		//将光标定位
		printf("请选择->");
		while (scanf("%d", &input) != EOF)
		{
			getchar();
			if (input == 1 || input == 2)
				break;
			fault();
			Sleep(1500);

			system("cls");		//清屏
			date();				//打印时间。
			Menu();				//打印菜单
			gotoxy(54, 25);		//将光标定位
			printf("请选择->");

		}

		switch (input)
		{
		case 1:
			pattern();
			break;
		//case 2:
		//	system("cls");		//清屏
		//	date();
		//	rule();
		//	break;
		case 2:
			system("cls");		//清屏
			quit();
			Sleep(3000);
			exit(0);
			break;
		//default:
		//	//system("cls");		//清屏
		//	fault();
		//	Sleep(1500);
		//	break;
		}

	} while (1);
	return 0;
}

void gotoxy(short x, short y)
{
	COORD coord = { x, y };
	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}

void date() //显示当前日期
{
	printf("\n当前日期:");
	system("date/t");
	printf("当前时间:");
	system("time/t");

}

void Menu() {
	printf("\n########################################################################################################################\n");
	printf("\n▓                                              *  欢迎进入猜数字小游戏  *                                            ▓\n");
	printf("\n########################################################################################################################\n");
	printf("\n                             ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");
	printf("                            |◆|******|◆|                                     |◆|******|◆|\n");
	printf("                            |◆|******|◆|       ☆ 开始游戏    请按 1         |◆|******|◆|\n");
	printf("                            |◆|******|◆|       ☆ 退出游戏    请按 2         |◆|******|◆|\n");
	printf("                            |◆|******|◆|                                     |◆|******|◆|\n");
	printf("                             ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");
	printf("\n########################################################################################################################\n");
	printf("\n▓                                               *************************                                             ▓\n");
	printf("\n########################################################################################################################\n");

}

void menu1() {
	printf("\n########################################################################################################################\n");
	printf("\n▓                                                     * 欢迎使用 *                                                    ▓\n");
	printf("\n########################################################################################################################\n");
	printf("\n                              ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");
	printf("                            |◆|******|◆|                                     |◆|******|◆|\n");
	printf("                            |◆|******|◆|       ☆ 简单模式    请按 1         |◆|******|◆|\n");
	printf("                            |◆|******|◆|       ☆ 正常模式    请按 2         |◆|******|◆|\n");
	printf("                            |◆|******|◆|       ☆ 魔鬼模式    请按 3         |◆|******|◆|\n");
	printf("                            |◆|******|◆|       ☆ 变态模式    请按 4         |◆|******|◆|\n");
	printf("                            |◆|******|◆|                                     |◆|******|◆|\n");
	printf("                              ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");
	printf("\n########################################################################################################################\n");
	printf("\n▓                                               *************************                                             ▓\n");
	printf("\n########################################################################################################################\n");

}

//*******************************************************************************************************************
//game3页面

void menu2()
{
	system("cls");		//清屏
	date();				//打印时间。
	printf("\n########################################################################################################################\n");
	printf("\n▓                                                 * 欢迎进入魔鬼模式 *                                                ▓\n");
	printf("\n########################################################################################################################\n");
	printf("\n▓                            ☆规则:系统随机生成一组0到9不重复的数,具体生成几个由玩家设定                           ▓\n");
	printf("\n▓                            ☆规则:玩家需要输入和系统顺序一致且数字相同的数,即可获胜。                             ▓\n");
	printf("\n########################################################################################################################\n");
	printf("\n▓                            ☆提示:A表示数字和位置都正确,B代表只有数字正确,顺序不对。                             ▓\n");
	printf("\n▓                            ☆提示:   字母前面的数字表示个数                                                        ▓\n");
	printf("\n########################################################################################################################\n");

}

//*******************************************************************************************************************
//game4页面

void menu3()
{
	system("cls");		//清屏
	date();				//打印时间。
	printf("\n########################################################################################################################\n");
	printf("\n▓                                                 * 欢迎进入魔鬼模式 *                                                ▓\n");
	printf("\n########################################################################################################################\n");
	printf("\n▓                            ☆规则:系统随机生成一组0到19不重复的数,具体生成几个由玩家设定                          ▓\n");
	printf("\n▓                            ☆规则:玩家需要输入和系统顺序一致且数字相同的数,即可获胜。                             ▓\n");
	printf("\n########################################################################################################################\n");
	printf("\n▓                            ☆提示:A表示数字和位置都正确,B代表只有数字正确,顺序不对。                             ▓\n");
	printf("\n▓                            ☆提示:   字母前面的数字表示个数                                                        ▓\n");
	printf("\n########################################################################################################################\n");

}

//*******************************************************************************************************************
//结束页面

void quit()
{

	printf("\n\n");
	printf("########################################################################################################################\n");
	printf("###                                                                                                                  ###\n");
	printf("###   \t\t\t||================================================================||\t\t\t     ###\n");
	printf("###   \t\t\t||                         *猜数字小游戏*                         ||\t\t\t     ###\n");
	printf("###   \t\t\t||================================================================||\t\t\t     ###\n");
	printf("###   \t\t\t||                      ☆☆☆☆☆☆☆☆☆☆                      ||\t\t\t     ###\n");
	printf("###   \t\t\t||                      ☆                ☆                      ||\t\t\t     ###\n");
	printf("###   \t\t\t||                ☆☆    欢迎玩家下次挑战    ☆☆                ||\t\t\t     ###\n");
	printf("###   \t\t\t||                      ☆                ☆                      ||\t\t\t     ###\n");
	printf("###   \t\t\t||                      ☆☆☆☆☆☆☆☆☆☆                      ||\t\t\t     ###\n");
	printf("###   \t\t\t||                                                                ||\t\t\t     ###\n");
	printf("###   \t\t\t||================================================================||\t\t\t     ###\n");
	printf("###   \t\t\t||================================================================||\t\t\t     ###\n");
	printf("###                                                                                                                  ###\n");
	printf("########################################################################################################################\n");

}

//*******************************************************************************************************************
//错选提示
void fault()
{
	printf("\n\n                                     ***********************************************                                      \n");
	printf("                                     ▓    $#$      选择错误,重新选择      $#$     ▓\n");
	printf("\n                                     ***********************************************                                      \n");

}

//*******************************************************************************************************************
//成功页面

void win()
{
	printf("\n\n\n\n\n\n");
	printf("    \t\t\t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
	printf("    \t\t\t|#|                                                          |#|\n");
	printf("    \t\t\t|#|                    ☆☆☆☆☆☆☆☆☆☆                  |#|\n");
	printf("    \t\t\t|#|                    ☆                ☆                  |#|\n");
	printf("    \t\t\t|#|             ☆☆     恭喜你,挑战成功!   ☆☆           |#|\n");
	printf("    \t\t\t|#|                    ☆                ☆                  |#|\n");
	printf("    \t\t\t|#|                    ☆☆☆☆☆☆☆☆☆☆                  |#|\n");
	printf("\t\t\t|#|                                                          |#|\n");
	printf("\t\t\t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
	system("COLOR 0A");
}

//*******************************************************************************************************************
//失败页面
void fail()
{
	printf("\n\n\n\n\n\n");
	printf("    \t\t\t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
	printf("    \t\t\t|#|                                                          |#|\n");
	printf("    \t\t\t|#|                    ☆☆☆☆☆☆☆☆☆☆                  |#|\n");
	printf("    \t\t\t|#|                    ☆                ☆                  |#|\n");
	printf("    \t\t\t|#|             ☆☆         挑战失败!       ☆☆           |#|\n");
	printf("    \t\t\t|#|                    ☆                ☆                  |#|\n");
	printf("    \t\t\t|#|                    ☆☆☆☆☆☆☆☆☆☆                  |#|\n");
	printf("\t\t\t|#|                                                          |#|\n");
	printf("\t\t\t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");

}

//*******************************************************************************************************************
//简单模式

void game1()
{
	system("cls");		//清屏
	date();				//打印时间。
	printf("\n########################################################################################################################\n");
	printf("\n▓                                                 * 欢迎进入简单模式 *                                                ▓\n");
	printf("\n▓                                        * 在1-100之间系统会随机生成一个数字 *                                        ▓\n");
	printf("\n▓                                        *           请用户猜该数字          *                                        ▓\n");
	printf("\n########################################################################################################################\n");

	int n = rand() % 100 + 1;
	int guess = 0;
	while (1)
	{
		printf("\n▓#$请猜数字:>");
		scanf("%d", &guess);
		if (guess < n)
		{
			printf("\n                                        ****************************************                                        \n");
			printf("\n                                        ▓        #$    猜小了    $#          ▓\n");
			printf("\n                                        ****************************************                                        \n");
		}
		else if (guess > n)
		{
			printf("\n                                        ****************************************                                        \n");
			printf("\n                                        ▓        #$    猜大了    $#          ▓\n");
			printf("\n                                        ****************************************                                        \n");
		}
		else
		{
			system("COLOR 04");
			system("cls");		//清屏
			date();				//打印时间。
			win();
			break;
		}
	}

}

//*******************************************************************************************************************
//正常模式

void game2()
{
LOOP:date();				//打印时间。
	system("COLOR A0");
	system("cls");		//清屏
	date();				//打印时间。
	printf("\n########################################################################################################################\n");
	printf("\n▓                                                 * 欢迎进入正常模式 *                                                ▓\n");
	printf("\n########################################################################################################################\n");
	printf("\n▓                                               * 提醒:这是个镜像世界 *                                              ▓\n");
	printf("\n########################################################################################################################\n");

	int n = rand() % 100 + 1;
	int guess = 0;
	int i = 0, k = 1, s;
	printf("\n▓#$请输入挑战次数:>");
	scanf("%d", &s);

	for (i = 0; i < s; i++)
	{
		printf("\n▓#$请猜数字:>");
		scanf("%d", &guess);
		if (guess < n)
		{
			printf("\n                                        ****************************************                                        \n");
			printf("\n                                        ▓        #$    猜大了    $#          ▓\n");
			printf("\n                                        ****************************************                                        \n");
		}
		else if (guess > n)
		{
			printf("\n                                        ****************************************                                        \n");
			printf("\n                                        ▓        #$    猜小了    $#          ▓\n");
			printf("\n                                        ****************************************                                        \n");
		}
		else
		{
			system("COLOR 04");
			system("cls");		//清屏
			date();				//打印时间。
			win();
			k = 0;
			break;
		}
	}
	if (k)
	{
		system("cls");		//清屏
		date();				//打印时间。
		win();
		Sleep(3000);
		printf("\n                                      ************************************                                      \n");
		printf("\n                                      ▓    $#$  嘻嘻,逗你呢!  $#$    ▓\n");
		printf("\n                                      ************************************                                       \n");
		Sleep(3000);
		goto LOOP;
	}
}

//*******************************************************************************************************************
//魔鬼模式

void game3()
{
	int acount, bcount, n = 0, i, j, k = 0, flag, a[10], b[10];


	do
	{
		menu2();
		printf("\n▓ #$请输入要猜几个数字(1<n<10):\n");
		while (n <= 1 || n > 10)
			scanf("%d", &n);
		flag = 0;
		for (i = 0; i < n; i++)
		{
			a[i] = rand() % 10;			//每次产生0-9范围内任意的一个随机数字并存到数组a中
		}
		for (i = 0; i < n - 1; i++)
		{
			for (j = i + 1; j < n; j++)
			{
				if (a[i] == a[j])	//判断数组a中是否有相同数字
				{
					flag = 1;		//若有上述情况则标志位置1
					break;
				}
			}
		}
		//for (i = 0; i < n; i++)
		//	printf("%d ", a[i]);
		//printf("\n");

	} while (flag == 1);		//若标志位为1则重新分配数据

	do
	{
		k++;		//记录猜数字的次数
		acount = 0;		 //每次猜的过程中位置和数字都正确的个数
		bcount = 0;		 //每次猜的过程中位置不正确但数字正确的个数、
		printf("\n▓#$请猜%d个数,用空格分开:>", n);
		for (i = 0; i < n; i++)
		{
			scanf("%d", &b[i]);		//输入猜测的数据到数组b中
			getchar();

		}
		for (i = 0; i < n; i++)
			for (j = 0; j < n; j++)
			{
				if (a[i] == b[i])	//检测输入的数据与计算机分配的数据相同且位置相同的个数
				{
					acount++;
					break;
				}
				if (a[i] == b[j] && i != j)	//检测输入的数据与计算机分配的数据相同但位置不同的个数
				{
					bcount++;
					break;
				}
			}
		printf("▓#$提示:%dA , %dB\n\n", acount, bcount);
		if (acount == n)
		{
			system("COLOR 04");
			system("cls");		//清屏
			date();				//打印时间。
			win();
			break;
		}
	} while (1);
}

//*******************************************************************************************************************
//变态模式

void game4()
{
	int acount, bcount, i, j, k = 0, flag, a[20], b[20], n = 0;
	do
	{
		menu3();
		printf("\n▓ #$请输入要猜几个数字(5<n<20):\n");
		while (n <= 5 || n >= 20)
			scanf("%d", &n);
		flag = 0;
		for (i = 0; i < n; i++)
		{
			a[i] = rand() % 20;			//每次产生0-19范围内任意的一个随机数字并存到数组a中
		}
		for (i = 0; i < n - 1; i++)
		{
			for (j = i + 1; j < n; j++)
			{
				if (a[i] == a[j])	//判断数组a中是否有相同数字
				{
					flag = 1;		//若有上述情况则标志位置1
					break;
				}
			}
		}
		//for (i = 0; i < n; i++)
		//	printf("%d ", a[i]);
		//printf("\n");

	} while (flag == 1);		//若标志位为1则重新分配数据

	do
	{
		k++;		//记录猜数字的次数
		acount = 0;		 //每次猜的过程中位置和数字都正确的个数
		bcount = 0;		 //每次猜的过程中位置不正确但数字正确的个数、
		printf("\n▓#$请猜%d个数,用空格分开:>", n);
		for (i = 0; i < n; i++)
		{
			scanf("%d", &b[i]);		//输入猜测的数据到数组b中
			getchar();

		}
		for (i = 0; i < n; i++)
			for (j = 0; j < n; j++)
			{
				if (a[i] == b[i])	//检测输入的数据与计算机分配的数据相同且位置相同的个数
				{
					acount++;
					break;
				}
				if (a[i] == b[j] && i != j)	//检测输入的数据与计算机分配的数据相同但位置不同的个数
				{
					bcount++;
					break;
				}
			}
		printf("▓#$提示:%dA , %dB\n\n", acount, bcount);
		if (acount == n)
		{
			system("COLOR 04");
			system("cls");		//清屏
			date();				//打印时间。
			win();
			break;
		}
	} while (1);
}

//*******************************************************************************************************************
//模式选择页面

void pattern()
{
	int input1 = 0, n = 0;
	char s = 0;
	do
	{
		system("cls");		//清屏
		date();
		menu1();
		gotoxy(54, 25);
		printf("请选择->");

		while (scanf("%d", &input1) != EOF)
		{
			getchar();
			if (input1 >= 1 && input1 <= 4)
				break;
			fault();
			Sleep(1500);
			system("cls");		//清屏
			date();
			menu1();
			gotoxy(54, 25);
			printf("请选择->");
		}
		switch (input1)
		{
		case 1:
			game1();
			goto LINK;

		case 2:
			game2();
			goto LINK;
		case 3:
			game3();
			goto LINK;
		case 4:
			game4();
			goto LINK;

		}

	} while (1);
LINK:printf("\n\n                                     ***********************************************                                      \n");
	printf("                                     ▓    $#$  按ENTER键进入、返回主菜单  $#$     ▓\n");
	printf("\n                                     ***********************************************                                      \n");

	getchar();
	while ((s = getchar()) != '\n')
	{
		;
	}

}

分步讲解

以下为代码块,在编译器上不能执行,只用于理解

一、主函数

int main()
{
	
	system("COLOR 0A");        //改变字体背景颜色
	int input = 0;
	srand((unsigned int)time(NULL));    //设置随机种子
	do
	{
		system("cls");		//清屏
		date();				//打印时间。
		Menu();				//打印菜单
		gotoxy(54, 25);		//将光标定位
		printf("请选择->");
		while (scanf("%d", &input) != EOF)    //处理当用户输入信息为字母或其他数字的bug
		{
			getchar();
			if (input == 1 || input == 2)
				break;
			fault();
			Sleep(1500);            //程序停止运行,vs2019的单位是毫秒。

			system("cls");		//清屏
			date();				//打印时间。
			Menu();				//打印菜单
			gotoxy(54, 25);		//将光标定位
			printf("请选择->");

		}

		switch (input)    
		{
		case 1:
			pattern();            //进入模式选择页面
			break;
		
		case 2:
			system("cls");		//清屏
			quit();            //进入游戏结束页面
			Sleep(3000);
			exit(0);            //程序结束。
			break;
		
		}

	} while (1);        //能多次玩游戏
	return 0;
}

 1)system("COLOR 0A");

system头文件<stdlib.h>

        其中COLOR后面的0是背景色代号,A是前景色代号

颜色代号

0 黑色 1 蓝色 2 绿色 3 湖蓝色 4 红色 5 紫色 6 黄色 7 白色 8 灰色 9 淡蓝色 A 淡绿色 B 淡浅绿色 C 淡红色 D 淡紫色  E 淡黄色 F 亮白色

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

srand()函数用来设置算法的种子,time(NULL)返回当前的时间,先调用srand(time(NULL))是把当前的时间作为种子,使程序每次运行产生不同的随机数序列。

3)system("cls");        //清屏

4) gotoxy(54, 25)                //光标定位

1、在 Turbo C 或 Borland C 中可以使用 gotoxy 函数,包含在头文件 conio.h中。

2、而在 Visual C++ 或 GCC 中使用 gotoxy 函数,就需要把上面自定义的 gotoxy 函数写在自己的程序中。

下面这个 C 程序将在屏幕中第5行10列(横向为X,纵向为Y轴)中央输出“你好 陌生人”

#include <stdio.h>
#include <windows.h>
 
void gotoxy(short x, short y)
{
    COORD coord = {x, y};
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
 
int main(void) {
    gotoxy(10, 5);
    printf("你好 陌生人\n");
 
    return 0;
}

 来源于百度gotoxyhttps://baike.baidu.com/item/gotoxy/2986529?fr=aladdin

5)Sleep()

Sleep函数可以使计算机程序(进程,任务或线程)进入休眠,使其在一段时间内处于非活动状态。

windows下的Sleep函数,首字母大写  #include <windows.h>     参数usigned long类型,为毫秒数。

linux下的sleep函数,首字母小写   #include <unistd.h>  其参数为秒数。

sleep函数https://baike.baidu.com/item/Sleep%E5%87%BD%E6%95%B0

 6)exit(0);

exit(0)的意思指的是正常状态退出。

exit()就是退出,传入的参数是程序退出时的状态码,0表示正常退出,其他表示非正常退出。退出程序,括号中的0表示程序的退出返回代码,无实际意义。exit()就是退出 , 0就是返回的参数,  也可以返回 1  -1 等  你可以用来判断函数是否正确返回

二、pattern子函数

void pattern()
{
	int input1 = 0, n = 0;
	char s = 0;
	do
	{
		system("cls");		//清屏
		date();            //显示日期
		menu1();           
		gotoxy(54, 25);
		printf("请选择->");

		while (scanf("%d", &input1) != EOF)
		{
			getchar();
			if (input1 >= 1 && input1 <= 4)
				break;
			fault();
			Sleep(1500);
			system("cls");		//清屏
			date();
			menu1();
			gotoxy(54, 25);
			printf("请选择->");
		}
		switch (input1)
		{
		case 1:
			game1();
			goto LINK;

		case 2:
			game2();
			goto LINK;
		case 3:
			game3();
			goto LINK;
		case 4:
			game4();
			goto LINK;

		}

	} while (1);
LINK:printf("\n\n                                     ***********************************************                                      \n");
	printf("                                     ▓    $#$  按ENTER键进入、返回主菜单  $#$     ▓\n");
	printf("\n                                     ***********************************************                                      \n");

	getchar();
	while ((s = getchar()) != '\n')
	{
		;
	}

}

1)goto语句

goto (无条件转换语句)函数可以出现在程序的任意一条语句之前,

一般形式:

goto  标号 ;

标号 : 语句;

程序可直接由goto跳的标号的那一个语句。 

三、简单模式

void game1()
{
	system("cls");		//清屏
	date();				//打印时间。
	printf("\n########################################################################################################################\n");
	printf("\n▓                                                 * 欢迎进入简单模式 *                                                ▓\n");

	printf("\n▓                                        * 在1-100之间系统会随机生成一个数字 *                                        ▓\n");

	printf("\n▓                                        *           请用户猜该数字          *                                        ▓\n");
	printf("\n########################################################################################################################\n");

	int n = rand() % 100 + 1;        //去1——100之间的随机变量赋值给n
	int guess = 0;
	while (1)
	{
		printf("\n▓#$请猜数字:>");
		scanf("%d", &guess);
		if (guess < n)    //猜的数比系统产生的数小。
		{
			printf("\n                                        ****************************************                                        \n");
			printf("\n                                        ▓        #$    猜小了    $#          ▓\n");
			printf("\n                                        ****************************************                                        \n");
		}
		else if (guess > n)    //猜的数比系统产生的数大。
		{
			printf("\n                                        ****************************************                                        \n");
			printf("\n                                        ▓        #$    猜大了    $#          ▓\n");
			printf("\n                                        ****************************************                                        \n");
		}
		else        //猜对了,
		{
			system("COLOR 04");    //换颜色
			system("cls");		//清屏
			date();				//打印时间。
			win();
			break;
		}
	}

}

游戏设置思路

先由系统产生一个随机数。用个变量先存起来。再设个变量来存玩家猜的数,然后让再让这两数比较不同给出提示,相同则游戏通过。

注意:猜错了的提示不要弄反,猜错了之后不要结束程序要有循环让玩家继续猜。

四、魔鬼模式

void game3()
{
	int acount, bcount, n = 0, i, j, k = 0, flag, a[10], b[10];


	do
	{
		menu2();    //打印魔鬼模式的界面
		printf("\n▓ #$请输入要猜几个数字(1<n<10):\n");
		while (n <= 1 || n > 10)
			scanf("%d", &n);
		flag = 0;
		for (i = 0; i < n; i++)        //把随机生成的数存到数组a中
		{
			a[i] = rand() % 10;			//每次产生0-9范围内任意的一个随机数字并存到数组a中
		}
		for (i = 0; i < n - 1; i++)        //若有一样的数,重新分配数字。
		{
			for (j = i + 1; j < n; j++)
			{
				if (a[i] == a[j])	//判断数组a中是否有相同数字
				{
					flag = 1;		//若有上述情况则标志位置1
					break;
				}
			}
		}
		//for (i = 0; i < n; i++)    //用来打印出产生的a数组,
		//	printf("%d ", a[i]);
		//printf("\n");

	} while (flag == 1);		//若标志位为1则重新分配数据

	do
	{
		k++;		//记录猜数字的次数
		acount = 0;		 //每次猜的过程中位置和数字都正确的个数
		bcount = 0;		 //每次猜的过程中位置不正确但数字正确的个数、
		printf("\n▓#$请猜%d个数,用空格分开:>", n);
		for (i = 0; i < n; i++)
		{
			scanf("%d", &b[i]);		//输入猜测的数据到数组b中
			getchar();
		}
		for (i = 0; i < n; i++)
			for (j = 0; j < n; j++)
			{
				if (a[i] == b[i])	//检测输入的数据与计算机分配的数据相同且位置相同的个数
				{
					acount++;
					break;
				}
				if (a[i] == b[j] && i != j)	//检测输入的数据与计算机分配的数据相同但位置不同的个数
				{
					bcount++;
					break;
				}
			}
		printf("▓#$提示:%dA , %dB\n\n", acount, bcount);
		if (acount == n)        //玩家猜的数组与系统产生的一样,游戏通过
		{
			system("COLOR 04");
			system("cls");		//清屏
			date();				//打印时间。
			win();
			break;
		}
	} while (1);
}

1)游戏设置思路 

先让玩家输入一个数字作为产生数组a的个数,例如:输入5,就产生5的随机数并存到数组a中。

玩家在输入一组数存到数组b中,让数组b与a比较完全相同则游戏通过

提示A:顺序与数字相同        B顺序不对,但系统生成的随机数里有这个数字。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

同学〖森〗

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

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

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

打赏作者

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

抵扣说明:

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

余额充值