C++期末项目设计------制作一个游戏盒-程序员宅基地

技术标签: c++  游戏  项目开发  

目录

一、引言

二、项目简介

三、完整代码

四、参考资料

五、总结


一、引言

        经过了一个学期对C++的学习,也算是对C++有了些基本的了解。学期期末时老师给大家布置了个小组合作项目大作业,题材不限,自由发挥。集结小组成员一起讨论过后,最终决定制作一个游戏盒。


二、项目简介

  1. 项目名称:2172游戏盒(数字含义是21级7班第2小组制作的游戏盒)
  2. 项目版本:8.9.11(版本信息由开发中的修改次数定义:功能增加.界面优化.Debug)
  3. 项目结构:盒子为框架,游戏为内容
  4. 开发周期:一个星期
  5. 包含功能:账号登录注册程序;账号相互独立且可修改密码;6个风格不同的小游戏
  6. 开发人数:7人
  7. 项目分工:盒子架构(作者);游戏(六个组员每人开发一个游戏,目前共有六个游戏)
  8. 开发环境:VS2019
  9. 操作方法:在不关闭程序的前提下,初次进入应先注册账号,进到游戏盒界面后即可开始游玩,每个游戏都有一定的奖励机制,硬币的主要功能是“我是赌神”游戏内部的消费。

三、完整代码

注:前三个游戏参考了其他博主的代码并加以修改,后三个游戏是原创。

