【C++实现】容器

1、将贪吃蛇的蛇改为容器;
2、将飞机大战中的子弹改为容器;
3、用容器创建出飞机大战的敌机,实现敌机随机出现并向下运动。

贪吃蛇的蛇改为容器

// 贪吃蛇(容器).cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <time.h>
#include <vector>
using namespace std;

#define KEY_DOWN(vk_code) GetAsyncKeyState(vk_code)&0x8000?1:0
int _tmain(int argc, _TCHAR* argv[])
{
	int arrMap[15][15] = {
		{ 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, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 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, 1, 1, 1, 1 }
	};

	//蛇的结构体
	struct Snake{
		int nSnakeRow;
		int nSnakeCol;
		int nSnakeRowBk;
		int nSnakeColBk;
	};

	//用数组存放蛇头到蛇尾的坐标
	//Snake arrSnake[20];
	vector<Snake> vecSnake;

	Snake head;

	//把蛇头压入容器中
	vecSnake.push_back(head);

	//因为只压入了一个蛇头,所以此时的vecSnake[0]就是蛇头
	//初始化蛇头的方向
	vecSnake[0].nSnakeRow = 5;
	vecSnake[0].nSnakeCol = 5;
	vecSnake[0].nSnakeRowBk = 0;
	vecSnake[0].nSnakeColBk = 0;

	//定义蛇的长度变量
	//int nLen = 1;

	//食物的结构体
	struct SFood{
		int nFoodRow;
		int nFoodCol;
	};

	//定义食物的随机出现,随机种子初始化
	srand(time(nullptr));

	//初始化食物
	SFood sFood;
	//随机生成食物
	sFood.nFoodRow = rand() % 13 + 1;
	sFood.nFoodCol = rand() % 13 + 1;

	//控制方向的枚举值
	enum
	{
		E_DIR_NONE
	};
	int nDir = E_DIR_NONE;


	//数据更新,要在渲染的前面
	//刷新
	while (true)
	{
		//蛇头移动之前要进行坐标备份
		vecSnake[0].nSnakeRowBk = vecSnake[0].nSnakeRow;
		vecSnake[0].nSnakeColBk = vecSnake[0].nSnakeCol;

		//数据更新,要在渲染的前面
		//让蛇根据按键的方向一直动
		if (nDir <= 3)
		{
			if (0 == nDir)
			{
				vecSnake[0].nSnakeRow--;
			}
			else if (1 == nDir)
			{
				vecSnake[0].nSnakeRow++;
			}
			else if (2 == nDir)
			{
				vecSnake[0].nSnakeCol--;
			}
			else if (3 == nDir)
			{
				vecSnake[0].nSnakeCol++;
			}

		}

		//设置按键让贪吃蛇改变方向
		if (KEY_DOWN(VK_UP))
		{
			nDir = 0;
		}
		else if (KEY_DOWN(VK_DOWN))
		{
			nDir = 1;
		}
		else if (KEY_DOWN(VK_LEFT))
		{
			nDir = 2;
		}
		else if (KEY_DOWN(VK_RIGHT))
		{
			nDir = 3;
		}

		//蛇吃食物

		if (vecSnake[0].nSnakeRow == sFood.nFoodRow && vecSnake[0].nSnakeCol == sFood.nFoodCol)
		{
			//再次随机生成食物,让食物的位置变化
			sFood.nFoodRow = rand() % 13 + 1;
			sFood.nFoodCol = rand() % 13 + 1;

			//创建一节身体出来
			Snake body;
			//把身体压入容器中
			vecSnake.push_back(body);
		}


		//身体跟随蛇头
		for (int i = 1; i < vecSnake.size(); i++) 
		{
			//备份当前这一节的坐标
			vecSnake[i].nSnakeRowBk = vecSnake[i].nSnakeRow;
			vecSnake[i].nSnakeColBk = vecSnake[i].nSnakeCol;
		}

		for (int i = 0; i < vecSnake.size() - 1; i++)
		{
			//把当前节的坐标给下一节
			vecSnake[i + 1].nSnakeRow = vecSnake[i].nSnakeRowBk;
			vecSnake[i + 1].nSnakeCol = vecSnake[i].nSnakeColBk;
		}



		//检测蛇头是否幢墙
		if (1 == arrMap[vecSnake[0].nSnakeRow][vecSnake[0].nSnakeCol])
		{
			cout << "Game over!" << endl;
			break;
		}


		//蛇头与蛇身的碰撞
		for (int i = 1; i < vecSnake.size(); i++)
		{
			if ((vecSnake[0].nSnakeRow == vecSnake[i].nSnakeRow) && (vecSnake[0].nSnakeCol == vecSnake[i].nSnakeCol))
			{
				cout << "Game over!" << endl;
				break;
			}
		}


		//渲染
		for (int i = 0; i < 15; i++)
		{
			for (int j = 0; j < 15; j++)
			{
				bool DrawSnake = false;

				for (int k = 0; k < vecSnake.size(); k++)
				{
					if (i == vecSnake[k].nSnakeRow && j == vecSnake[k].nSnakeCol)
					{
						DrawSnake = true;
						break;
					}

				}

				if (1 == arrMap[i][j])
				{
					cout << "■";
				}
				else if (DrawSnake)
				{
					cout << "蛇";
				}
				else if (i == sFood.nFoodRow && j == sFood.nFoodCol)
				{
					cout << "肉";
				}
				else
				{
					cout << "  ";
				}
			}
			cout << endl;//数组换行输出
		}
		Sleep(60);
		system("cls");
	}


	system("pause");
	return 0;
}

