做完后的效果
运行界面
开始界面(奸笑)
游戏界面
到达五角星处胜利
胜利界面
源程序
#include<iostream>
#include<conio.h>
#include<stdlib.h>
#include<windows.h>
using namespace std;
int map[22][22]={
/*
0为可走的地
1为边界
4为墙,不可移动
5为小人
*/
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,4,0,4,0,4,4,0,0,0,3,0,0,4,0,4,0,0,0,0,0,1},
{1,4,0,4,0,0,0,0,4,4,0,4,0,4,0,4,0,0,0,0,0,1},
{1,0,0,0,4,0,4,0,0,0,0,0,4,4,0,4,4,4,0,4,0,1},
{1,4,0,4,0,0,0,4,4,0,4,0,4,0,0,0,0,4,0,4,4,1},
{1,0,0,4,0,4,0,0,4,0,0,0,4,0,4,0,4,0,0,4,0,1},
{1,0,0,0,0,0,4,0,4,4,0,0,4,0,4,0,0,0,0,0,4,1},
{1,4,0,0,4,0,4,0,0,4,0,4,4,0,4,0,4,0,4,0,4,1},
{1,0,0,0,4,0,4,0,4,0,0,0,0,0,0,0,0,4,0,0,4,1},
{1,0,4,4,4,0,4,4,0,0,0,0,4,4,4,4,4,4,0,4,0,1},
{1,0,0,0,0,4,0,0,0,4,4,4,0,0,0,0,0,4,0,4,0,1},
{1,4,0,4,0,4,4,0,0,4,0,4,0,4,4,4,0,0,0,4,0,1},
{1,4,0,4,0,4,0,0,0,4,0,4,0,0,0,4,0,4,0,0,0,1},
{1,4,0,4,4,0,4,4,4,4,0,4,4,4,4,4,0,4,0,0,4,1},
{1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,0,1},
{1,0,0,4,0,4,0,0,0,4,4,0,0,4,0,4,4,4,0,4,0,1},
{1,0,4,4,4,4,4,4,0,0,0,4,0,4,0,0,0,0,0,4,0,1},
{1,0,0,0,0,0,0,4,4,0,4,4,0,4,4,0,4,0,4,0,0,1},
{1,0,4,0,4,4,0,0,4,0,4,0,0,4,0,0,0,4,4,0,4,1},
{1,0,4,0,4,0,4,0,4,4,4,0,4,4,4,0,0,4,4,0,4,1},
{1,5,4,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,1,1}
};
void drawMap()
{
for(int i=0;i<22;i++)
{
for(int j=0;j<22;j++)
{
switch(map[i][j])
{
//根据不同的数字画不同的东西
case 0: cout<<" "; break;
case 1: cout<<"■"; break;
case 5: cout<<"♀"; break;
case 4: cout<<"□"; break;
case 3: cout<<"☆"; break;
}
}
cout<<"\n";
}
}
void PlayGame()
{
int x,y;
for(int i=0;i<22;i++)
{
for(int j=0;j<22;j++)
{
if(map[i][j]==5)//每一次判断小人位置处于哪
{
x=i;
y=j;
}
}
}
char k;
k=getch();
switch(k)
{
//向上移动
case 'W':
case 'w':
case 72:
if(map[x-1][y]==0)//如果上面是可走部分
{
map[x-1][y]+=5;
map[x][y]-=5;
}
else if(map[x-1][y]==3)//如果上面是胜利处
{
system("cls");
cout<<"恭喜你通关!";
exit(0);
}
break;
//向下移动(后面跟第一个case部分基本一样)
case 'S':
case 's':
case 80:
if(map[x+1][y]==0)//判断下
{
map[x+1][y]+=5;
map[x][y]-=5;
}
else if(map[x+1][y]==3)
{
system("cls");
cout<<"恭喜你通关!";
exit(0);
}
break;
case 'A':
case 'a':
case 75:
if(map[x][y-1]==0)//判断左
{
map[x][y-1]+=5;
map[x][y]-=5;
}
else if(map[x][y-1]==3)
{
system("cls");
cout<<"恭喜你通关!";
exit(0);
}
break;
case 'D':
case 'd':
case 77:
if(map[x][y+1]==0)//判断右
{
map[x][y+1]+=5;
map[x][y]-=5;
}
else if(map[x][y+1]==3)
{
system("cls");
cout<<"恭喜你通关!";
exit(0);
}
break;
}
}
int main()//主界面
{
cout<<"22*22格关卡,完全ojbk\n"; system("pause");
while(1)
{
//运行处
system("cls");
drawMap();
PlayGame();
}
return 0;
}
完结,撒花