#include <iostream>
#include <string.h>
#include <iomanip>
#include <windows.h>   //sleep()的调用
#include <stdio.h>
#include<conio.h>   //带有getch()函数和system("cls")清屏功能的头文件
#include<time.h>   //用于处理日期和时间的类型和函数
#include<string>
#include <cstdlib>   //可以提供一些函数与符号常量,例如随机数的生成
#pragma warning(disable:4996)   //解决Visual Studio中strcpy不安全报错问题
using namespace std;
int x = 0;
int* X = &x;   //指针计数器
char Void[10000] = "\0";   //空数组,清空账号密码信息
int Key = 0;   //进入主程序的钥匙(关锁状态)
int KeyOut = 0;   //退出登录的钥匙(关锁状态)
int User;   //记录用户下标(注册与登录)
int User2;   //记录用户下标(找回密码)
int* Q1;   //指针记录游戏一雷霆战机中的得分
int* Q2;   //指针记录游戏二吃豆人中的被吃次数
int* Q3;   //指针记录游戏三贪吃蛇中的得分
//--------------------------------------------------------------------------------------------------------------
// 雷霆战机游戏中的全局变量
int score;   //游戏得分
//--------------------------------------------------------------------------------------------------------------
// 吃豆人游戏的全局变量
const int nn = 809;
struct Point { int x, y; };
int dali;
int fx[4] = { -1,27,1,-27 };
int fxfx[4][2] = { {0,-1},{1,0},{0,1},{-1,0} };
int dis[1000][1000]; //0:墙 1:有分的路 2:没分的路 3:怪物的家 
int changdi[30][27] = {
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0},
	{0,1,0,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0},
	{0,1,0,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0},
	{0,1,0,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0},
	{0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0},
	{0,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0},
	{0,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,0},
	{0,0,0,0,0,0,1,0,0,0,0,0,2,0,2,0,0,0,0,0,1,0,0,0,0,0,0},
	{0,0,0,0,0,0,1,0,0,0,0,0,2,0,2,0,0,0,0,0,1,0,0,0,0,0,0},
	{0,0,0,0,0,0,1,0,0,2,2,2,2,2,2,2,2,2,0,0,1,0,0,0,0,0,0},
	{0,0,0,0,0,0,1,0,0,2,0,0,0,3,0,0,0,2,0,0,1,0,0,0,0,0,0},
	{0,0,0,0,0,0,1,0,0,2,0,3,3,3,3,3,0,2,0,0,1,0,0,0,0,0,0},
	{2,2,2,2,2,2,1,2,2,2,0,3,3,3,3,3,0,2,2,2,1,2,2,2,2,2,2},
	{0,0,0,0,0,0,1,0,0,2,0,3,3,3,3,3,0,2,0,0,1,0,0,0,0,0,0},
	{0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0},
	{0,0,0,0,0,0,1,0,0,2,2,2,2,2,2,2,2,2,0,0,1,0,0,0,0,0,0},
	{0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0},
	{0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0},
	{0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0},
	{0,1,0,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0},
	{0,1,0,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0},
	{0,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0},
	{0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0},
	{0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0},
	{0,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,0},
	{0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0},
	{0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0},
	{0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
};
int xx, xx1, xx2, xx3, xx4, yy, yy5, yy2, yy3, yy4;
int now, now1, now2, now3, now4;
int gg1, gg2, gg3, gg4;
int fangx, nextfx, last1, last2, last3, last4;
int fenshu, guozi, guaitimer;
int T1, T2, t1, t2, stopped; //T:计时 t1:玩家速度 t2:怪物速度 
int ff = 0; //f:{0:继续 1:被吃 2:赢了 3:输了}
int beichi;
//--------------------------------------------------------------------------------------------------------------
// 贪吃蛇游戏的全局变量
#define high 20  //定义地图的高度 
#define width 30   //定义地图的宽度 
#define snake_maxlength 200  //蛇长最大值 
int snake_x[snake_maxlength], snake_y[snake_maxlength]; //蛇的坐标 
int snake_length;  //蛇现在的长度 
int map[high][width] = { 0 };  //初始化地图,0表示空格,1表示蛇身,2表示食物,3表示墙,4表示蛇头,现在地图中什么也没有 
int food_x, food_y; //食物的坐标 
int SCORE;  //本局分数 
char input;  //读取用户键入的字符 
char primeinput = '.';  //primeinput在input脱离wasd时,用来存储input 
int op = 100;   //速度控制全局变量
int Death = 0;
//--------------------------------------------------------------------------------------------------------------
// 猜数字游戏中的全局变量
int Guesstimes;   //猜测次数
//--------------------------------------------------------------------------------------------------------------
// 账户结构体
struct account
{
	char user[1000];   //用户名
	char password[1000];   //密码
	int coin;   //硬币
	int number;   //编号
	int award;   //奖励次数,主要用于恋爱测试器奖励次数的限定
};
//--------------------------------------------------------------------------------------------------------------
//定义结构体数组:
struct account peo[100];   //初设100人,可更改
//--------------------------------------------------------------------------------------------------------------
//隐藏光标
void HideCursor()
{
	CONSOLE_CURSOR_INFO cursor_info = { 1, 0 };
	SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
//--------------------------------------------------------------------------------------------------------------
//判断用户的输入是否合法,增强程序的健壮性:
float Check(int a)
{
	if (a == 0)   //针对字符和字符串
	{
		float m;
		if (cin >> m)
		{
			return m;
		}
		else
		{
			cout << "输入错误,请重新输入:";
			cin.clear();   //清除这个错误状态
			cin.sync();   //清理缓冲区内容
			cin.get();
			while (!(cin >> m))
			{
				cout << "输入错误,请重新输入:";
				cin.clear();   //清除这个错误状态
				cin.sync();   //清理缓冲区内容
				cin.get();
			}
			return m;
		}
	}
	else if (a == 1)  //针对字符和字符串以及特定的数字(1、2、0)
	{
		float m;
		float c;
		if (cin >> m)
		{
			while (1)
			{
				if (m == 1 || m == 2 || m == 0)
				{
					return m;
					break;
				}
				else
				{
					cout << "输入错误,请重新输入:";
					c = Check(1);   //递归调用,重新检测输入
					return c;
					break;
				}
			}
		}
		else
		{
			cout << "输入错误,请重新输入:";
			cin.clear();   //清除这个错误状态
			cin.sync();   //清理缓冲区内容
			cin.get();
			while (!(cin >> m))
			{
				cout << "输入错误,请重新输入:";
				cin.clear();   //清除这个错误状态
				cin.sync();   //清理缓冲区内容
				cin.get();
			}
			while (1)
			{
				if (m == 1 || m == 2 || m == 0)
				{
					return m;
					break;
				}
				else
				{
					cout << "输入错误,请重新输入:";
					c = Check(1);
					return c;
					break;
				}
			}
		}
	}
	else if (a == 2)   //针对字符和字符串以及特定的数字(1、2)
	{
		float m;
		float c;
		if (cin >> m)
		{
			while (1)
			{
				if (m == 1 || m == 2)
				{
					return m;
					break;
				}
				else
				{
					cout << "输入错误,请重新输入:";
					c = Check(2);
					return c;
					break;
				}
			}
		}
		else
		{
			cout << "输入错误,请重新输入:";
			cin.clear();   //清除这个错误状态
			cin.sync();//清理缓冲区内容
			cin.get();
			while (!(cin >> m))
			{
				cout << "输入错误,请重新输入:";
				cin.clear();   //清除这个错误状态
				cin.sync();   //清理缓冲区内容
				cin.get();
			}
			while (1)
			{
				if (m == 1 || m == 2)
				{
					return m;
					break;
				}
				else
				{
					cout << "输入错误,请重新输入:";
					a = Check(2);
					return a;
					break;
				}
			}
		}
	}
	else if (a == 3)   //针对字符和字符串以及特定的数字(1、2、3)
	{
		float m;
		float c;
		if (cin >> m)
		{
			while (1)
			{
				if (m == 1 || m == 2 || m == 3)
				{
					return m;
					break;
				}
				else
				{
					cout << "输入错误,请重新输入:";
					c = Check(3);
					return c;
					break;
				}
			}
		}
		else
		{
			cout << "输入错误,请重新输入:";
			cin.clear();   //清除这个错误状态
			cin.sync();   //清理缓冲区内容
			cin.get();
			while (!(cin >> m))
			{
				cout << "输入错误,请重新输入:";
				cin.clear();   //清除这个错误状态
				cin.sync();   //清理缓冲区内容
				cin.get();
			}
			while (1)
			{
				if (m == 1 || m == 2 || m == 3)
				{
					return m;
					break;
				}
				else
				{
					cout << "输入错误,请重新输入:";
					a = Check(3);
					return a;
					break;
				}
			}
		}
	}
	else if (a == 4)   //针对字符和字符串以及特定的数字(1、0)
	{
		float m;
		float c;
		if (cin >> m)
		{
			while (1)
			{
				if (m == 1 || m == 0)
				{
					return m;
					break;
				}
				else
				{
					cout << "输入错误,请重新输入:";
					c = Check(4);
					return c;
					break;
				}
			}
		}
		else
		{
			cout << "输入错误,请重新输入:";
			cin.clear();   //清除这个错误状态
			cin.sync();   //清理缓冲区内容
			cin.get();
			while (!(cin >> m))
			{
				cout << "输入错误,请重新输入:";
				cin.clear();   //清除这个错误状态
				cin.sync();   //清理缓冲区内容
				cin.get();
			}
			while (1)
			{
				if (m == 1 || m == 0)
				{
					return m;
					break;
				}
				else
				{
					cout << "输入错误,请重新输入:";
					a = Check(4);
					return a;
					break;
				}
			}
		}
	}
}
//--------------------------------------------------------------------------------------------------------------
//进度条
void Progress()
{
	int c = 1, d = 0;
	for (int i = 0; i < 50; i++)
	{
		cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
		cout << "\t\t\t\t+-------------------------------------------------+" << endl;
		cout << "\t\t\t\t|";
		for (int a = 0; a < i; a++)   //打印▋
		{
			cout << "▋";
		}
		for (int b = 49 - i; b > 0; b--)   //打印空格
		{
			cout << " ";
		}
		d += 2;   //进度数
		cout << "|  " << d << "%" << endl;
		cout << "\t\t\t\t+-------------------------------------------------+" << endl;
		cout << "\t\t\t\t               正在加载中,请稍后.";
		for (int j = 0; j < c % 6; j++)
		{
			cout << ".";
		}
		c++;
		cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
		Sleep(150);   //进度条读取速度
		if (i != 49)
		{
			system("cls");   //清屏
		}
	}
	Sleep(3000);
	system("cls");
}
//--------------------------------------------------------------------------------------------------------------
// 用户名规范系统
int NormalizeName(char name[1000], int n)
{
	int a = 0;   //计数器
	if (n <= 15)
	{
		for (int i = 0; i < n; i++)
		{
			if (name[i] <= 32 || name[i] == 127)   //为空格或其他特殊情况
			{
				break;
			}
			else
			{
				a++;
			}
		}
		if (a == n)
		{
			return 1;
		}
		else
		{
			return 0;
		}
	}
	else
	{
		return 0;
	}
}
//--------------------------------------------------------------------------------------------------------------
// 用户名查重系统
int CheckName(char name[1000])
{
	int a = 0;   //计数器
	if (x == 0)   //第一个注册的人无重复
	{
		return 1;
	}
	else
	{
		for (int i = 0; i < x; i++)
		{
			if (strcmp(name, peo[i].user) == 0)
			{
				break;
			}
			else
			{
				a++;
			}
		}
		if (a == x)   //用户名无重复
		{
			return 1;
		}
		else
		{
			return 0;
		}
	}
}
//--------------------------------------------------------------------------------------------------------------
// 密码规范系统
int NormalizePassword(char password[1000], int n)
{
	int a = 0;   //计数器
	if (n >= 6 && n <= 15)
	{
		for (int i = 0; i < n; i++)
		{
			if ((password[i] >= 48 && password[i] <= 57) || (password[i] >= 65 && password[i] <= 90) || (password[i] >= 97 && password[i] <= 122))   //为字母或数字
			{
				a++;
			}
			else
			{
				break;
			}
		}
		if (a == n)
		{
			return 1;
		}
		else
		{
			return 0;
		}
	}
	else
	{
		return 0;
	}
}
//--------------------------------------------------------------------------------------------------------------
// 密码找回系统
int RefoundPassword()
{
	while (1)
	{
		char Name2[1000];
		int Key1 = 0;
		cout << "请输入用户名:";
		cin >> Name2;
		for (int i = 0; i < *X; i++)   //逐个人员遍历
		{
			if (strcmp(Name2, peo[i].user) == 0)   //判断输入的用户名有无注册或是否正确
			{
				Key1 = 1;
				User2 = i;
			}
		}
		system("cls");   //清屏
		if (Key1 == 0)   //钥匙解锁失败
		{
			cout << "您的用户名未注册或输入错误!!!" << endl << endl;
			cout << "1.继续找回密码" << endl;
			cout << "2.退出系统" << endl;
			cout << "请输入数字实现对应功能:";
			int m2 = Check(2);   //只返回1、2
			cout << endl;
			if (m2 == 1)
			{
				system("cls");   //清屏
				continue;
			}
			else if (m2 == 2)
			{
				system("cls");   //清屏
				return 0;
			}
		}
		else if (Key1 == 1)   //钥匙解锁成功
		{
			cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
			cout << "\t\t\t\t\t\t     您的密码为:" << peo[User2].password << endl;
			Sleep(2000);
			system("pause");
			system("cls");   //清屏
			return 1;
		}
	}
}
//--------------------------------------------------------------------------------------------------------------
// 账号注册系统:
int Register()
{
	int key1 = 0;   //注册成功的钥匙
	int key2 = 0;   //用户名设置成功的钥匙
	int key3 = 0;   //密码设置成功钥匙
	int key4 = 0;   //退出程序的钥匙
	int h = 0;   //轮转片
	char recheck[100];
	peo[x].number = x + 1;   //标号
	peo[x].coin = 0;   //初始化用户硬币数 
	peo[x].award = 0;   //初始化用户奖励次数 
	while (1)   //创建用户名
	{
		cout << "请设置用户名(不超过15个字符,空格与汉字为非法字符):";
		cin.get();   //cin.getline前要吸收回车键
		cin.getline(peo[x].user, 1000);
		int n1 = strlen(peo[x].user);
		int p1 = NormalizeName(peo[x].user, n1);   //返回1用户名通过,返回0则不通过
		int p2 = CheckName(peo[x].user);   //返回1用户名通过,返回0则不通过
		if (p1 == 1 && p2 == 1)
		{
			key2 = 1;   //钥匙开锁,用户名设置成功
			break;
		}
		else
		{
			cout << endl << endl;
			cout << "用户名重复或非法!!!" << endl;
			cout << "1.重新设置用户名" << endl;
			cout << "2.退出注册" << endl;
			cout << "请输入数字实现对应功能:";
			int q = Check(2);   //只返回1、2
			cout << endl;
			if (q == 1)   //重新设置用户名
			{
				strcpy(peo[x].user, Void);   //清空输入的用户名
				system("cls");   //清屏
				continue;
			}
			else if (q == 2)    //退出注册
			{
				system("cls");   //清屏
				break;
			}
		}
	}
	cout << endl << endl;
	if (key2 == 1)
	{
		while (1)   //设置密码
		{
			system("cls");   //清屏
			cout << "请设置密码(只能为字母和数字,长度不小于6,不超过15):";
			if (h != 0)
			{
				cin.get();   //cin.getline前要吸收回车键
			}
			cin.getline(peo[x].password, 1000);
			//cout << peo[x].password << endl;
			int n2 = strlen(peo[x].password);
			int p3 = NormalizePassword(peo[x].password, n2);   //返回1密码通过,返回0则不通过
			if (p3 == 1)
			{
				key3 = 1;   //钥匙开锁,密码设置成功
			}
			else
			{
				cout << endl << endl;
				cout << "密码非法!!!" << endl;
				cout << "1.重新设置密码" << endl;
				cout << "2.退出注册" << endl;
				cout << "请输入数字实现对应功能:";
				int q = Check(2);   //只返回1、2
				cout << endl;
				if (q == 1)   //重新设置密码
				{
					strcpy(peo[x].password, Void);   //清空输入的密码
					cout << endl << endl;
					h++;
					continue;
				}
				else if (q == 2)    //退出注册
				{
					system("cls");   //清屏
					break;
				}
			}
			if (key3 == 1)
			{
				system("cls");   //清屏
				while (1)
				{
					cout << "请再次输入密码:";
					cin >> recheck;
					//cout << recheck << endl;
					if (strcmp(recheck, peo[x].password) == 0)
					{
						cout << endl;
						cout << "注册成功!!!" << endl << endl;
						(*X)++;
						key1 = 1;   //钥匙开锁,注册成功
						key4 = 1;   //钥匙开锁,退出设置用户名和密码的程序
						break;
					}
					else
					{
						cout << endl;
						cout << "两次密码不一致!!!" << endl;
						cout << "1.重新设置密码" << endl;
						cout << "2.退出注册" << endl;
						cout << "请输入数字实现对应功能:";
						int z = Check(2);   //只返回1、2
						cout << endl;
						if (z == 1)
						{
							strcpy(recheck, Void);   //清空输入的密码
							strcpy(peo[x].password, Void);   //清空输入的密码
							key3 = 0;   //关锁
							h++;
							break;
						}
						else if (z == 2)
						{
							system("cls");   //清屏
							key4 = 1;   //钥匙开锁,退出设置用户名和密码的程序
							break;
						}
					}
				}
			}
			if (key4 == 1)
			{
				break;
			}
		}
	}
	if (key1 == 1)
	{
		cout << "是否直接进入程序?" << endl;
		cout << "1.是" << endl;
		cout << "2.否" << endl;
		cout << "请输入数字实现对应功能:";
		int m = Check(2);   //只返回1、2
		cout << endl;
		if (m == 1)
		{
			User = x - 1;
			return m;
		}
		else if (m == 2)
		{
			return m;
		}
	}
}
//--------------------------------------------------------------------------------------------------------------
// 账号登录系统
int SignIn()
{
	char Name[1000], Password[1000];
	int Key1 = 0;   //判断用户名正误的钥匙
	int Key2 = 0;   //判断密码正误的钥匙
	while (1)
	{
		cout << "请输入用户名:";   //有BUG
		cin >> Name;
		for (int i = 0; i < *X; i++)   //逐个人员遍历
		{
			if (strcmp(Name, peo[i].user) == 0)   //判断输入的用户名有无注册或是否正确
			{
				Key1 = 1;
				User = i;
			}
		}
		if (Key1 == 0)   //钥匙解锁失败
		{
			cout << "您的用户名未注册或输入错误!!!" << endl << endl;
			cout << "1.继续登录" << endl;
			cout << "2.退出登录" << endl;
			cout << "请输入数字实现对应功能:";
			int m1 = Check(2);   //只返回1、2
			cout << endl;
			if (m1 == 1)
			{
				system("cls");   //清屏
				continue;
			}
			else if (m1 == 2)
			{
				system("cls");   //清屏
				return 0;
			}
		}
		else if (Key1 == 1)   //钥匙解锁成功
		{
			cout << "请输入密码:";
			cin >> Password;
			if (strcmp(Password, peo[User].password) == 0)   //判断输入的密码是否正确
			{
				Key2 = 1;   //钥匙开锁,成功登陆
			}
			if (Key2 == 0)   //密码错误
			{
				cout << endl << "您输入的密码有误" << endl;
				cout << "1.重新登录" << endl;
				cout << "2.找回密码" << endl;
				cout << "3.退出登录" << endl;
				cout << "请输入数字实现对应功能:";
				int m2 = Check(3);   //只返回1、2、3
				cout << endl;
				if (m2 == 1)
				{
					Key1 = 0;   //重新登陆关锁
					system("cls");   //清屏
					continue;
				}
				else if (m2 == 2)
				{
					Key1 = 0;   //重新登陆关锁
					system("cls");   //清屏
					int r = RefoundPassword();
					if (r == 1)
					{
						cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
						cout << "\t\t\t\t\t\t     密码找回成功!!!" << endl;
						Sleep(2000);
						system("cls");   //清屏
						continue;
					}
					else if (r == 0)
					{
						cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
						cout << "\t\t\t\t\t\t     密码找回失败!!!" << endl;
						Sleep(2000);
						system("cls");   //清屏
						continue;
					}
				}
				else if (m2 == 3)
				{
					system("cls");   //清屏
					return 0;
				}
			}
			else if (Key2 == 1)   //密码正确
			{
				system("cls");   //清屏
				cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
				cout << "\t\t\t\t\t\t      登录成功!!!" << endl;
				Sleep(2000);   //延时2秒
				return 1;
			}
		}
	}
}
//--------------------------------------------------------------------------------------------------------------
// 游戏部分
//1.雷霆战机
/*=============== all the structures ===============*/
 
typedef struct Frame
{
	COORD position[2];
	int flag;
}Frame;
 
/*=============== all the functions ===============*/
 
void SetPos(COORD a)// set cursor 
{
	HANDLE out = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleCursorPosition(out, a);
}
 
void SetPos(int i, int j)// set cursor
{
	COORD pos = { i, j };
	SetPos(pos);
}
 
 
//把第y行,[x1, x2) 之间的坐标填充为 ch
void drawRow(int y, int x1, int x2, char ch)
{
	SetPos(x1, y);
	for (int i = 0; i <= (x2 - x1); i++)
		cout << ch;
}
 
//在a, b 纵坐标相同的前提下,把坐标 [a, b] 之间填充为 ch
void drawRow(COORD a, COORD b, char ch)
{
	if (a.Y == b.Y)
		drawRow(a.Y, a.X, b.X, ch);
	else
	{
		SetPos(0, 25);
		cout << "error code 01:无法填充行,因为两个坐标的纵坐标(x)不相等";
		system("pause");
	}
}
 
//把第x列,[y1, y2] 之间的坐标填充为 ch
void drawCol(int x, int y1, int y2, char ch)
{
	int y = y1;
	while (y != y2 + 1)
	{
		SetPos(x, y);
		cout << ch;
		y++;
	}
}
 
//在a, b 横坐标相同的前提下,把坐标 [a, b] 之间填充为 ch
void drawCol(COORD a, COORD b, char ch)
{
	if (a.X == b.X)
		drawCol(a.X, a.Y, b.Y, ch);
	else
	{
		SetPos(0, 25);
		cout << "error code 02:无法填充列,因为两个坐标的横坐标(y)不相等";
		system("pause");
	}
}
 
//左上角坐标、右下角坐标、用row填充行、用col填充列
void drawFrame(COORD a, COORD  b, char row, char col)
{
	drawRow(a.Y, a.X + 1, b.X - 1, row);
	drawRow(b.Y, a.X + 1, b.X - 1, row);
	drawCol(a.X, a.Y + 1, b.Y - 1, col);
	drawCol(b.X, a.Y + 1, b.Y - 1, col);
}
 
void drawFrame(int x1, int y1, int x2, int y2, char row, char col)
{
	COORD a = { x1, y1 };
	COORD b = { x2, y2 };
	drawFrame(a, b, row, col);
}
 
void drawFrame(Frame frame, char row, char col)
{
	COORD a = frame.position[0];
	COORD b = frame.position[1];
	drawFrame(a, b, row, col);
}
 
void drawPlaying()
{
	drawFrame(0, 0, 48, 24, '=', '|');//	draw map frame;
	drawFrame(49, 0, 79, 4, '-', '|');//		draw output frame
	drawFrame(49, 4, 79, 9, '-', '|');//		draw score frame
	drawFrame(49, 9, 79, 20, '-', '|');//	draw operate frame
	drawFrame(49, 20, 79, 24, '-', '|');//	draw other message frame
	SetPos(52, 6);
	cout << "得分:";
	SetPos(52, 7);
	cout << "称号:";
	SetPos(52, 10);
	cout << "操作方式:";
	SetPos(52, 12);
	cout << "  a,s,d,w 控制移动,j开炮";
	SetPos(52, 14);
	cout << "  p 暂停游戏";
	SetPos(52, 16);
	cout << "  e 退出游戏";
}
 
//在[a, b)之间产生一个随机整数
int random(int a, int b)
{
	int c = (rand() % (a - b)) + a;
	return c;
}
 
//在两个坐标包括的矩形框内随机产生一个坐标
COORD random(COORD a, COORD b)
{
	int x = random(a.X, b.X);
	int y = random(a.Y, b.Y);
	COORD c = { x, y };
	return c;
}
 
bool  judgeCoordInFrame(Frame frame, COORD spot)
{
	if (spot.X >= frame.position[0].X)
		if (spot.X <= frame.position[1].X)
			if (spot.Y >= frame.position[0].Y)
				if (spot.Y <= frame.position[0].Y)
					return true;
	return false;
}
 
void printCoord(COORD a)
{
	cout << "( " << a.X << " , " << a.Y << " )";
}
 
void printFrameCoord(Frame a)
{
	printCoord(a.position[0]);
	cout << " - ";
	printCoord(a.position[1]);
}
 
int drawMenu()
{
	SetPos(30, 1);
	cout << "P l a n e  W a r";
	drawRow(3, 0, 79, '-');
	drawRow(5, 0, 79, '-');
	SetPos(28, 4);
	cout << "w 和 s 选择, j 确定";
	SetPos(15, 11);
	cout << "1. 简单的敌人";
	SetPos(15, 13);
	cout << "2. 冷酷的敌人";
	drawRow(20, 0, 79, '-');
	drawRow(22, 0, 79, '-');
	SetPos(47, 11);
	cout << "简单的敌人:";
	SetPos(51, 13);
	cout << "简单敌人有着较慢的移动速度。";
	SetPos(24, 21);
	cout << "说明:得分超过200即为胜利";
	int j = 11;
	SetPos(12, j);
	cout << ">>";
	while (1)
	{
		if (_kbhit())
		{
			char x = _getch();
			switch (x)
			{
			case 'w':
			{
				if (j == 13)
				{
					SetPos(12, j);
					cout << " ";
					j = 11;
					SetPos(12, j);
					cout << ">>";
					SetPos(51, 13);
					cout << "            ";
					SetPos(47, 11);
					cout << "简单的敌人:";
					SetPos(51, 13);
					cout << "简单敌人有较慢的移动速度,比较容易对付";
				}
				break;
			}
			case 's':
			{
				if (j == 11)
				{
					SetPos(12, j);
					cout << " ";
					j = 13;
					SetPos(12, j);
					cout << ">>";
					SetPos(51, 13);
					cout << "              ";
					SetPos(47, 11);
					cout << "冷酷的敌人:";
					SetPos(51, 13);
					cout << "冷酷的敌人移动速度较快,不是很好对付哟。";
				}
				break;
			}
			case 'j':
			{
				if (j == 8)	return 1;
				else return 2;
			}
			}
		}
	}
}
/*================== the Game Class ==================*/
 
class Game
{
public:
	COORD position[10];
	COORD bullet[10];
	Frame enemy[8];
	int rank;
	int rankf;
	string title;
	int flag_rank;
 
	Game();
 
	//初始化所有
	void initPlane();
	void initBullet();
	void initEnemy();
 
	//初始化其中一个
	//void initThisBullet( COORD );
	//void initThisEnemy( Frame );
 
	void planeMove(char);
	void bulletMove();
	void enemyMove();
 
	//填充所有
	void drawPlane();
	void drawPlaneToNull();
	void drawBullet();
	void drawBulletToNull();
	void drawEnemy();
	void drawEnemyToNull();
 
	//填充其中一个
	void drawThisBulletToNull(COORD);
	void drawThisEnemyToNull(Frame);
 
	void Pause();
	void Playing();
	int judgePlane();
	void judgeEnemy();
 
	void Shoot();
 
	void GameOver();
	void printScore();
};
 
Game::Game()
{
	initPlane();
	initBullet();
	initEnemy();
	score = 0;
	rank = 25;
	rankf = 0;
	flag_rank = 0;
}
 
void Game::initPlane()
{
	COORD centren = { 39, 22 };
	position[0].X = position[5].X = position[7].X = position[9].X = centren.X;
	position[1].X = centren.X - 2;
	position[2].X = position[6].X = centren.X - 1;
	position[3].X = position[8].X = centren.X + 1;
	position[4].X = centren.X + 2;
	for (int i = 0; i <= 4; i++)
		position[i].Y = centren.Y;
	for (int i = 6; i <= 8; i++)
		position[i].Y = centren.Y + 1;
	position[5].Y = centren.Y - 1;
	position[9].Y = centren.Y - 2;
}
 
void Game::drawPlane()
{
	for (int i = 0; i < 9; i++)
	{
		SetPos(position[i]);
		if (i != 5)
			cout << "O";
		else if (i == 5)
			cout << "|";
	}
}
 
void Game::drawPlaneToNull()
{
	for (int i = 0; i < 9; i++)
	{
		SetPos(position[i]);
		cout << " ";
	}
}
 
void Game::initBullet()
{
	for (int i = 0; i < 10; i++)
		bullet[i].Y = 30;
}
 
void Game::drawBullet()
{
	for (int i = 0; i < 10; i++)
	{
		if (bullet[i].Y != 30)
		{
			SetPos(bullet[i]);
			cout << "^";
		}
	}
}
 
void Game::drawBulletToNull()
{
	for (int i = 0; i < 10; i++)
		if (bullet[i].Y != 30)
		{
			COORD pos = { bullet[i].X, bullet[i].Y + 1 };
			SetPos(pos);
			cout << " ";
		}
}
 
void Game::initEnemy()
{
	COORD a = { 1, 1 };
	COORD b = { 45, 15 };
	for (int i = 0; i < 8; i++)
	{
		enemy[i].position[0] = random(a, b);
		enemy[i].position[1].X = enemy[i].position[0].X + 3;
		enemy[i].position[1].Y = enemy[i].position[0].Y + 2;
	}
}
 
void Game::drawEnemy()
{
	for (int i = 0; i < 8; i++)
		drawFrame(enemy[i].position[0], enemy[i].position[1], '-', '|');
}
 
void Game::drawEnemyToNull()
{
	for (int i = 0; i < 8; i++)
	{
		drawFrame(enemy[i].position[0], enemy[i].position[1], ' ', ' ');
	}
}
 
void Game::Pause()
{
	SetPos(61, 2);
	cout << "               ";
	SetPos(61, 2);
	cout << "暂停中...";
	char c = _getch();
	while (c != 'p')
		c = _getch();
	SetPos(61, 2);
	cout << "         ";
}
 
void Game::planeMove(char x)
{
	if (x == 'a')
		if (position[1].X != 1)
			for (int i = 0; i <= 9; i++)
				position[i].X -= 2;
 
	if (x == 's')
		if (position[7].Y != 23)
			for (int i = 0; i <= 9; i++)
				position[i].Y += 1;
 
	if (x == 'd')
		if (position[4].X != 47)
			for (int i = 0; i <= 9; i++)
				position[i].X += 2;
 
	if (x == 'w')
		if (position[5].Y != 3)
			for (int i = 0; i <= 9; i++)
				position[i].Y -= 1;
}
 
void Game::bulletMove()
{
	for (int i = 0; i < 10; i++)
	{
		if (bullet[i].Y != 30)
		{
			bullet[i].Y -= 1;
			if (bullet[i].Y == 1)
			{
				COORD pos = { bullet[i].X, bullet[i].Y + 1 };
				drawThisBulletToNull(pos);
				bullet[i].Y = 30;
			}
 
		}
	}
}
 
void Game::enemyMove()
{
	for (int i = 0; i < 8; i++)
	{
		for (int j = 0; j < 2; j++)
			enemy[i].position[j].Y++;
 
		if (24 == enemy[i].position[1].Y)
		{
			COORD a = { 1, 1 };
			COORD b = { 45, 3 };
			enemy[i].position[0] = random(a, b);
			enemy[i].position[1].X = enemy[i].position[0].X + 3;
			enemy[i].position[1].Y = enemy[i].position[0].Y + 2;
		}
	}
}
 
int Game::judgePlane()
{
	for (int i = 0; i < 8; i++)
	{
		for (int j = 0; j < 9; j++)
		{
			if (judgeCoordInFrame(enemy[i], position[j]))
			{
				SetPos(62, 1);
				cout << "坠毁";
				drawFrame(enemy[i], '+', '+');
				Sleep(1000);
				GameOver();
				return 1;
			}
		}
	}
}
 
void Game::drawThisBulletToNull(COORD c)
{
	SetPos(c);
	cout << " ";
}
 
void Game::drawThisEnemyToNull(Frame f)
{
	drawFrame(f, ' ', ' ');
}
 
void Game::judgeEnemy()
{
	for (int i = 0; i < 8; i++)
		for (int j = 0; j < 10; j++)
			if (judgeCoordInFrame(enemy[i], bullet[j]))
			{
				score += 5;
				drawThisEnemyToNull(enemy[i]);
				COORD a = { 1, 1 };
				COORD b = { 45, 3 };
				enemy[i].position[0] = random(a, b);
				enemy[i].position[1].X = enemy[i].position[0].X + 3;
				enemy[i].position[1].Y = enemy[i].position[0].Y + 2;
				drawThisBulletToNull(bullet[j]);
				bullet[j].Y = 30;
			}
}
 
void Game::Shoot()
{
	for (int i = 0; i < 10; i++)
		if (bullet[i].Y == 30)
		{
			bullet[i].X = position[5].X;
			bullet[i].Y = position[5].Y - 1;
			break;
		}
}
 
void Game::printScore()
{
	if (score == 30 && flag_rank == 0)
	{
		rank -= 3;
		flag_rank = 1;
	}
 
	else if (score == 70 && flag_rank == 1)
	{
		rank -= 5;
		flag_rank = 2;
	}
	else if (score == 110 && flag_rank == 2)
	{
		rank -= 5;
		flag_rank = 3;
	}
	int x = rank / 5;
	SetPos(60, 6);
	cout << score;
 
	if (rank != rankf)
	{
		SetPos(60, 7);
		if (x == 5)
			title = "初级飞行员";
		else if (x == 4)
			title = "中级飞行员";
		else if (x == 3)
			title = "高级飞行员";
		else if (x == 2)
			title = "王牌飞行员";
		cout << title;
	}
	rankf = rank;
}
 
void Game::Playing()
{
	//HANDLE MFUN;
	//MFUN= CreateThread(NULL, 0, MusicFun, NULL, 0, NULL); 
 
	drawEnemy();
	drawPlane();
 
	int flag_bullet = 0;
	int flag_enemy = 0;
 
	while (1)
	{
		Sleep(8);
		if (_kbhit())
		{
			char x = _getch();
			if ('a' == x || 's' == x || 'd' == x || 'w' == x)
			{
				drawPlaneToNull();
				planeMove(x);
				drawPlane();
				int ggg = judgePlane();
				if (ggg == 1)
				{
					return;
				}
			}
			else if ('p' == x)   //暂停
				Pause();
			else if ('j' == x)   //开炮
				Shoot();
			else if ('e' == x)
			{
				//CloseHandle(MFUN);
				break;
			}
 
		}
		/* 处理子弹 */
		if (0 == flag_bullet)
		{
			bulletMove();
			drawBulletToNull();
			drawBullet();
			judgeEnemy();
		}
		flag_bullet++;
		if (5 == flag_bullet)
			flag_bullet = 0;
 
		/* 处理敌人 */
		if (0 == flag_enemy)
		{
			drawEnemyToNull();
			enemyMove();
			drawEnemy();
			int gggg = judgePlane();
			if (gggg == 1)
			{
				return;
			}
		}
		flag_enemy++;
		if (flag_enemy >= rank)
			flag_enemy = 0;
 
		/* 输出得分 */
		printScore();
	}
	return;
}
 
void Game::GameOver()
{
	system("cls");
	COORD p1 = { 28,9 };
	COORD p2 = { 53,15 };
	drawFrame(p1, p2, '=', '|');
	SetPos(36, 12);
	string str = "Game Over!";
	for (int i = 0; i < str.size(); i++)
	{
		Sleep(80);
		cout << str[i];
	}
	Sleep(1000);
	system("cls");
	drawFrame(p1, p2, '=', '|');
	SetPos(31, 11);
	cout << "击落敌机:" << score / 5 << " 架";
	SetPos(31, 12);
	cout << "得  分:" << score;
	SetPos(31, 13);
	cout << "获得称号:" << title;
	Sleep(3000);
	return;
}
 
/*================== the main function ==================*/
void PlaneWar()
{
	//游戏介绍
	cout << "***********************************************    雷   霆   战   机   *************************************************" << endl;
	cout << " 游戏说明:" << endl;
	cout << "    ① 玩家通过按键w、s、a、d进行战机的移动,a为向左移动,s为向下移动,d为向右移动,w为向上移动,通过按键j进行开炮操作;" << endl;
	cout << "    ② 玩家需要躲避敌方战机,若有碰撞,则您的战机坠毁,游戏结束;" << endl;
	cout << "    ③ 玩家通过开炮可击落敌方战机,每击落一架战机,可获得5分;" << endl;
	cout << "    ④ 游戏得分超过200分即为游戏胜利,将获得30枚硬币的奖励,否则即为失败。" << endl << endl << endl;
	Sleep(3000);
	system("pause");
	system("cls");
	//游戏准备
	srand((int)time(0));	//随机种子
	Game game;
	int a = drawMenu();
	if (a == 2)
		game.rank = 20;
	system("cls");
	drawPlaying();
	game.Playing();   //开始游戏
	Q1 = &score;
	return;
}
//--------------------------------------------------------------------------------------------------------------
//2.吃豆人
void color(int a)//颜色函数
{
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), a);
}
void gotoxy(int x, int y)//位置函数(行为x 列为y)
{
	COORD pos;
	pos.X = 2 * y;
	pos.Y = x;
	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
 
void begin() {
	system("cls");
	color(11); cout << "       ★";
	color(10); cout << "吃豆人";
	color(11); cout << "★\n\n";
	color(7);
	cout << "     请将窗口开至";
	color(11); cout << "全屏" << endl;
	color(7); cout << "  正在初始化,请耐心等待";
 
 
	for (int i = 0; i <= nn; i++)
		for (int j = 1; j <= nn; j++)
			dis[i][j] = 900;
	//待定
	for (int i = 0; i <= nn; i++) {
		for (int j = 0; j <= 3; j++) {
			if (i + fx[j] >= 0 && i + fx[j] <= nn) {
				int k = i + fx[j], xx = k / 27, yy = k % 27, kk;
				if (changdi[i / 27][i % 27] && changdi[xx][yy]) dis[i][k] = kk = 1;
			}
		}
	}
	//看不懂的部分
	for (int k = 0; k <= nn; k++)if (changdi[k]) {
		for (int i = 0; i <= nn; i++)if (changdi[i])
			for (int j = 0; j <= nn; j++)if (changdi[j])
				if (dis[i][j] > dis[i][k] + dis[k][j])
					dis[i][j] = dis[i][k] + dis[k][j];
		if (k % 80 == 0) { color(13); gotoxy(3, 12); cout << "│"; }
		if (k % 80 == 20) { color(13); gotoxy(3, 12); cout << "╱"; }
		if (k % 80 == 40) { color(13); gotoxy(3, 12); cout << "─"; }
		if (k % 80 == 60) { color(13); gotoxy(3, 12); cout << "╲"; }
		if (k % 60 == 0) { color(11); gotoxy(5, k / 60); cout << "●"; }
	}
 
	cout << "游戏操作如下:";
}
 
void shuru() {
	char ch;
	cout << "请在输入完成后点击回车";
	cin >> ch;
	if ((ch == '1') | (ch == 'j'))
		if ((changdi[xx + fxfx[0][0]][yy + fxfx[0][1]] == 1) | (changdi[xx + fxfx[0][0]][yy + fxfx[0][1]] == 2)) fangx = nextfx = 0;
		else nextfx = 0;
	else if ((ch == '2') | (ch == 'k'))
		if ((changdi[xx + fxfx[1][0]][yy + fxfx[1][1]] == 1) | (changdi[xx + fxfx[1][0]][yy + fxfx[1][1]] == 2)) fangx = nextfx = 1;
		else nextfx = 1;
	else if ((ch == '3') | (ch == 'l'))
		if ((changdi[xx + fxfx[2][0]][yy + fxfx[2][1]] == 1) | (changdi[xx + fxfx[2][0]][yy + fxfx[2][1]] == 2)) fangx = nextfx = 2;
		else nextfx = 2;
	else if ((ch == '5') | (ch == 'i'))
		if ((changdi[xx + fxfx[3][0]][yy + fxfx[3][1]] == 1) | (changdi[xx + fxfx[3][0]][yy + fxfx[3][1]] == 2)) fangx = nextfx = 3;
		else nextfx = 3;
	else if ((ch == '0') | (ch == 's')) stopped = (stopped + 1) % 2;
	else if ((ch == '4') | (ch == 'a')) t1++;
	else if ((ch == '7') | (ch == 'q')) t2++;
	else if (((ch == '6') | (ch == 'd')) && t1 - 1 > 0) t1--;
	else if (((ch == '9') | (ch == 'e')) && t2 - 1 > 0) t2--;
	else if (ch == 'g') dali = (dali + 1) % 2;
}
 
void reset() {
	system("cls"); color(7);
	gotoxy(2, 30); cout << "控制方向:I/J/K/L";
	gotoxy(4, 30); cout << "你的速度:4/6";
	gotoxy(6, 30); cout << "怪物速度:7/9";
	xx = 22; yy = 13;
	xx1 = xx2 = xx3 = xx4 = 14;
	yy5 = 11;    yy2 = 12;    yy3 = 14;    yy4 = 15;
	now = 607;    now1 = 389;    now2 = 390;    now3 = 392;   now4 = 393;
	for (int k = 0; k <= nn; k++) {
		int i = k / 27, j = k % 27;
		gotoxy(i, j);
		if (changdi[i][j] == 1) { color(7); cout << "·"; }
		else if (!changdi[i][j]) { color(1); cout << "■"; }
		if (j == 26) { gotoxy(i, 27); color(7); cout << i; }
	}
	gotoxy(0, 0);
	gotoxy(xx, yy); color(14); cout << "●";
	gotoxy(xx1, yy5); color(4); cout << "◆";
	gotoxy(xx2, yy2); color(5); cout << "◆";
	gotoxy(xx3, yy3); color(3); cout << "◆";
	gotoxy(xx4, yy4); color(2); cout << "◆";
	fangx = 0; T1 = T2 = guaitimer = 0; t1 = 75; t2 = 100;
	stopped = 0; fenshu = 0; guozi = 237;
	gg1 = gg2 = gg3 = gg4 = 0; dali = 0;
	gotoxy(14, 30);
	cout << "          ";
}
 
void move1() {
	int xxx, yyy;
	xxx = xx + fxfx[nextfx][0]; yyy = yy + fxfx[nextfx][1];
	if (changdi[xxx][yyy]) {
		if (changdi[xxx][yyy] == 1) { fenshu += 1; changdi[xxx][yyy] = 2; }
		color(14);
		gotoxy(xx, yy); printf("  ");
		gotoxy(xxx, yyy); if (!dali) printf("◎"); else printf("☆");
		now = xx * 27 + yy; xx = xxx; yy = yyy;
		fangx = nextfx;
	}
	else {
		if (xx == 13 && yy == 0 && fangx == 0) { xxx = xx; yyy = 26; }
		else if (xx == 13 && yy == 26 && fangx == 2) { xxx = xx; yyy = 0; }
		else { xxx = xx + fxfx[fangx][0]; yyy = yy + fxfx[fangx][1]; }
		if (changdi[xxx][yyy]) {
			if (changdi[xxx][yyy] == 1) { fenshu += 1; changdi[xxx][yyy] = 2; }
			color(14);
			gotoxy(xx, yy); cout << "  ";
			gotoxy(xxx, yyy);
			if (!dali) cout << "◎";
			else cout << "☆";
			now = xx * 27 + yy; xx = xxx; yy = yyy;
		}
	}
	color(7);
	//gotoxy(15,28); printf("(%d,%d)     ",x,y); gotoxy(16,28); printf("now:%d     ",now); gotoxy(17,28); printf("%d (%d,%d) ",fangx,fxfx[fangx][0],fxfx[fangx][1]); gotoxy(18,28); printf("(%d,%d) changdi:%d  ",xx,yy,changdi[xx][yy]);
}
 
void move2() {
	int haha, minhaha, xxx, yyy, chi = 0;
	if (gg1) {
		minhaha = 2147483647;
		if ((now1 % 27 == 0) | (now1 % 27 == 26)) haha = last1;
		else if (!dali) {
			for (int i = 0; i <= 3; i++)
				if (changdi[(now1 + fx[i]) / 27][(now1 + fx[i]) % 27] && i != last1 && minhaha > dis[now1 + fx[i]][now])
				{
					minhaha = dis[now1 + fx[i]][now]; haha = i;
				}
		}
		else {
			minhaha = -minhaha;
			for (int i = 0; i <= 3; i++)
				if (changdi[(now1 + fx[i]) / 27][(now1 + fx[i]) % 27] && i != last1 && minhaha < dis[now1 + fx[i]][now])
				{
					minhaha = dis[now1 + fx[i]][now]; haha = i;
				}
		}
		xxx = now1 / 27; yyy = now1 % 27; gotoxy(xxx, yyy);
		if (changdi[xxx][yyy] == 1) cout << "·";
		else cout << "  ";
		now1 += fx[haha]; last1 = (haha + 2) % 4;
		xxx = now1 / 27; yyy = now1 % 27; gotoxy(xxx, yyy);
		color(4); cout << "◆";
		color(7);
		if (xxx == xx && yyy == yy) {
			if (!dali) chi += 1;
			else {
				guozi += 50;
				fenshu += 50;
				last1 = 0;
				gotoxy(now1 / 27, now1 % 27);
				if (changdi[now1 / 27][now1 % 27] == 1) printf("·"); else printf("  ");
				now1 = 389;
			}
		}
	}
	if (gg2) {
		int k;
		minhaha = 2147483647;
		if ((fangx == 0) | (fangx == 2)) {
			k = yy + (fxfx[fangx][1]) * 3;
			while ((k > 25) | !changdi[xx][k]) k--;
			while ((k < 1) | !changdi[xx][k]) k++;
		}
		else {
			k = xx + (fxfx[fangx][0]) * 3;
			while ((k > 28) | !changdi[k][yy]) k--;
			while ((k < 1) | !changdi[k][yy]) k++;
		}
		if ((fangx == 0) | (fangx == 2)) k = xx * 27 + k; else k = k * 27 + yy;
 
		if ((now2 % 27 == 0) | (now2 % 27 == 26)) haha = last2;
		else if (!dali)
			for (int i = 0; i <= 3; i++) {
				if (changdi[(now2 + fx[i]) / 27][(now2 + fx[i]) % 27] && i != last2 && minhaha > dis[now2 + fx[i]][k])
				{
					minhaha = dis[now2 + fx[i]][k]; haha = i;
				}
			}
		else {
			minhaha = -minhaha;
			for (int i = 0; i <= 3; i++) {
				if (changdi[(now2 + fx[i]) / 27][(now2 + fx[i]) % 27] && i != last2 && minhaha < dis[now2 + fx[i]][k])
				{
					minhaha = dis[now2 + fx[i]][k]; haha = i;
				}
			}
		}
 
		xxx = now2 / 27; yyy = now2 % 27; gotoxy(xxx, yyy);
		if (changdi[xxx][yyy] == 1) cout << "·";
		else cout << "  ";
		now2 += fx[haha]; last2 = (haha + 2) % 4; gotoxy(18, 30);
		xxx = now2 / 27; yyy = now2 % 27; gotoxy(xxx, yyy); color(5); cout << "◆";
		color(7);
		if (xxx == xx && yyy == yy) {
			if (!dali) chi += 1;
			else {
				guozi += 50;
				fenshu += 50;
				last2 = 0;
				gotoxy(now2 / 27, now2 % 27);
				if (changdi[now2 / 27][now2 % 27] == 1) cout << "·"; else cout << "       ";
				now2 = 390;
			}
		}
	}
	if (gg3) {
		int k;
		minhaha = 2147483647;
		if ((fangx == 0) | (fangx == 2)) {
			k = yy + (fxfx[(fangx + 1) % 4][1]) * 3;
			while ((k > 25) | !changdi[xx][k]) k--;
			while ((k < 1) | !changdi[xx][k]) k++;
		}
		else {
			k = xx + (fxfx[(fangx + 1) % 4][0]) * 3;
			while ((k > 28) | !changdi[k][yy]) k--;
			while ((k < 1) | !changdi[k][yy]) k++;
		}
		if ((fangx == 0) | (fangx == 2)) k = xx * 27 + k; else k = k * 27 + yy;
 
		if ((now3 % 27 == 0) | (now3 % 27 == 26)) haha = last3;
		else if (!dali)
			for (int i = 0; i <= 3; i++) {
				if (changdi[(now3 + fx[i]) / 27][(now3 + fx[i]) % 27] && i != last3 && minhaha > dis[now3 + fx[i]][k])
				{
					minhaha = dis[now3 + fx[i]][k]; haha = i;
				}
			}
		else {
			minhaha = -minhaha;
			for (int i = 0; i <= 3; i++) {
				if (changdi[(now3 + fx[i]) / 27][(now3 + fx[i]) % 27] && i != last3 && minhaha < dis[now3 + fx[i]][k])
				{
					minhaha = dis[now3 + fx[i]][k]; haha = i;
				}
			}
		}
 
		xxx = now3 / 27; yyy = now3 % 27; gotoxy(xxx, yyy);
		if (changdi[xxx][yyy] == 1) cout << "·"; else cout << "          ";
		now3 += fx[haha]; last3 = (haha + 2) % 4; gotoxy(18, 30);
		xxx = now3 / 27; yyy = now3 % 27;
		gotoxy(xxx, yyy); color(3); cout << "◆";
		color(7);
		if (xxx == xx && yyy == yy) {
			if (!dali) chi += 1;
			else {
				guozi += 50;
				fenshu += 50;
				last3 = 0;
				gotoxy(now3 / 27, now3 % 27);
				if (changdi[now3 / 27][now3 % 27] == 1) printf("·"); else printf("  ");
				now3 = 341;
			}
		}
	}
	if (chi) beichi++;
}
void ChiDouRen()
{
	Q2 = &beichi;
	system("color 07");   //设置背景色为黑色,字体颜色为黑色
	cout << "***********************************************    吃     豆     人   **************************************************" << endl;
	cout << " 游戏说明:" << endl;
	cout << "    ① 玩家通过按键I、J、K、L配合回车键进行移动,J为向左移动,K为向下移动,L为向右移动,I为向上移动;" << endl;
	cout << "    ② 游戏胜利条件为不被怪物吃掉并且吃满35个豆子;" << endl;
	cout << "    ③ 被怪物吃掉后游戏不会终止,但是将失去游戏奖励,判定为游戏失败。" << endl << endl << endl;
	Sleep(3000);
	system("pause");
	system("cls");
	begin();
	int jixu = 1;
	reset();
	string bb[4] = { "●","①","②","③" }; color(7);
	gotoxy(12, 12); cout << "进入倒计时开始!";
	color(12);
	for (int i = 3; i >= 0; i--) { if (i == 0) color(11); gotoxy(13, 13); cout << bb[i]; Sleep(1000); }
	gotoxy(12, 12); cout << "      ";
	gotoxy(13, 13); cout << " ";
	color(7);
	while (!ff) {
		Sleep(1);
		gotoxy(10, 30); cout << "你最后的得分是:" << fenshu;//gotoxy(行,列)坐标
		gotoxy(8, 30); cout << "怪物速度: " << 300 - t2;
		gotoxy(9, 30); cout << "你的速度: " << 300 - t1;
		gotoxy(15, 30); cout << "被吃次数:" << beichi;
		if (_kbhit()) shuru();//这个这个
		if (stopped) continue;
		T1 = (T1 + 1) % t1; T2 = (T2 + 1) % t2;
		if ((T1 % t1 == 0 && now + fx[fangx] > 0) && (now + fx[fangx] < nn)) move1();
		if (T2 % t2 == 0) {
			if (guaitimer <= 8) {
				if (guaitimer == 0) gg1 = 1;
				if (guaitimer == 8) gg2 = 1;
				guaitimer++;
			}
			if (!gg3 && fenshu >= 30) gg3 = 1;
			move2();
		}
		if (fenshu == guozi || fenshu == 35)ff = 2;
	}
	if (ff == 2) {
		Sleep(2000);
		system("cls");
		cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
		cout << "\t\t\t\t\t\t   恭喜您吃完了35个豆子!!!" << endl;
		Sleep(2000);
		cout << "\t\t\t\t\t\t    您一共被怪物吃掉了" << beichi << " 次";
		Sleep(2000);
	}
}
//--------------------------------------------------------------------------------------------------------------
//3.贪吃蛇
void setdata()   //数据的初始化函数 
{
	snake_x[0] = high / 2; snake_y[0] = width / 3;   //初始化蛇头,在地图内的位置随意 
	snake_x[1] = high / 2; snake_y[1] = width / 3 + 1;  //初始化蛇身 
	snake_length = 2;   //蛇的原始尺寸(一格头一格身子) 
	food_x = high / 3, food_y = width / 3;  //初始化食物的位置,在地图内位置随意 
	SCORE = 0;
	int i, j;
	map[snake_x[0]][snake_y[0]] = 4;  //蛇头 
	map[snake_x[1]][snake_y[1]] = 1;  //蛇身 
	map[food_x][food_y] = 2;   //食物 
	for (i = 0; i < high; i++)   //墙 
		for (j = 0; j < width; j++)
			if (i == 0 || j == 0 || i == high - 1 || j == width - 1)
				map[i][j] = 3;
}
void Gotoxy(int x, int y)   //画面打印
{
	HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
	COORD pos;
	pos.X = x;
	pos.Y = y;
	SetConsoleCursorPosition(handle, pos);
}
void show()
{
	Gotoxy(0, 0);
	int i, j;
	for (i = 0; i < high; i++)
	{
		for (j = 0; j < width; j++)
		{
			if (map[i][j] == 0)
				cout << " ";
			else if (map[i][j] == 1)
				cout << "+";
			else if (map[i][j] == 2)
				cout << "@";
			else if (map[i][j] == 3)
				cout << "*";
			else if (map[i][j] == 4)
				cout << "0";
		}
		printf("\n");
	}
	printf("得分:%d", SCORE);
}
 
int updatewithoutinput()   //与输入无关的更新 
{
 
	int i;
	if (snake_x[0] == food_x && snake_y[0] == food_y)
	{
		SCORE++;
		srand((unsigned)time(NULL));  //srand和rand函数连用产生随机数,一般以时间作为产生随机数的种子 
		food_x = rand() % (high - 3) + 1;
		food_y = rand() % (width - 3) + 1;
		map[food_x][food_y] = 2;
		snake_length++;
	}
	if (snake_x[0] == 0 || snake_x[0] == high - 1 || snake_y[0] == 0 || snake_y[0] == width - 1)  //碰墙了 
	{
		cout << "游戏结束!" << endl;
		Sleep(2000);
		return 1;
	}
	for (i = 1; i < snake_length; i++)  //碰到自己了 ,遍历蛇身找是否和蛇头重复  
		if (snake_x[0] == snake_x[i] && snake_y[0] == snake_y[i])
		{
			cout << "游戏结束" << endl;
			Sleep(2000);
			return 1;
		}
}
int updatewithinput()
{
	int i = 1;
	if (kbhit())
		input = getch();
 
	if (input != '\0')  //input!='\0'(空)表示当有输入的时候开始更新画面,这是游戏开始的条件 
	{
		if (input == 'w' || input == 'a' || input == 's' || input == 'd')
		{
			if (primeinput == 'w' && input == 's' || primeinput == 's' && input == 'w' || primeinput == 'a' && input == 'd' || primeinput == 'd' && input == 'a')
			{
				system("cls");
				cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
				cout << "\t\t\t\t\t\t    世上没有回头路!!!" << endl;
				Sleep(2000);
				Death++;
				return 1;
			}
			else
				primeinput = input;
		}
		else if (primeinput == '.')
			primeinput = 'w';
		else if (input == 'p')
		{
			while (1)
			{
				char op;
				op = getch();
				if (op == 'p')
				{
					input = '.';
					break;
				}
			}
		}
		else if (input == '+')
		{
			if (op >= 50)  //表示最快速度为25 ms刷新一次 
				op = op / 2;
		}
		else if (input == '-')
		{
			if (op <= 1000) //表示最慢速度为 2000 ms刷新一次 
				op = op * 2;
		}
		map[snake_x[snake_length - 1]][snake_y[snake_length - 1]] = 0;//蛇走过一格,蛇尾处变为空格 
		for (i = snake_length - 1; i > 0; i--)
		{
			snake_x[i] = snake_x[i - 1]; //走过一格后蛇身的坐标覆盖前面的坐标 (从后往前覆盖,蛇头也会被蛇身覆盖) 
			snake_y[i] = snake_y[i - 1];
			map[snake_x[i]][snake_y[i]] = 1;
		}
 
	}
	if (primeinput == 'w')
		snake_x[0]--;
	else if (primeinput == 's')
		snake_x[0]++;
	else if (primeinput == 'a')
		snake_y[0]--;
	else if (primeinput == 'd')
		snake_y[0]++;
	map[snake_x[0]][snake_y[0]] = 4;  //蛇头的坐标覆盖前面的坐标 
}
void tanchishe()   //起始函数
{
	cout << "************************************************    贪    吃    蛇    **************************************************" << endl;
	cout << " 游戏说明:" << endl;
	cout << "    ① 玩家通过按键w、a、s、d控制蛇的移动,w为向上移动,s为向下移动,a为向左移动,d为向右移动;" << endl;
	cout << "    ② 每吃到一次果实,蛇身长度+1,得分+1;" << endl;
	cout << "    ③ 撞到墙壁,即蛇死亡,来到结算界面;" << endl;
	cout << "    ④ 单局得分超过15分,则为游戏胜利,可获得20枚硬币奖励!" << endl;
	cout << " 警告:请勿自噬(蛇头反向蛇身移动,撞向蛇身不算),自噬则蛇永久死亡,无法再次游玩游戏!!!" << endl << endl << endl;
	Sleep(3000);
	system("pause");
	system("cls");
	setdata();//数据初始化
	Q3 = &SCORE;
	while (1)
	{
		show();  //画面打印 
		Sleep(op);
		int a = updatewithoutinput();   //与输入无关的更新 
		int b = updatewithinput();      //与输入有关的更新 
		if (a == 1 || b == 1)
		{
			break;
		}
	}
	return;
}
//--------------------------------------------------------------------------------------------------------------
//4.猜数字
void caishuzi()
{
	cout << "***********************************************    猜     数     字    *************************************************" << endl;
	cout << " 游戏说明:" << endl;
	cout << "    ① 游戏会出现一个1~100的随机隐藏整数,玩家需要根据技巧猜测数字;" << endl;
	cout << "    ② 游戏很简单,但是如果加上猜测的次数限定呢?" << endl;
	cout << "    ③ 若猜测次数不超过8次,则游戏胜利,玩家可获得20硬币的奖励,否则即为失败;" << endl;
	cout << "    ④ 若玩家运气好到爆炸,一次就猜中,则视为中了彩票,将获得200硬币的奖励!!!" << endl;
	cout << " 注:若一直猜不正确,可按888退出游戏" << endl << endl << endl;
	Sleep(3000);
	system("pause");
	system("cls");   //清屏 
	Guesstimes = 0;   //记录猜测次数,方便程序判定游戏是否胜利
	srand((unsigned)time(NULL));   //依据时间的变化产生不同的随机数种子
	int NUM = rand() % 100 + 1;   //随机数发生器,随机生成1~100的整型数字
	while (1)	//永真循环 
	{
		cout << "***********************************************    猜     数     字    *************************************************";
		cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
		cout << "\t\t\t\t\t\t请输入您猜测的数字(整数):";
		int Value = Check(0);   //规范用户的输入,保证输入的为数字
		if (Value == 888)
		{
			system("cls");
			cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
			cout << "\t\t\t\t\t\t   您已强制退出!!!" << endl;
			Sleep(1000);
			system("cls");
			Guesstimes = 999;
			break;
		}
		if (Value > NUM)
		{
			system("cls");
			cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
			cout << "\t\t\t\t\t\t   猜测过大!!!" << endl;
			Sleep(1000);
			system("cls");
			Guesstimes++;
			continue;
		}
		else if (Value < NUM)
		{
			system("cls");
			cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
			cout << "\t\t\t\t\t\t   猜测过小!!!" << endl;
			Sleep(1000);
			system("cls");
			Guesstimes++;
			continue;
		}
		else if (Value == NUM)
		{
			system("cls");
			cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
			cout << "\t\t\t\t\t\t   恭喜您,猜对啦!!!" << endl;
			Sleep(2000);
			system("cls");
			Guesstimes++;
			cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
			cout << "\t\t\t\t\t\t   您猜测的次数为:" << Guesstimes << endl;
			Sleep(2000);
			system("cls");
			break;
		}
	}
	return;
}
//--------------------------------------------------------------------------------------------------------------
//5.恋爱指数测试器
int LianAiCeShi()
{
	int N, SUMS = 0;
	cout << "*****************************************   恋   爱   指   数   测   试   器   *****************************************" << endl;
	cout << " 测试说明:" << endl;
	cout << "    ① 您需要对接下来的问题进行如实回答,你的心越纯,测试的结果越正确;" << endl;
	cout << "    ② 下列问题如果是则输入2,如果不是则输入1,一点也没感觉则输入0;" << endl;
	cout << "    ③ 加油,面对你自己!*-o-*" << endl;
	cout << " 注:测试共包括10道题,一旦进入测试不可退出" << endl << endl << endl;
	Sleep(3000);
	system("pause");
	system("cls");
	cout << "进入测试请按3,退出测试请按4。" << endl;
Enter:
	cout << "请给出你的选择:";
	int choose = Check(0);
	if (choose == 3) {
		system("cls");   //清屏
		cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
		cout << "\t\t\t\t\t\t      开始测试!!!" << endl;
		Sleep(2000);
		system("cls");
	}
	else if (choose == 4) {
		system("cls");   //清屏
		cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
		cout << "\t\t\t\t\t\t    您已退出测试!!!" << endl;
		Sleep(2000);
		system("cls");
		return 0;
	}
	else {
		system("cls");   //清屏
		cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
		cout << "\t\t\t\t\t\t无效输入,请重新选择!!!" << endl;
		Sleep(2000);
		system("cls");
		goto Enter;
	}
	cout << "question one:" << "你是否面对异性时会心跳加速?" << endl;
	N = Check(1);
	SUMS += N;
	cout << endl;
	cout << "question two:" << "你是否看到异性被欺负时会很愤怒?" << endl;
	N = Check(1);
	SUMS += N;
	cout << endl;
	cout << "question three:" << "你是否惧怕见到异性的家长?" << endl;
	N = Check(1);
	SUMS += N;
	cout << endl;
	cout << "question four:" << "你是否经常刷一位异性的社交平台?" << endl;
	N = Check(1);
	SUMS += N;
	cout << endl;
	cout << "question five:" << "想不想和Ta用情侣头像?" << endl;
	N = Check(1);
	SUMS += N;
	cout << endl;
	cout << "question six:" << "和Ta邂逅过吗?" << endl;
	N = Check(1);
	SUMS += N;
	cout << endl;
	cout << "question seven:" << "吃过同一个饭碗里的东西吗?" << endl;
	N = Check(1);
	SUMS += N;
	cout << endl;
	cout << "question eight:" << "有过在梦里与Ta相遇吗?" << endl;
	N = Check(1);
	SUMS += N;
	cout << endl;
	cout << "question nine:" << "有为了等Ta一个人站在风雨中吗?" << endl;
	N = Check(1);
	SUMS += N;
	cout << endl;
	cout << "question ten:" << "想摸Ta的头发,牵TA的手吗?" << endl;
	N = Check(1);
	SUMS += N;
	system("cls");   //清屏
	cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
	cout << "\t\t\t\t\t\t  正在测评中,请稍等......" << endl;
	Sleep(3000);
	system("cls");
	if (SUMS >= 16 && SUMS <= 20)
	{
		cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
		cout << "\t\t\t你的恋爱指数为:A。你是一个深深爱着Ta的人,你往往会守着这份爱走下去^-^。" << endl;
		Sleep(5000);
		system("cls");
	}
	if (SUMS <= 15 && SUMS >= 12)
	{
		cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
		cout << "\t\t\t你的恋爱指数为:B。你是一个矛盾却又不失爱意的人,你的爱往往一波三折!-!。" << endl;
		Sleep(5000);
		system("cls");
	}
	if (SUMS <= 11 && SUMS >= 7)
	{
		cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
		cout << "\t\t    你的恋爱指数为:C。你是一个有点心思的人,你想表白,却又惧怕现实,你仍须努力o-o。" << endl;
		Sleep(5000);
		system("cls");
	}
	if (SUMS <= 6 && SUMS >= 0)
	{
		cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
		cout << "\t\t你的恋爱指数为:D。你是一个无暇无垢,不食人间烟火的人,想一路踏歌,但道路上仍需佳人陪伴+-+。" << endl;
		Sleep(5000);
		system("cls");
	}
	cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
	cout << "\t       人生在世,恍如昨世,孤独的身影终难走远,你的那个Ta就在不远方,就如漫天繁星,总有一颗属于你!" << endl;
	Sleep(2000);
	cout << "\t\t\t\t\t      快抓紧你身边的那个Ta ^-^oooooo" << endl << endl << endl;
	Sleep(3000);
	system("pause");
	peo[User].award++;
	return 1;
}
//--------------------------------------------------------------------------------------------------------------
//6.我是赌神(硬币下注游戏)
void Gambler()
{
	int GameCount = 0;//游戏次数 
	int dice1, dice2, dice3, sum;
	int key1 = 0;   //进入赌局的钥匙
	srand((unsigned int)time(NULL));   //依据时间生成随机数的种子
	cout << "***********************************************    我   是   赌   神   *************************************************" << endl;
	cout << " 赌场规则:" << endl;
	cout << "    ① 玩家必须缴纳5枚硬币来获取赌场通行证,并确保自己仍有剩余的硬币参与下注;" << endl;
	cout << "    ② 进入赌场后,玩家用硬币下注,随后会掷出三枚骰子,玩家需猜测三枚骰子之和为单数还是双数;" << endl;
	cout << "    ③ 猜中即可获得双倍奖励,否则将扣除双倍的硬币;" << endl;
	cout << "    ④ 若三枚骰子大小相同,则为大满贯,即无论您下的注是否猜中,您都将获得三倍奖励。" << endl;
	cout << " 警告:进入赌场的玩家至少需进行5轮赌注,若强制退出,则视为违约,将扣除您硬币总数的一半" << endl << endl << endl;
	Sleep(3000);
	system("pause");//暂停游戏并熄屏 
	system("cls");
	cout << "***********************************************    我   是   赌   神   *************************************************";
	cout << endl << endl << endl << endl << endl << endl << endl << endl << endl;
	cout << "\t\t\t\t\t      +--------------------------+" << endl;
	cout << "\t\t\t\t\t      |  是否进入赌场?          |" << endl;
	cout << "\t\t\t\t\t      |  1.进入(需缴纳5枚硬币) | " << endl;
	cout << "\t\t\t\t\t      |  2.退出赌场              |" << endl;
	cout << "\t\t\t\t\t      +--------------------------+" << endl;
	cout << "请输入数字实现对应的功能:";
	int k = Check(2);   //只返回1、2(是否进入赌场) 
	system("cls");   //清屏
	if (k == 1 && peo[User].coin > 5)
	{
		peo[User].coin -= 5;   //扣除5枚硬币作为入场券的费用
		key1 = 1;   //赌场开门
	}
	else if (k == 2)
	{
		cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
		cout << "\t\t\t\t\t\t     退出成功!!!" << endl;
		Sleep(3000);   //延时3秒
		return;
	}
	else if (peo[User].coin <= 5)
	{
		cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
		cout << "\t\t\t\t\t\t您的硬币不足,已强制退出" << endl;
		Sleep(3000);   //延时3秒
		return;
	}
	if (key1 == 1)
	{
		while (1)
		{
			if (peo[User].coin <= 0)   //判断硬币数量是否还能继续游戏
			{
				system("cls");   //清屏
				cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
				cout << "\t\t\t\t\t\t  您倾家荡产,已强制退出" << endl;
				Sleep(3000);   //延时3秒
				return;
			}
			int judge = 0;
			cout << "***********************************************    我   是   赌   神   *************************************************" << endl << endl;
			cout << "\t\t您的硬币数量:" << peo[User].coin << "\t\t\t\t\t\t     当前下注次数:" << GameCount << endl << endl;
			cout << "1.开始" << endl;
			cout << "2.退出(下注未满5次会扣除您硬币总数的一半)" << endl;
			cout << "请选择:";
			int Choice = Check(2);   //只返回1、2(是否开始游戏) 
			if (Choice == 1)
			{
			as:				cout << "请输入您要压入硬币的数量(整数):";
				int cn = Check(0);   //规范输入 防止系统崩溃 
				cout << endl;
				if (cn > peo[User].coin)  //下注数大于硬币所有数
				{
					cout << "您的硬币不足!!!" << endl;
					goto as;
				}
				cout << endl;
				cout << "1.单数" << endl;
				cout << "0.双数" << endl;
				cout << "请下注:";
				int Bat = Check(4);     //只返回1、0(选择压单或双数)
				system("cls");
				cout << "***********************************************    我   是   赌   神   *************************************************";
				cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
				cout << "\t\t\t\t\t\t      赌局开始!!!" << endl;
				Sleep(2000);
				system("cls");
				cout << "***********************************************    我   是   赌   神   *************************************************";
				cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
				cout << "\t\t\t\t\t\t    第" << ++GameCount << "轮骰子开始掷!" << endl;
				Sleep(2000);
				system("cls");
				dice1 = 1 + rand() % 6;
				dice2 = 1 + rand() % 6;
				dice3 = 1 + rand() % 6;   //随机扔三个骰子
				sum = dice1 + dice2 + dice3;
				cout << "***********************************************    我   是   赌   神   *************************************************";
				cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
				cout << "\t\t\t\t\t\t      " << dice1;
				Sleep(1000);
				system("cls");
				cout << "***********************************************    我   是   赌   神   *************************************************";
				cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
				cout << "\t\t\t\t\t\t      " << dice1 << "     " << dice2;
				Sleep(1000);
				system("cls");
				cout << "***********************************************    我   是   赌   神   *************************************************";
				cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
				cout << "\t\t\t\t\t\t      " << dice1 << "     " << dice2 << "     " << dice3;
				Sleep(2000);
				system("cls");
				cout << "***********************************************    我   是   赌   神   *************************************************";
				cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
				cout << "\t\t\t\t\t\t    骰子大小之和为: " << sum << endl;
				Sleep(2000);
				system("cls");
				if (dice1 == dice2 && dice2 == dice3)    //判断是否三个骰子数都相同 (即大满贯) 
				{
					cout << "***********************************************    我   是   赌   神   *************************************************";
					cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
					cout << "\t\t\t\t\t\t大满贯,获得3倍奖励!!!" << endl;
					peo[User].coin += 3 * cn;
					judge = 1;
					Sleep(3000);
					system("cls");
					continue;
				}
				if (sum % 2 == Bat)
				{
					cout << "***********************************************    我   是   赌   神   *************************************************";
					cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
					cout << "\t\t\t\t\t\t  猜测正确,双倍奖励!!!" << endl;
					peo[User].coin += 2 * cn;
					Sleep(3000);
					system("cls");
					continue;
				}
				else if (sum % 2 != Bat)
				{
					cout << "***********************************************    我   是   赌   神   *************************************************";
					cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
					cout << "\t\t\t\t\t\t   猜测错误,硬币扣除" << endl;
					peo[User].coin -= 2 * cn;
					Sleep(3000);
					system("cls");   //清屏
					continue;
				}
			}      //押单则bat=1,押双数则bat=0
			else if (Choice == 2)   //选择退出游戏 
			{
				if (GameCount < 5)
				{
					system("cls");   //清屏
					cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
					cout << "\t\t\t\t\t 警告:您游戏未满5次,已扣除硬币总数的一半!!!" << endl;
					Sleep(3000);   //延时3秒
					peo[User].coin /= 2;  //硬币扣除硬币总数一半 
					return;
				}
				else
				{
					system("cls");   //清屏
					cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
					cout << "\t\t\t\t\t\t     您全身而退!!!" << endl;
					Sleep(3000);   //延时3秒
					return;
				}
			}
		}
	}
}
//--------------------------------------------------------------------------------------------------------------
//主体部分
int main()
{
	//--------------------------------------------------------------------------------------------------------------
	//初始化界面
	system("color F0");   //设置背景色为白色,字体颜色为黑色
	HideCursor();   //影藏光标
	cout << "+------------------+" << endl;
	cout << "|     第二小组     |" << endl;
	cout << "|  组长:豆漿油條  |" << endl;
	cout << "|  组员:小哲      |" << endl;
	cout << "|        小栩      |" << endl;
	cout << "|        小欣      |" << endl;
	cout << "|        小蕊      |" << endl;
	cout << "|        小蓁      |" << endl;
	cout << "|        小函      |" << endl;
	cout << "+------------------+" << endl << endl << endl << endl;
	cout << "\t\t\t\t\t\t 欢迎游玩2172游戏盒!!!" << endl;
	Sleep(3000);   //延时3秒
	system("cls");   //清屏
	cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
	cout << "\t\t\t\t\t 抵 制 不 良 游 戏 , 拒 绝 盗 版 游 戏 。" << endl;
	cout << "\t\t\t\t\t 注 意 自 我 保 护 , 谨 防 受 骗 上 当 。" << endl;
	cout << "\t\t\t\t\t 适 度 游 戏 益 脑 , 沉 迷 游 戏 伤 身 。" << endl;
	cout << "\t\t\t\t\t 合 理 安 排 时 间 , 享 受 健 康 生 活 。" << endl;
	Sleep(6000);   //延时6秒
	system("cls");   //清屏
	//--------------------------------------------------------------------------------------------------------------
	//程序内部
	while (1)
	{
		//--------------------------------------------------------------------------------------------------------------
		// 登录界面
		while (1)
		{
			cout << endl << endl << endl << endl << endl << endl << endl << endl << endl;
			cout << "\t\t\t\t\t\t  +--------------------+" << endl;
			cout << "\t\t\t\t\t\t  |  是否已有账号?    |" << endl;
			cout << "\t\t\t\t\t\t  |  1.有,直接登录    | " << endl;
			cout << "\t\t\t\t\t\t  |  2.没有,申请注册  |" << endl;
			cout << "\t\t\t\t\t\t  |  0.退出程序        |" << endl;
			cout << "\t\t\t\t\t\t  +--------------------+" << endl;
			cout << "请输入数字实现对应的功能:";
			float k = Check(1);   //只返回1、2、0
			if (k == 1)   //登录
			{
				system("cls");   //清屏
				int a = SignIn();
				if (a == 1)   //选择直接进入程序
				{
					Key = 1;   //钥匙开锁,可进入主程序
					system("cls");   //清屏
					break;
				}
				else
				{
					continue;
				}
			}
			else if (k == 2)   //注册
			{
				system("cls");   //清屏
				int b = Register();
				if (b == 1)   //选择直接进入程序
				{
					Key = 1;   //钥匙开锁,可进入主程序
					system("cls");   //清屏
					break;
				}
				else if (b == 2)   //选择不直接进入程序
				{
					system("cls");   //清屏
					continue;
				}
			}
			else if (k == 0)      //退出程序
			{
				cout << "\n你真的要退出了吗?" << endl;
				cout << "1.强忍离去" << endl;
				cout << "2.继续使用" << endl;
				float a = Check(2);
				cout << endl << endl;
				if (a == 1)
				{
					break;
				}
				else if (a == 2)
				{
					system("cls");   //清屏
					continue;
				}
			}
		}
		//--------------------------------------------------------------------------------------------------------------
		//菜单界面
		if (Key == 1)
		{
			//--------------------------------------------------------------------------------------------------------------
			//载入动画
			Progress();   //进度条
			cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
			cout << "\t\t\t\t\t\t    你好," << peo[User].user << endl;
			cout << "\t\t\t\t\t\t    欢迎进入游戏世界!!!" << endl;
			Sleep(3000);   //延时3秒
			system("cls");   //清屏
			//--------------------------------------------------------------------------------------------------------------
			while (1)
			{
				//--------------------------------------------------------------------------------------------------------------
				//菜单选项:
				system("color F0");   //设置背景色为白色,字体颜色为黑色
				cout << "*****************************************************  2172游戏盒  *****************************************************" << endl;
				cout << "\t\t\t\t\t\t     Version 8.9.11" << endl;
				cout << " 玩家:" << peo[User].user << setw(15) << "硬币:" << peo[User].coin << endl;
				cout << "+------------------+" << endl;
				cout << "|    1.雷霆战机    |" << endl;
				cout << "|    2.吃豆人      |" << endl;
				cout << "|    3.贪吃蛇      |" << endl;
				cout << "|    4.猜数字      |" << endl;
				cout << "|    5.恋爱测试    |" << endl;
				cout << "|    6.我是赌神    |" << endl;
				cout << "|                  |" << endl;
				cout << "|                  |" << endl;
				cout << "|    9.退出登录    |" << endl;
				cout << "|    0.退出程序    |" << endl;
				cout << "+------------------+" << endl;
				cout << "请输入您要游玩的游戏编号:";
				//--------------------------------------------------------------------------------------------------------------
				//利用Check函数判断用户的输入是否正确(字符和字符串):
				double n = Check(0);
				cout << endl << endl;
				//--------------------------------------------------------------------------------------------------------------
				//按钮对应功能的实现:
				if (n == 1)
				{
					system("cls");   //清屏
					PlaneWar();
					system("cls");   //清屏
					if (*Q1 > 200)
					{
						cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
						cout << "\t\t\t\t\t\t     游戏胜利,硬币+30" << endl;
						Sleep(3000);
						system("cls");   //清屏
						peo[User].coin += 30;
						continue;
					}
					else
					{
						cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
						cout << "\t\t\t\t\t\t     游戏失败,继续加油" << endl;
						Sleep(3000);
						system("cls");   //清屏
						continue;
					}
				}
				else if (n == 2)
				{
					system("cls");   //清屏
					ChiDouRen();
					system("cls");   //清屏
					if (*Q2 == 0)
					{
						cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
						cout << "\t\t\t\t\t\t     游戏胜利,硬币+10" << endl;
						Sleep(3000);
						system("cls");   //清屏
						peo[User].coin += 10;
						continue;
					}
					else
					{
						cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
						cout << "\t\t\t\t\t\t     游戏失败,继续加油" << endl;
						Sleep(3000);
						system("cls");   //清屏
						continue;
					}
				}
				else if (n == 3)
				{
					system("cls");   //清屏
					if (Death == 1)
					{
						cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
						cout << "\t\t\t\t\t\t   蛇已死,自噬无法复活!!!" << endl;
						Sleep(3000);
						system("cls");   //清屏
					}
					else if (Death == 0)
					{
						tanchishe();
						system("cls");   //清屏
						if (*Q3 > 15)
						{
							cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
							cout << "\t\t\t\t\t\t     游戏胜利,硬币+20" << endl;
							Sleep(3000);
							system("cls");   //清屏
							peo[User].coin += 10;
							continue;
						}
						else
						{
							cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
							cout << "\t\t\t\t\t\t     游戏失败,继续加油" << endl;
							Sleep(3000);
							system("cls");   //清屏
							continue;
						}
					}
				}
				else if (n == 4)
				{
					system("cls");   //清屏
					caishuzi();
					system("cls");   //清屏
					if (Guesstimes == 1)
					{
						cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
						cout << "\t\t\t\t\t\t   您运气爆棚,硬币+200" << endl;
						Sleep(3000);
						system("cls");   //清屏
						peo[User].coin += 200;
						continue;
					}
					else if (Guesstimes <= 8)
					{
						cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
						cout << "\t\t\t\t\t\t    游戏胜利,硬币+20" << endl;
						Sleep(3000);
						system("cls");   //清屏
						peo[User].coin += 20;
						continue;
					}
					else
					{
						cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
						cout << "\t\t\t\t\t\t     游戏失败,继续加油" << endl;
						Sleep(3000);
						system("cls");   //清屏
						continue;
					}
				}
				else if (n == 5)
				{
					system("cls");   //清屏
					int GETG = LianAiCeShi();
					system("cls");   //清屏
					if (GETG == 1 && peo[User].award == 1)
					{
						cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
						cout << "\t\t\t\t\t\t    恋爱测试结束!!!" << endl;
						Sleep(2000);
						system("cls");   //清屏
						cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
						cout << "\t\t\t\t\t 赠送您50硬币,祝您早日找到那个TA!!!" << endl;
						Sleep(2000);
						peo[User].coin += 50;
						system("cls");   //清屏
					}
					continue;
				}
				else if (n == 6)
				{
					system("cls");   //清屏
					Gambler();
					if (peo[User].coin < 0)
					{
						peo[User].coin = 0;   //硬币下限为0
					}
					system("cls");   //清屏
					continue;
				}
				else if (n == 9)
				{
					system("cls");   //清屏
					cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
					cout << "\t\t\t\t\t\t      存档中......" << endl;
					Sleep(2000);   //延时2秒
					system("cls");   //清屏
					cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
					cout << "\t\t\t\t\t\t      账号已退出!!!" << endl;
					Sleep(2000);   //延时2秒
					system("cls");   //清屏
					Key = 0;   //程序关锁
					KeyOut = 1;   //钥匙开锁,退出登录
					break;
				}
				else if (n == 0)
				{
					cout << "你真的要退出了吗?" << endl;
					cout << "1.强忍离去" << endl;
					cout << "2.继续使用" << endl;
					float a = Check(2);
					cout << endl << endl;
					if (a == 1)
					{
						break;
					}
					else if (a == 2)
					{
						system("cls");   //清屏
						continue;
					}
				}
				//--------------------------------------------------------------------------------------------------------------
				// 开发人员后台指令
				else if (n == 12321)   //查看所有玩家的信息
				{
					system("cls");   //清屏
					cout << setw(10) << "序号" << setw(16) << "用户名" << setw(16) << "密码" << setw(10) << "硬币" << endl;
					for (int i = 0; i < x; i++)
					{
						cout << setw(10) << peo[i].number << setw(16) << peo[i].user << setw(16) << peo[i].password << setw(10) << peo[i].coin << endl;
					}
					system("pause");
					system("cls");   //清屏
				}
				else if (n == 12345)
				{
					system("cls");   //清屏
					cout << setw(10) << "编号" << setw(16) << "用户名" << setw(16) << "密码" << setw(10) << "硬币" << endl;
					for (int i = 0; i < x; i++)
					{
						cout << setw(10) << peo[i].number << setw(16) << peo[i].user << setw(16) << peo[i].password << setw(10) << peo[i].coin << endl;
					}
					cout << endl << endl << "请输入要修改信息的玩家编号:";
					int fo = Check(0) - 1;
					cout << endl;
					cout << "请输入要修改的信息:" << endl;
					cout << "1.用户名" << endl;
					cout << "2.密码" << endl;
					cout << "3.硬币" << endl;
					int ko = Check(3);
					if (ko == 1)
					{
						cout << endl << "用户名修改为:";
						char us1[1000];
						cin.get();
						cin.getline(us1, 1000);
						strcpy(peo[fo].user, us1);
						system("cls");   //清屏
						cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
						cout << "\t\t\t\t\t\t   正在处理,请稍等......" << endl;
						Sleep(2000);   //等待2秒
						system("cls");   //清屏
						cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
						cout << "\t\t\t\t\t\t     修改成功!!!" << endl;
					}
					else if (ko == 2)
					{
						cout << endl << "密码修改为:";
						char us2[1000];
						cin.get();
						cin.getline(us2, 1000);
						strcpy(peo[fo].password, us2);
						system("cls");   //清屏
						cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
						cout << "\t\t\t\t\t\t   正在处理,请稍等......" << endl;
						Sleep(2000);   //等待2秒
						system("cls");   //清屏
						cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
						cout << "\t\t\t\t\t\t     修改成功!!!" << endl;
					}
					else if (ko == 3)
					{
						cout << endl << "硬币数量修改为:";
						long long us3 = Check(0);
						peo[fo].coin = us3;
						system("cls");   //清屏
						cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
						cout << "\t\t\t\t\t\t   正在处理,请稍等......" << endl;
						Sleep(2000);   //等待2秒
						system("cls");   //清屏
						cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
						cout << "\t\t\t\t\t\t     修改成功!!!" << endl;
					}
					Sleep(2000);
					system("cls");   //清屏
				}
				//--------------------------------------------------------------------------------------------------------------
				//判断用户的输入是否正确(非餐单中的整型数字):
				else
				{
					system("cls");   //清屏
					cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
					cout << "\t\t\t\t\t 您输入的数字不在菜单中,请重新输入!!!" << endl;
					Sleep(2000);
					system("cls");   //清屏
				}
				//--------------------------------------------------------------------------------------------------------------
			}
		}
		if (KeyOut == 1)
		{
			KeyOut = 0;   //钥匙使用过后关锁,以便后续使用
			continue;
		}
		else if (KeyOut == 0)
		{
			system("cls");   //清屏
			cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << "\t\t\t\t\t\t    期待您的下次游玩!" << endl;
			Sleep(3000);   //延时3秒
			break;
		}
	}
	return 0;
}

四、参考资料

https://blog.csdn.net/zhaoyipengmzyc/article/details/104265564

https://blog.csdn.net/onlyonename/article/details/8316533

https://blog.csdn.net/jackypigpig/article/details/53368531

https://blog.csdn.net/u013745804/article/details/82379266

https://blog.csdn.net/joseph_happy/article/details/5143718


五、总结

        我们小组开发的这个项目,重点不在于开发某一个游戏,而在于整个完整的体系,如何实现游戏与系统之间个性化的连接是这个项目主要考虑的问题。当然,庞大的项目难免会遇上很多问题,我们在开发的过程中也遇到并解决了很多BUG,但是依然有不足之处,比如:①程序结束即失忆,账号密码没有永久保存的能力。由于开发周期较短,所以没有实现用户数据的存储与读取的功能;②代码不够精简,算法没有优化。运用了多重循环,各种嵌套,较为繁琐;③程序还有部分BUG没有被修复,如:贪吃蛇游戏如果食物出现在蛇身处就不会显示出来;雷霆战机游戏子弹击中敌人后不消失以及战机坠毁有时会判定失灵……毕竟是刚接触C++不久,本次项目用的基本都是C++的基础语法,往后的学习道路还长,相信随着更深入的学习,编程水平能更上一层楼。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_62496194/article/details/123253179

智能推荐

贝塞尔曲线算法之JS获取点_bezier-js-程序员宅基地

文章浏览阅读1.1k次。贝塞尔曲线算法之JS获取点贝塞尔曲线(Bézier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线。这个一阶贝塞尔曲线绘制过程,黑点按百分比t从P0->P1移动,看不出什么呢~ 那继续看后面的图这个是二阶贝塞尔曲线,从P0->P1有个小绿点按百分比t运动,从P1->P2也有个小绿点按百分比t运动,两个绿点之间也有个小黑点按百分比t运动,这个黑..._bezier-js

MacBook编译Android源码,mac 10.13 编译 Android源码-程序员宅基地

文章浏览阅读364次。编译环境:mac os 10.13 xcode:Version 9.2 (9C40b)jdk:1.8.0_151源码版本:android-8.1.0_r1编译过程中我碰到4个问题,前两个的解决方案详细可以看这里Mac 10.12 编译 Android 源码第一个问题是找不到对应的MacOSX.sdk,比如找不到MacOSX10.12.sdk,你需要到 https://github.com/phra..._mac编译android aosp13

Rails利用ActiveRecord完成时间相关的条件查询_rails activerecord 查询条件-程序员宅基地

文章浏览阅读2k次。对于时间相关的查询我们可以直接用数据库底层命令来做:where_str << "at_moment between ? AND ?"where_vals << date_start << "#{date_end} 23:59:59"where_str << (where_str == "" ? "(now() - '#{days_interval}'::INTERVAL) < at_moment"_rails activerecord 查询条件

提供一个jdk 8、9英文、中文在线文档及CHM下载_jdk8中文chm-程序员宅基地

文章浏览阅读3.7k次,点赞2次,收藏4次。jdk1.9 Api 英文文档:http://www.pbteach.com/jdkapi/jdk-9_doc-api-enjdk1.9 Api 中文文档:http://www.pbteach.com/jdkapi/jdk-9_doc-api-cnjdk1.8 Api 英文文档:http://www.pbteach.com/jdkapi/jdk-8_doc-api-enjdk1.8 Api ..._jdk8中文chm

hdu2094——set的应用_hdu2094 为什么集合a-集合b能判断是否产生-程序员宅基地

文章浏览阅读54次。题目n场比赛,每场比赛对应为一行输出,格式为A队战胜B队,经历过n场比赛,请判断是否有冠军产生。算法由题意得但凡是输过的队伍都不能作为冠军,我们只需要把所有队伍放进一个集合,再把比赛失败的队伍放入另一个集合,当全部比赛结束后,比较两个集合的大小,如果A-B=1,说明已经产生冠军了,如果=0则没有冠军,如果>1则说明冠军还未产生。数据结构放入set中进行代码#include<iostream>#include<string>#include<set>_hdu2094 为什么集合a-集合b能判断是否产生

用strtol函数进行进制的转换_stroll函数-程序员宅基地

文章浏览阅读599次。1、stroll函数:(将字符串转换为长整型)可以转换任何进制 第一个参数:字符串开始地址; 第二个参数:二级指针,返回字符串解析时停下来的位置 第三个参数:x进制int main(){ const char* arr = "100!"; int flg = strtol(arr, NULL, 8);//将100转换为8进制 printf("%d\n", flg); return 0;}..._stroll函数

随便推点

Python 数据科学 Seaborn_plt.savefig() urlopenerror-程序员宅基地

文章浏览阅读698次,点赞4次,收藏6次。用 Seaborn 绘制统计型数据可视图Seaborn 是基于 matplotlib 开发的高阶Python 数据可视图库,用于绘制优雅、美观的统计图形。使用下列别名导入该库(一般取别名为sns):import matplotlib.pyplot as pltimport seaborn as sns使用 Seaborn 创建图形的基本步骤:1.准备数据2.设定画布外观3.使用 Seaborn 绘图4.自定义图形import matplotlib.pyplot as plt_plt.savefig() urlopenerror

纯干货!AndroidHook机制连简单实战都不会凭什么拿高薪?跳槽薪资翻倍_android hook broadcast-程序员宅基地

文章浏览阅读127次。前言现实就是,99%的职业,年龄增大后都没前途。没前途是绝大多数普通人的宿命,有前途的人也用不着等到老。有没有前途已然不重要,无论做哪一行,健康的心态永远是首位。从我个人的角度写写30多岁码工的感受:的确是受年龄压力开始增大了。比如二十多岁的小年轻,可能什么都懂,对组里的东西很熟悉。有时候我也怀疑自己是不是智商不够,是不是自学能力太差,是不是基础不行,别人是不是都玩命加班,你知道30多岁的人那种危机感。Java基础知识点Jvm相关Java内存结构及分区Java对象的创建、存储及访问Java判_android hook broadcast

tf.image.resize_images()自定义的反卷积,卷积都可以用tf.layers.conv2d_transpose反卷积,可用的batchnorm,randomrandint()-程序员宅基地

文章浏览阅读1k次。tf.image.resize_images(image, (w, h), method):image表示需要改变此存的图像,第二个参数改变之后图像的大小,method用于表示改变图像过程用的差值方法。0:双线性差值。1:最近邻居法。2:双三次插值法。3:面积插值法。tf.layers.conv2d_transpose https://blog.csdn.net/ningning52107/..._tf.image.resize_images()

解决thinkphp5配置环境No input file specified.问题_thinkphp5 nginx配置 宝塔 no input file specified.-程序员宅基地

文章浏览阅读8.9k次。原来用的环境是php5.5-ts,但今天因一个项目需要使用到php7.0-nts的环境,所以只好现在本地配置个工作环境,用的php7.0-nts环境,发现页面始终报No input file specified.问题。 php中ts和nts区别:ts(Thread-Safety)即线程安全,多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到..._thinkphp5 nginx配置 宝塔 no input file specified.

超市管理系统Java_java编程实现简单超市管理-程序员宅基地

文章浏览阅读9.9k次,点赞41次,收藏360次。Java实现简单的增删改查小项目_java编程实现简单超市管理

电源符号:VCC、VDD、VEE、VSS、VBAT_芯片供电角vdd-程序员宅基地

文章浏览阅读8.8k次,点赞9次,收藏93次。电路设计以及PCB制作中,经常碰见电源符号:VCC、VDD、VEE、VSS、VBAT一、解释VCC:C=circuit 表示电路的意思, 即接入电路的电压 VDD:D=device 表示器件的意思, 即器件内部的工作电压; VSS:S=series 表示公共连接的意思,通常指电路公共接地端电压 VEE:负电压供电;场效应管的源极(S) VBAT:当使用电池或其他电源连接到VBAT脚上时,当VDD 断电时,可以保存备份寄存器的内容和维持RTC的功能。如果应用中没有使用外部电池,VBAT引脚应接到_芯片供电角vdd