飞机大战中的子弹改为容器

// 飞机大战(容器).cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <vector>
using namespace std;

#define KEY_DOWN(vk_code) GetAsyncKeyState(vk_code)&0x8000?1:0
int _tmain(int argc, _TCHAR* argv[])
{
	//定义飞机头结构体
	struct SPlaneHead
	{
		int nPlaneHeadRow;
		int nPlaneHeadCol;
	};
	//头部初始化
	SPlaneHead sPlaneHead;
	sPlaneHead.nPlaneHeadRow = 12;
	sPlaneHead.nPlaneHeadCol = 8;


	//机身结构体
	struct SPlaneBody
	{
		int nPlaneBodyRow;
		int nPlaneBodyCol;

	};
	//机身初始化
	SPlaneBody arrPlane[3];

	//机身数组
	for (int i = 0; i < 3; i++)
	{
		arrPlane[i].nPlaneBodyRow = 13;
		arrPlane[i].nPlaneBodyCol = 7 + i;
	}

	//子弹结构体
	struct SBullet
	{
		int nBulletRow;
		int nBulletCol;
	};

	//初始化子弹
	//SBullet sBullet[100];

	//用容器初始化子弹,注意数据类型为结构体类型
	vector<SBullet> vecBullet;

	/*
	for (int i = 0; i < 100;i++)
	{
	sBullet[i].nBulletRow = sPlaneHead.nPlaneHeadRow+i;
	sBullet[i].nBulletCol = sPlaneHead.nPlaneHeadCol;
	}
	*/

	/*
	for (int i = 0; i < 100; i++)
	{
	sBullet[i].nBulletRow = 12;
	sBullet[i].nBulletCol = 8;
	}
	*/
	
	/*
	for (int i = 0; i < 100;i++)
	{
	vecBullet.push_back(sBullet);
	}
	*/
	

	//int nLen = 1; //子弹数量
	int nDir = 0; //用于控制子弹向上移动
	int nTime = 0; //用于统计帧数

	int arrMap[15][20] = {
		{ 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, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
	};


	while (true)
	{
		nTime++; //每一次循环统计一次次数

		if (nTime >= 5)
		{
			nTime = 0; //归零

			/*
			nLen++;  //每10帧,子弹数量(长度)再增加1
			//设置子弹位置
			for (int i = 0; i < 100; i++)
			{
			//子弹位置为飞机头部的位置
			sBullet[i].nBulletRow = sPlaneHead.nPlaneHeadRow;
			sBullet[i].nBulletCol = sPlaneHead.nPlaneHeadCol;
			}
			*/

			//容器塞入数据
			// (int i = 0; i < 100; i++)
			//{
				//子弹位置为飞机头部的位置
				//vecBullet[i].nBulletRow = sPlaneHead.nPlaneHeadRow;
				//vecBullet[i].nBulletCol = sPlaneHead.nPlaneHeadCol;
			//}

			//压入新的子弹
			SBullet sBullet;//实例化
			sBullet.nBulletRow = sPlaneHead.nPlaneHeadRow;
			sBullet.nBulletCol = sPlaneHead.nPlaneHeadCol;

			vecBullet.push_back(sBullet);
		
		}

		if (KEY_DOWN(VK_LEFT))
		{
			arrPlane[0].nPlaneBodyCol--;
			arrPlane[1].nPlaneBodyCol--;
			arrPlane[2].nPlaneBodyCol--;
			sPlaneHead.nPlaneHeadCol--;

			/*
			for (int i = 0; i < 100; i++)
			{
			sBullet[i].nBulletCol--;
			}
			*/
		}
		else if (KEY_DOWN(VK_RIGHT))
		{
			arrPlane[0].nPlaneBodyCol++;
			arrPlane[1].nPlaneBodyCol++;
			arrPlane[2].nPlaneBodyCol++;
			sPlaneHead.nPlaneHeadCol++;
		}

		//子弹向上运动
		if (nDir == 0)
		{
			for (int i = 0; i < vecBullet.size(); i++)
			{
				vecBullet[i].nBulletRow--;
			}
		}

		//不撞墙
		if (1 == arrMap[arrPlane[0].nPlaneBodyRow][arrPlane[0].nPlaneBodyCol])
		{
			arrPlane[0].nPlaneBodyCol++;
			arrPlane[1].nPlaneBodyCol++;
			arrPlane[2].nPlaneBodyCol++;
			sPlaneHead.nPlaneHeadCol++;
		}
		if (1 == arrMap[arrPlane[2].nPlaneBodyRow][arrPlane[2].nPlaneBodyCol])
		{
			arrPlane[0].nPlaneBodyCol--;
			arrPlane[1].nPlaneBodyCol--;
			arrPlane[2].nPlaneBodyCol--;
			sPlaneHead.nPlaneHeadCol--;
		}



		//渲染
		//二维数组的遍历
		for (int i = 0; i < 15; i++) //行数为15
		{
			for (int j = 0; j < 20; j++)//列数为20
			{
				bool DrawPlane = false;
				for (int k = 0; k < 3; k++)
				{
					if (i == arrPlane[k].nPlaneBodyRow && j == arrPlane[k].nPlaneBodyCol)
					{
						DrawPlane = true;
						break;
					}
				}

				/*
				bool DrawBullet = false;
				for (int m = 0; m < 100; m++)
				{
				if (i == sBullet[m].nBulletRow && j == sBullet[m].nBulletCol)
				{
				DrawBullet = true;
				break;
				}
				}
				*/

				bool DrawBullet = false;
				for (int m = 0; m < vecBullet.size(); m++)  //这里不能是100 因为数量是随着帧数变化 这里定义为长度
				{
					if (i == vecBullet[m].nBulletRow && j == vecBullet[m].nBulletCol)
					{
						DrawBullet = true;
						break;
					}
				}


				//判断第i行第j列应该画什么
				if (1 == arrMap[i][j])//把数字为1的地方替换为■,作为墙壁
				{
					cout << "■";
				}
				else if (DrawPlane)
				{
					cout << "■";
				}
				else if (i == sPlaneHead.nPlaneHeadRow && j == sPlaneHead.nPlaneHeadCol)
				{
					cout << "■";
				}
				else if (DrawBullet)
				{
					cout << "弹";
				}
				else
				{
					cout << "  ";//数字为0的地方设为空格
				}

			}
			cout << endl;//换行,排列成二维数组的形状
		}
		system("cls");

	}
	return 0;
}


用容器创建出飞机大战的敌机,实现敌机随机出现并向下运动

// 飞机大战(敌机).cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <vector>
#include <time.h>
using namespace std;

#define KEY_DOWN(vk_code) GetAsyncKeyState(vk_code)&0x8000?1:0
int _tmain(int argc, _TCHAR* argv[])
{
	//定义飞机头结构体
	struct SPlaneHead
	{
		int nPlaneHeadRow;
		int nPlaneHeadCol;

	};
	//头部初始化
	SPlaneHead sPlaneHead;
	sPlaneHead.nPlaneHeadRow = 12;
	sPlaneHead.nPlaneHeadCol = 8;


	//机身结构体
	struct SPlaneBody
	{
		int nPlaneBodyRow;
		int nPlaneBodyCol;

	};
	//机身初始化
	SPlaneBody arrPlane[3];

	//机身数组
	for (int i = 0; i < 3; i++)
	{
		arrPlane[i].nPlaneBodyRow = 13;
		arrPlane[i].nPlaneBodyCol = 7 + i;
	}

	//子弹结构体
	struct SBullet
	{
		int nBulletRow;
		int nBulletCol;
	};

	//初始化子弹
	//SBullet sBullet[100];

	//用容器初始化子弹,注意数据类型为结构体类型
	vector<SBullet> vecBullet;

	//敌机结构体
	struct SEnemyNode
	{
		int nEnemyNodeRow;
		int nEnemyNodeCol;
	};

	struct SEnemy
	{
		SEnemyNode arrEnemyNode[4]; //在结构体中定义结构体数组!!
	};

	vector<SEnemy> vecEnemy;

	//初始化敌机
	/*
	arrEnemyNode[0].nEnemyNodeRow = 1;
	arrEnemyNode[0].nEnemyNodeCol = 7;
	arrEnemyNode[1].nEnemyNodeRow = 1;
	arrEnemyNode[1].nEnemyNodeCol = 8;
	arrEnemyNode[2].nEnemyNodeRow = 1;
	arrEnemyNode[2].nEnemyNodeCol = 9;
	arrEnemyNode[3].nEnemyNodeRow = 2;
	arrEnemyNode[3].nEnemyNodeCol = 8;
	*/
	
	
	//int nLen = 1; //子弹数量
	int nDir = 0; //用于控制子弹向上移动
	int nDir1 = 0; //用于控制敌机向下运动
	int nTime = 0; //用于统计帧数
	int nEnemyTime = 0;

	srand(time(nullptr));

	int arrMap[15][20] = {
		{ 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, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
	};


	while (true)
	{

		nTime++; //每一次循环统计一次次数
		nEnemyTime++;

		if (nTime >= 5)
		{
			nTime = 0; //归零

			/*
			nLen++;  //每10帧,子弹数量(长度)再增加1

			//设置子弹位置
			for (int i = 0; i < 100; i++)
			{
			//子弹位置为飞机头部的位置
			sBullet[i].nBulletRow = sPlaneHead.nPlaneHeadRow;
			sBullet[i].nBulletCol = sPlaneHead.nPlaneHeadCol;
			}
			*/

			//容器塞入数据
			//压入新子弹
			SBullet sBullet;//实例化
			sBullet.nBulletRow = sPlaneHead.nPlaneHeadRow;
			sBullet.nBulletCol = sPlaneHead.nPlaneHeadCol;

			vecBullet.push_back(sBullet);

		}

		if (nEnemyTime>10)
		{
			nEnemyTime = 0;
			//定义敌机的中心坐标,用于敌机的初始化
			int nCenterRow = 1;
			int nCenterCol =rand() % 15 + 2;

			SEnemy enemy;

			enemy.arrEnemyNode[0].nEnemyNodeRow = 1;
			enemy.arrEnemyNode[0].nEnemyNodeCol = nCenterCol-1;
			enemy.arrEnemyNode[1].nEnemyNodeRow = 1;
			enemy.arrEnemyNode[1].nEnemyNodeCol = nCenterCol;
			enemy.arrEnemyNode[2].nEnemyNodeRow = 1;
			enemy.arrEnemyNode[2].nEnemyNodeCol = nCenterCol+1;
			enemy.arrEnemyNode[3].nEnemyNodeRow = 2;
			enemy.arrEnemyNode[3].nEnemyNodeCol = nCenterCol;

			vecEnemy.push_back(enemy);

		}

		if (KEY_DOWN(VK_LEFT))
		{
			arrPlane[0].nPlaneBodyCol--;
			arrPlane[1].nPlaneBodyCol--;
			arrPlane[2].nPlaneBodyCol--;
			sPlaneHead.nPlaneHeadCol--;

			/*
			for (int i = 0; i < 100; i++)
			{
			sBullet[i].nBulletCol--;
			}
			*/
		}
		else if (KEY_DOWN(VK_RIGHT))
		{
			arrPlane[0].nPlaneBodyCol++;
			arrPlane[1].nPlaneBodyCol++;
			arrPlane[2].nPlaneBodyCol++;
			sPlaneHead.nPlaneHeadCol++;
		}

		//子弹向上运动
		if (nDir == 0)
		{
			for (int i = 0; i < vecBullet.size(); i++)
			{
				vecBullet[i].nBulletRow--;
			}
		}

		//敌机向下运动
		if (nDir1 == 0)
		{
			for (int i = 0; i < vecEnemy.size();i++)  //等下要改为vector.size()
			{
				for (int j = 0; j < 4;j++)
				{
					vecEnemy[i].arrEnemyNode[j].nEnemyNodeRow++;
				}
				
			}
		}

		//不撞墙
		if (1 == arrMap[arrPlane[0].nPlaneBodyRow][arrPlane[0].nPlaneBodyCol])
		{
			arrPlane[0].nPlaneBodyCol++;
			arrPlane[1].nPlaneBodyCol++;
			arrPlane[2].nPlaneBodyCol++;
			sPlaneHead.nPlaneHeadCol++;
		}
		if (1 == arrMap[arrPlane[2].nPlaneBodyRow][arrPlane[2].nPlaneBodyCol])
		{
			arrPlane[0].nPlaneBodyCol--;
			arrPlane[1].nPlaneBodyCol--;
			arrPlane[2].nPlaneBodyCol--;
			sPlaneHead.nPlaneHeadCol--;
		}



		//渲染
		//二维数组的遍历
		for (int i = 0; i < 15; i++) //行数为15
		{
			for (int j = 0; j < 20; j++)//列数为20
			{

				bool DrawPlane = false;
				for (int k = 0; k < 3; k++)
				{
					if (i == arrPlane[k].nPlaneBodyRow && j == arrPlane[k].nPlaneBodyCol)
					{
						DrawPlane = true;
						break;
					}
				}

				/*
				bool DrawBullet = false;
				for (int m = 0; m < 100; m++)
				{
				if (i == sBullet[m].nBulletRow && j == sBullet[m].nBulletCol)
				{
				DrawBullet = true;
				break;
				}
				}
				*/

				bool DrawBullet = false;
				for (int m = 0; m < vecBullet.size(); m++)  //这里不能是100 因为数量是随着帧数变化 这里定义为长度
				{
					if (i == vecBullet[m].nBulletRow && j == vecBullet[m].nBulletCol)
					{
						DrawBullet = true;
						break;
					}
				}

				bool DrawEnemy = false;
				for (int m = 0; m < vecEnemy.size(); m++)
				{
					for (int n = 0; n < 4;n++)
					{
						if (i == vecEnemy[m].arrEnemyNode[n].nEnemyNodeRow && j == vecEnemy[m].arrEnemyNode[n].nEnemyNodeCol)
						{
							DrawEnemy = true;
							break;
						}
					}
				}


				//判断第i行第j列应该画什么
				if (1 == arrMap[i][j])//把数字为1的地方替换为■,作为墙壁
				{
					cout << "■";
				}
				else if (DrawPlane)
				{
					cout << "■";
				}
				else if (i == sPlaneHead.nPlaneHeadRow && j == sPlaneHead.nPlaneHeadCol)
				{
					cout << "■";
				}
				else if (DrawBullet)
				{
					cout << "弹";
				}
				else if (DrawEnemy)
				{
					cout << "▼";
				}
				else
				{
					cout << "  ";//数字为0的地方设为空格
				}
			}
			cout << endl;//换行,排列成二维数组的形状
		}
		system("cls");

	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值