5.C++面向过程的方式写的推箱子游戏

来源:互联网 发布:qt淘宝兼职刷单流程 编辑:程序博客网 时间:2024/05/17 02:27
#include<iostream>
#include <Windows.h>
#include <conio.h>
using namespace std;
void HideCursor()//隐藏光标函数
{
CONSOLE_CURSOR_INFO cursor_info = { 1, 0 };
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
void GotoXY(int row, int col)//定位光标的函数/将光标移动到指定的像素点
{
COORD pos;
pos.X = 2 * col;
pos.Y = row;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
#define Pass1ROW 9//宏定义地图的行
#define  Pass1COL 9//宏定义地图的行
#define Pass2ROW 7
#define  Pass2COL 8
#define RAOD 0//空为0
#define WALL 1//■为墙/1
#define BOX 2//★为箱子/2
#define GOAL 3//☆为目标/3
void Pass1()
{
int map[Pass1ROW][Pass1COL] =
{
{ 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 2, 0, 0, 0, 3, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 2, 0, 0, 0, 3, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 1, 1, 1, 1, 1, 1, 1, 1 }
};
for (int i = 0; i < Pass1ROW; i++)
{
for (int j = 0; j < Pass1COL; j++)
{
switch (map[i][j])
{
case RAOD:
{
cout << "  ";
break;
}
case WALL:
{
cout << "■";
break;
}
case BOX:
{
cout << "★";
break;
}
case GOAL:
{
cout << "☆";
break;
}
}
}cout << endl;
}
cout << "    " << "第一关" << "    " << endl;
cout << "w:向上" << " " << "s:向下" << endl;
cout << "a:向左" << " " << "d:向右" << endl;
int row = 4, col = 4;


while (true)
{
if (map[2][6] == BOX && map[5][6] == BOX)
{
GotoXY(10, 0);
cout << "    " << "恭喜过关" << "    " << endl;
cout << "w:向上" << " " << "s:向下" << endl;
cout << "a:向左" << " " << "d:向右" << endl;
system("pause>nul");
Sleep(1000);
system("cls");
return;
}
GotoXY(row, col);
cout << "♀";
char ch = _getch();
switch (ch)
{
case 'w':
case 'W':
if (map[row - 1][col] == RAOD)
{
GotoXY(row, col);
cout << "  ";
row -= 1;
GotoXY(row, col);
cout << "♀";
}
else if (map[row - 1][col] == BOX&&
map[row - 2][col] == RAOD)
{
GotoXY(row, col);
cout << "  ";
GotoXY(row - 1, col);
cout << "  ";
map[row - 1][col] = RAOD;
map[row - 2][col] = BOX;
row -= 1;
GotoXY(row, col);
cout << "♀";
GotoXY(row - 1, col);
cout << "★";
}
else if (map[row - 1][col] == BOX&&
map[row - 2][col] == GOAL)
{
GotoXY(row, col);
cout << "  ";
GotoXY(row - 1, col);
cout << "  ";
map[row - 1][col] = RAOD;
map[row - 2][col] = BOX;
row -= 1;
GotoXY(row, col);
cout << "♀";
GotoXY(row - 1, col);
cout << "★";
}
else if (map[row - 1][col] == GOAL&&map[row - 2][col] == RAOD)
{
GotoXY(row, col);
cout << "  ";
row -= 1;
map[row][col] = RAOD;
map[row - 1][col] = RAOD;
GotoXY(row, col);
cout << "♀";
}
if (map[2][6] != GOAL&&map[2][6] != BOX)
{
GotoXY(2, 6);
cout << "☆";
}
if (map[5][6] != GOAL&&map[5][6] != BOX)
{
GotoXY(5, 6);
cout << "☆";
}
break;
case 's':
case 'S':
if (map[row + 1][col] == RAOD)
{
GotoXY(row, col);
cout << "  ";
row += 1;
GotoXY(row, col);
cout << "♀";
}
else if (map[row + 1][col] == BOX&&
map[row + 2][col] == RAOD)
{
GotoXY(row, col);
cout << "  ";
GotoXY(row + 1, col);
cout << "  ";
map[row + 1][col] = RAOD;
map[row + 2][col] = BOX;
row += 1;
GotoXY(row, col);
cout << "♀";
GotoXY(row + 1, col);
cout << "★";
}
else if (map[row + 1][col] == BOX&&
map[row + 2][col] == GOAL)
{
GotoXY(row, col);
cout << "  ";
GotoXY(row + 1, col);
cout << "  ";
map[row + 1][col] = RAOD;
map[row + 2][col] = BOX;
row += 1;
GotoXY(row, col);
cout << "♀";
GotoXY(row + 1, col);
cout << "★";
}
else if (map[row + 1][col] == GOAL&&map[row + 2][col] == RAOD)
{
GotoXY(row, col);
cout << "  ";
GotoXY(row, col);
cout << "  ";
row += 1;
map[row][col] = RAOD;
map[row + 1][col] = RAOD;
GotoXY(row, col);
cout << "♀";
}
if (map[2][6] != GOAL&&map[2][6] != BOX)
{
GotoXY(2, 6);
cout << "☆";
}
if (map[5][6] != GOAL&&map[5][6] != BOX)
{
GotoXY(5, 6);
cout << "☆";
}
break;
case 'a':
case 'A':
if (map[row][col - 1] == RAOD)
{
GotoXY(row, col);
cout << "  ";
col -= 1;
GotoXY(row, col);
cout << "♀";
}
else if (map[row][col - 1] == BOX&&
map[row][col - 2] == RAOD)
{
GotoXY(row, col);
cout << "  ";
GotoXY(row, col - 1);
cout << "  ";
map[row][col - 1] = RAOD;
map[row][col - 2] = BOX;
col -= 1;
GotoXY(row, col);
cout << "♀";
GotoXY(row, col - 1);
cout << "★";
}
else if (map[row][col - 1] == BOX&&
map[row][col - 2] == GOAL)
{
GotoXY(row, col);
cout << "  ";
GotoXY(row, col - 1);
cout << "  ";
map[row][col - 1] = RAOD;
map[row][col - 2] = BOX;
col -= 1;
GotoXY(row, col);
cout << "♀";
GotoXY(row, col - 1);
cout << "★";
}
else if (map[row][col - 1] == GOAL&&map[row][col - 2] == RAOD)
{
GotoXY(row, col);
cout << "  ";
GotoXY(row, col);
cout << "  ";
col -= 1;
map[row][col] = RAOD;
map[row][col - 1] = RAOD;
GotoXY(row, col);
cout << "♀";
}
if (map[2][6] != GOAL&&map[2][6] != BOX)
{
GotoXY(2, 6);
cout << "☆";
}
if (map[5][6] != GOAL&&map[5][6] != BOX)
{
GotoXY(5, 6);
cout << "☆";
}
break;
case 'd':
case 'D':
if (map[row][col + 1] == RAOD)
{
GotoXY(row, col);
cout << "  ";
col += 1;
GotoXY(row, col);
cout << "♀";
}
else if (map[row][col + 1] == BOX&&
map[row][col + 2] == RAOD)
{
GotoXY(row, col);
cout << "  ";
GotoXY(row, col + 1);
cout << "  ";
map[row][col + 1] = RAOD;
map[row][col + 2] = BOX;
col += 1;
GotoXY(row, col);
cout << "♀";
GotoXY(row, col + 1);
cout << "★";
}
else if (map[row][col + 1] == BOX&&
map[row][col + 2] == GOAL)
{
GotoXY(row, col);
cout << "  ";
GotoXY(row, col + 1);
cout << "  ";
map[row][col + 1] = RAOD;
map[row][col + 2] = BOX;
col += 1;
GotoXY(row, col);
cout << "♀";
GotoXY(row, col + 1);
cout << "★";
}
else if (map[row][col + 1] == GOAL&&map[row][col + 2] == RAOD)
{
GotoXY(row, col);
cout << "  ";
GotoXY(row, col);
cout << "  ";
col += 1;
map[row][col] = RAOD;
map[row][col + 1] = RAOD;
GotoXY(row, col);
cout << "♀";
}
if (map[2][6] != GOAL&&map[2][6] != BOX)
{
GotoXY(2, 6);
cout << "☆";
}
if (map[5][6] != GOAL&&map[5][6] != BOX)
{
GotoXY(5, 6);
cout << "☆";
}
break;
}
}
}
void Pass2()
{
int map[Pass1ROW][Pass1COL] =
{
{ 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 2, 0, 0, 2, 0, 0, 1 },
{ 1, 0, 0, 3, 3, 0, 0, 0, 1 },
{ 1, 0, 0, 3, 3, 0, 0, 0, 1 },
{ 1, 0, 2, 0, 0, 2, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 1, 1, 1, 1, 1, 1, 1, 1 }
};
//3,1  3,2 3,3 3,4 3,5 3,6  为GOAL 目标点
for (int i = 0; i < Pass1ROW; i++)
{
for (int j = 0; j < Pass1COL; j++)
{
switch (map[i][j])
{
case RAOD:
{
cout << "  ";
break;
}
case WALL:
{
cout << "■";
break;
}
case BOX:
{
cout << "★";
break;
}
case GOAL:
{
cout << "☆";
break;
}
}
}
cout << endl;
}
cout << "   " << "第二关" << "   " << endl;
cout << "w:向上" << "" << "s:向下" << endl;
cout << "a:向左" << "" << "d:向右" << endl;
int row = 6, col = 4;
while (true)
{
if (map[3][3] == BOX && map[3][4] == BOX&&map[4][3] == BOX&&map[4][4] == BOX)
{
GotoXY(10, 0);
cout << "    " << "恭喜过关" << "    " << endl; cout << "    " << "游戏结束" << "    " << endl;
cout << "w:向上" << " " << "s:向下" << endl;
cout << "a:向左" << " " << "d:向右" << endl;
system("pause>nul");
Sleep(1000);
exit(0);
return;
}
GotoXY(row, col);
cout << "♀";
char ch = _getch();
switch (ch)
{
case 'w':
case 'W':
if (map[row - 1][col] == RAOD)
{
GotoXY(row, col);
cout << "  ";
row -= 1;
GotoXY(row, col);
cout << "♀";
}
else if (map[row - 1][col] == BOX&&
map[row - 2][col] == RAOD)
{
GotoXY(row, col);
cout << "  ";
GotoXY(row - 1, col);
cout << "  ";
map[row - 1][col] = RAOD;
map[row - 2][col] = BOX;
row -= 1;
GotoXY(row, col);
cout << "♀";
GotoXY(row - 1, col);
cout << "★";
}
else if (map[row - 1][col] == BOX&&
map[row - 2][col] == GOAL)
{
GotoXY(row, col);
cout << "  ";
GotoXY(row - 1, col);
cout << "  ";
map[row - 1][col] = RAOD;
map[row - 2][col] = BOX;
row -= 1;
GotoXY(row, col);
cout << "♀";
GotoXY(row - 1, col);
cout << "★";
}
else if (map[row - 1][col] == GOAL&&
map[row - 2][col] == RAOD)
{
GotoXY(row, col);
cout << "  ";
row -= 1;
map[row][col] = RAOD;
map[row - 1][col] = RAOD;
GotoXY(row, col);
cout << "♀";
}
else if (map[row - 1][col] == GOAL&&
map[row - 2][col] == GOAL)
{
GotoXY(row, col);
cout << "  ";
GotoXY(row - 1, col);
cout << "  ";
row -= 1;
map[row][col] = RAOD;
map[row - 1][col] = GOAL;
map[row - 2][col] = RAOD;
GotoXY(row, col);
cout << "♀";
GotoXY(row - 1, col);
cout << "☆";
}
if (map[3][3] != GOAL&&map[3][3] != BOX)
{
GotoXY(3, 3);
cout << "☆";
}
if (map[3][4] != GOAL&&map[3][4] != BOX)
{
GotoXY(3, 4);
cout << "☆";
}
if (map[4][3] != GOAL&&map[4][3] != BOX)
{
GotoXY(4, 3);
cout << "☆";
}
if (map[4][4] != GOAL&&map[4][4] != BOX)
{
GotoXY(4, 4);
cout << "☆";
}
break;
case 's':
case 'S':
if (map[row + 1][col] == RAOD)
{
GotoXY(row, col);
cout << "  ";
row += 1;
GotoXY(row, col);
cout << "♀";
}
else if (map[row + 1][col] == BOX&&
map[row + 2][col] == RAOD)
{
GotoXY(row, col);
cout << "  ";
GotoXY(row + 1, col);
cout << "  ";
map[row + 1][col] = RAOD;
map[row + 2][col] = BOX;
row += 1;
GotoXY(row, col);
cout << "♀";
GotoXY(row + 1, col);
cout << "★";
}
else if (map[row + 1][col] == BOX&&
map[row + 2][col] == GOAL)
{
GotoXY(row, col);
cout << "  ";
GotoXY(row + 1, col);
cout << "  ";
map[row + 1][col] = RAOD;
map[row + 2][col] = BOX;
row += 1;
GotoXY(row, col);
cout << "♀";
GotoXY(row + 1, col);
cout << "★";
}
else if (map[row + 1][col] == GOAL&&
map[row + 2][col] == RAOD)
{
GotoXY(row, col);
cout << "  ";
GotoXY(row + 1, col);
cout << "  ";
row += 1;
map[row][col] = RAOD;
map[row + 1][col] = RAOD;
GotoXY(row, col);
cout << "♀";
}
else if (map[row + 1][col] == GOAL&&
map[row + 2][col] == GOAL)
{
GotoXY(row, col);
cout << "  ";
GotoXY(row + 1, col);
cout << "  ";
row += 1;
map[row][col] = RAOD;
map[row + 1][col] = GOAL;
map[row + 2][col] = RAOD;
GotoXY(row, col);
cout << "♀";
GotoXY(row + 1, col);
cout << "☆";
}
if (map[3][3] != GOAL&&map[3][3] != BOX)
{
GotoXY(3, 3);
cout << "☆";
}
if (map[3][4] != GOAL&&map[3][4] != BOX)
{
GotoXY(3, 4);
cout << "☆";
}
if (map[4][3] != GOAL&&map[4][3] != BOX)
{
GotoXY(4, 3);
cout << "☆";
}
if (map[4][4] != GOAL&&map[4][4] != BOX)
{
GotoXY(4, 4);
cout << "☆";
}
break;
case 'a':
case 'A':
if (map[row][col - 1] == RAOD)
{
GotoXY(row, col);
cout << "  ";
col -= 1;
GotoXY(row, col);
cout << "♀";
}
else if (map[row][col - 1] == BOX&&
map[row][col - 2] == RAOD)
{
GotoXY(row, col);
cout << "  ";
GotoXY(row, col - 1);
cout << "  ";
map[row][col - 1] = RAOD;
map[row][col - 2] = BOX;
col -= 1;
GotoXY(row, col);
cout << "♀";
GotoXY(row, col - 1);
cout << "★";
}
else if (map[row][col - 1] == BOX&&
map[row][col - 2] == GOAL)
{
GotoXY(row, col);
cout << "  ";
GotoXY(row, col - 1);
cout << "  ";
map[row][col - 1] = RAOD;
map[row][col - 2] = BOX;
col -= 1;
GotoXY(row, col);
cout << "♀";
GotoXY(row, col - 1);
cout << "★";
}
else if (map[row][col - 1] == GOAL&&
map[row][col - 2] == RAOD)
{
GotoXY(row, col);
cout << "  ";
GotoXY(row, col - 1);
cout << "  ";
col -= 1;
map[row][col] = RAOD;
map[row][col - 1] = RAOD;
GotoXY(row, col);
cout << "♀";
}
else if (map[row][col - 1] == GOAL&&
map[row][col - 2] == GOAL)
{
GotoXY(row, col);
cout << "  ";
GotoXY(row, col - 1);
cout << "  ";
row -= 1;
map[row][col] = RAOD;
map[row][col - 1] = GOAL;
map[row][col - 2] = RAOD;
GotoXY(row, col);
cout << "♀";
GotoXY(row + 1, col);
cout << "☆";
}
if (map[3][3] != GOAL&&map[3][3] != BOX)
{
GotoXY(3, 3);
cout << "☆";
}
if (map[3][4] != GOAL&&map[3][4] != BOX)
{
GotoXY(3, 4);
cout << "☆";
}
if (map[4][3] != GOAL&&map[4][3] != BOX)
{
GotoXY(4, 3);
cout << "☆";
}
if (map[4][4] != GOAL&&map[4][4] != BOX)
{
GotoXY(4, 4);
cout << "☆";
}
break;
case 'd':
case 'D':
if (map[row][col + 1] == RAOD)
{
GotoXY(row, col);
cout << "  ";
col += 1;
GotoXY(row, col);
cout << "♀";
}
else if (map[row][col + 1] == BOX&&
map[row][col + 2] == RAOD)
{
GotoXY(row, col);
cout << "  ";
GotoXY(row, col + 1);
cout << "  ";
map[row][col + 1] = RAOD;
map[row][col + 2] = BOX;
col += 1;
GotoXY(row, col);
cout << "♀";
GotoXY(row, col + 1);
cout << "★";
}
else if (map[row][col + 1] == BOX&&
map[row][col + 2] == GOAL)
{
GotoXY(row, col);
cout << "  ";
GotoXY(row, col + 1);
cout << "  ";
map[row][col + 1] = RAOD;
map[row][col + 2] = BOX;
col += 1;
GotoXY(row, col);
cout << "♀";
GotoXY(row, col + 1);
cout << "★";
}
else if (map[row][col + 1] == GOAL&&
map[row][col + 2] == RAOD)
{
GotoXY(row, col);
cout << "  ";
GotoXY(row, col + 1);
cout << "  ";
col += 1;
map[row][col] = RAOD;
map[row][col + 1] = RAOD;
GotoXY(row, col);
cout << "♀";
}
else if (map[row][col + 1] == GOAL&&
map[row][col + 2] == GOAL)
{
GotoXY(row, col);
cout << "  ";
GotoXY(row, col + 1);
cout << "  ";
row += 1;
map[row][col] = RAOD;
map[row][col + 1] = GOAL;
map[row][col + 2] = RAOD;
GotoXY(row, col);
cout << "♀";
GotoXY(row + 1, col);
cout << "☆";
}
if (map[3][3] != GOAL&&map[3][3] != BOX)
{
GotoXY(3, 3);
cout << "☆";
}
if (map[3][4] != GOAL&&map[3][4] != BOX)
{
GotoXY(3, 4);
cout << "☆";
}
if (map[4][3] != GOAL&&map[4][3] != BOX)
{
GotoXY(4, 3);
cout << "☆";
}
if (map[4][4] != GOAL&&map[4][4] != BOX)
{
GotoXY(4, 4);
cout << "☆";
}
break;
}
}
}
void main()
{
HideCursor();
Pass1();
Pass2();
}
原创粉丝点击