四季网

四季网

C++课设 用room类和maze类实现的迷宫游戏 最多走八步_c++走迷宫游戏

admin

本文目录一览

C++设计一个迷宫并走出来

本程序的前提是将迷宫保存在一个二维数组里,可走的地方为0,不可走的地方为1。由于采用回朔算法,不使用递归,所以首先应该建立一个栈来保存路径,路径是用一个一个点来表示的,也就是说栈中保存的是一系列点的列表。
栈节点类型说明:
struct StackNode
{
POINT Point;
struct StackNode *Next, *Prev;//双向链表形式
};

栈结构用一个类(CPointStack)实现,声明如下:
class CPointStack
{
public:
void ClearStack();//清空栈
void InitStack();//初始化栈
bool Pop(POINT pt);//弹出顶端元素,并给出该点的坐标,返回是否弹出成功
bool Push(POINT pt);//将pt点的信息压入栈,返回是否压入成功
CPointStack();
virtual ~CPointStack();
protected:
StackNode *m_psnTop;//栈顶指针
StackNode m_snBottom;//栈底,不保存点信息
};

以下为成员函数实现,都是一些数据结构的操作,应该没什么好说的:
//构造时初始化栈
CPointStack::CPointStack()
{
InitStack();
}
//析构时清空栈
CPointStack::~CPointStack()
{
ClearStack();
}

//将点压入栈(成功返回true,失败返回false)
bool CPointStack::Push(POINT pt)
{
StackNode* NewNode = new StackNode;
//是否返回true主要看这里申请内存是否成功
if(!NewNode)
return false;

NewNode-Point = pt;
NewNode-Prev = m_psnTop;
NewNode-Next = NULL;
m_psnTop-Next = NewNode;
m_psnTop = NewNode;

return true;
}

//将点弹出栈(成功返回true,栈为空则返回false)
bool CPointStack::Pop(POINT pt)
{
if(m_psnTop == m_snBottom)//是否返回true主要看这里栈是否为空
return false;

StackNode *p;

p = m_psnTop;
m_psnTop = m_psnTop-Prev;
pt = p-Point;
delete p;
m_psnTop-Next = NULL;
return true;
}

//初始化栈
void CPointStack::InitStack()
{
m_psnTop = m_snBottom;
m_snBottom.Next = NULL;
m_snBottom.Prev = NULL;
}

//清空栈
void CPointStack::ClearStack()
{
StackNode *p;

while(m_psnTop != m_snBottom)
{
p = m_psnTop;
m_psnTop = m_psnTop-Prev;
delete p;
}
}

接下来设计怎样走出这个迷宫,也就是迷宫算法的主体部分。再次用一个类实现。
在设计这个类时,我考虑到以下几点:
1、迷宫入口和出口的坐标
2、保存迷宫的2维数组
3、获得路径的函数
但是实际设计时由于没有考虑太多问题,只是以设计迷宫算法和解决一个具体迷宫为目的,所以没有考虑动态大小的迷宫,而是将迷宫大小定为601×401。而且在设计迷宫算法后没有将路径顺序输出而是直接在原图中标识(在保存迷宫数据的表中设置经过的点为2而将死路点设置为3)。
这样迷宫类(CGoMaze)的声明为:
class CGoMaze
{
public:
void Go();//寻找路径的函数
POINT m_ptIn;//入口坐标
POINT m_ptOut;//出口坐标
BYTE m_btArrMaze[401][601];//保存迷宫的二维表
CGoMaze();
virtual ~CGoMaze();
};

最后让我们来看一下CGoMaze::Go()这个函数:
我们模仿人走迷宫时的思路,设置一个当前点,一个目标点(下一个要走的点)。初始情况下当前点为入口,终止条件为当前点为出口,这样,我们的函数大概结构就出来了。
在从入口到出口的过程中程序对当前点的上、下、左、右四个点依次进行判断,当发现任一个方向是未走过的区域时,就将当前点指向那个点进行尝试,同时将当前点入栈并做标记。而当4个方向都不通或已走过时,则为死路,标记当前点为死路并从栈中弹出上一个点继续进行尝试,这时因为当前点已被标记为死路,则弹出上一个点时就不会重复这条路,达到寻找正确路径的效果。
Go函数的具体实现如下,其实挺简单的^_^:
void CGoMaze::Go()
{
CPointStack psPath;//保存路径的栈
POINT ptCur = m_ptIn, ptNext;//设置当前点为入口

while(ptCur.x != m_ptOut.x || ptCur.y != m_ptOut.y)//判断是否已经走出
{
ptNext = ptCur;//设置目标点为当前点,便于下面偏移
if(m_btArrMaze[ptCur.y - 1][ptCur.x] == 0)
ptNext.y --;//如果上方是空的,则目标点向上偏移
else if(m_btArrMaze[ptCur.y][ptCur.x - 1] == 0)
ptNext.x --;//如果左边是空的,则目标点向左偏移
else if(m_btArrMaze[ptCur.y + 1][ptCur.x] == 0)
ptNext.y ++;//如果下方是空的,则目标点向下偏移
else if(m_btArrMaze[ptCur.y][ptCur.x + 1] == 0)
ptNext.x ++;//如果右边是空的,则目标点向右偏移
else
{//这里是没有路的状态
m_btArrMaze[ptCur.y][ptCur.x] = 3;//标记为死路
psPath.Pop(ptCur);//弹出上一次的点
continue;//继续循环
}
//如果有路的话会执行到这里
m_btArrMaze[ptCur.y][ptCur.x] = 2;//标记当前点为路径上的点
psPath.Push(ptCur);//当前点压入栈中
ptCur = ptNext;//移动当前点
}
}

其实这个部分可以将栈设置为CGoMaze类的成员,然后在Go函数里加上:
psPath.ClearStack();
这样就可以用Timer来演示走迷宫的过程了

哪位前辈能够提供一段c++的走迷宫游戏的代码啊 叩谢了啊!!!!!!!!

#include "graphics.h"
#include "stdio.h"
#define N 10
#define M N*N-4+1 /*堆栈最大值,用来保存路口信息*/
#define UP 1
#define DOWN -1
#define LEFT 2
#define RIGHT -2
#define UP_M man.x-1=0a[man.x-1][man.y] /*人当前位置的上一个位置*/
#define DOWN_M man.x+1Na[man.x+1][man.y]
#define LEFT_M man.y-1=0a[man.x][man.y-1]
#define RIGHT_M man.y+1Na[man.x][man.y+1]
#define ENTER 3 /*岔路的入口*/
#define HAVE 2 /*某条路已经走过*/

struct cross{int up,down,left,right,x,y;} across,stack[M]={0};
int top=1;
int PX=70,PY=40;
struct {int x,y,s;}man;

/*迷宫定义,1表示路,可自行更改迷宫的路径,可使全为1,看效果等*/
int a[N][N]={0,0,0,1,1,0,1,1,1,0,
1,1,0,1,0,1,1,0,1,0,
0,1,1,1,1,0,1,1,1,1,
1,0,1,0,1,1,1,0,1,0,
1,1,1,1,0,0,1,1,1,1,
1,0,1,0,1,1,1,0,1,0,
0,0,1,1,1,0,1,1,1,0,
1,1,1,0,1,0,1,0,1,0,
0,0,1,0,1,1,1,0,1,1,
0,1,1,0,0,1,0,0,0,0};

void init_man() /*初始化人的状态,要求迷宫入口须在左侧*/
{int i;setcolor(WHITE);
for(i=0;iN;i++)
if(a[i][0]) {man.x=i;man.y=0;
if(a[i][1]) man.s=RIGHT;
else if(i+1Na[i+1][0]) man.s=DOWN;
else if(i-1=0a[i-1][0]) man.s=UP;
else {outtextxy(500,300,"no way!");getch();exit(0);}
return ;}
if(i==N) {outtextxy(500,300,"no enter!");getch();exit(0);}
}

void show_map() /*显示迷宫*/
{int i,j;

for(i=0;iN;i++)
for(j=0;jN;j++)
if(a[i][j]) {setfillstyle(1,WHITE);
bar(PX+j*20,PY+i*20,PX+j*20+20,PY+i*20+20);}
else {setfillstyle(1,LIGHTBLUE);
bar(PX+j*20,PY+i*20,PX+j*20+20,PY+i*20+20);}
setcolor(BLACK);
for(i=0;iN;i++)
{line(PX+i*20,PY,PX+i*20,PY+20*N);
line(PX,PY+i*20,PX+20*N,PY+i*20);}
}

void show_man(int color)
{
setfillstyle(1,color);
bar(PX+man.y*20+5,PY+man.x*20+5,PX+man.y*20+20-5,PY+man.x*20+20-5);
}

int cross() /*岔路判断*/
{int count=0;
if(UP_M) count++;
if(DOWN_M) count++;
if(LEFT_M) count++;
if(RIGHT_M) count++;
return count;}

void move() /*依据人的移动状态而移动到新位置*/
{
show_man(GREEN);
switch(man.s)
{case UP:man.x-=1;break;
case DOWN:man.x+=1;break;
case LEFT:man.y-=1;break;
case RIGHT:man.y+=1;break;
}
show_man(LIGHTRED);
}

void back() /*回头走*/
{switch(man.s)
{case UP:man.s=DOWN;move();break;
case DOWN:man.s=UP;move();break;
case LEFT:man.s=RIGHT;move();break;
case RIGHT:man.s=LEFT;move();break;
}
}

void go_on() /*为通路且不是岔路时,继续向前走*/
{switch(man.s)
{case UP:if(UP_M) move();
else if(LEFT_M) {man.s=LEFT;move();}
else if(RIGHT_M) {man.s=RIGHT;move();}
break;
case DOWN:if(DOWN_M) move();
else if(LEFT_M){man.s=LEFT;move();}
else if(RIGHT_M) {man.s=RIGHT;move();}
break;
case LEFT:if(LEFT_M) move();
else if(UP_M) {man.s=UP;move();}
else if(DOWN_M) {man.s=DOWN;move();}
break;
case RIGHT:if(RIGHT_M) move();
else if(UP_M) {man.s=UP;move();}
else if(DOWN_M) {man.s=DOWN;move();}
break;
}
}

int xin() /*判断人当前位置是否是新岔路口*/
{int i;
for(i=1;itop;i++)
if(man.x==stack[i].xman.y==stack[i].y) return i;
return 0;
}

void copy() /*拷贝岔路信息到across结构体*/
{across.x=man.x;
across.y=man.y;
if(UP_M==1) across.up=1;
else across.up=0;
if(DOWN_M==1) across.down=1;
else across.down=0;
if(LEFT_M==1) across.left=1;
else across.left=0;
if(RIGHT_M==1) across.right=1;
else across.right=0;
}

void rukou() /*为岔路设置一个入口*/
{switch(man.s)
{case UP:across.down=ENTER;break;
case DOWN:across.up=ENTER;break;
case LEFT:across.right=ENTER;break;
case RIGHT:across.left=ENTER;break;
}
}

void xuanlu(struct cross *p) /*在岔路时,为人选一条路行走*/
{switch(man.s)
{case UP:if(p-up==1) p-up=HAVE;
else if(p-left==1) {man.s=LEFT;p-left=HAVE;}
else if(p-right==1) {man.s=RIGHT;p-right=HAVE;}
else {man.s=DOWN;p-down=HAVE;}
break;
case DOWN:if(p-down==1) p-down=HAVE;
else if(p-left==1) {man.s=LEFT;p-left=HAVE;}
else if(p-right==1) {man.s=RIGHT;p-right=HAVE;}
else {man.s=UP;p-up=HAVE;}
break;
case LEFT:if(p-left==1) p-left=HAVE;
else if(p-up==1) {man.s=UP;p-up=HAVE;}
else if(p-down==1) {man.s=DOWN;p-down=HAVE;}
else {man.s=RIGHT;p-right=HAVE;}
break;
case RIGHT:if(p-right==1) p-right=HAVE;
else if(p-up==1) {man.s=UP;p-up=HAVE;}
else if(p-down==1) {man.s=DOWN;p-down=HAVE;}
else {man.s=LEFT;p-left=HAVE;}
break;
}
}

push(struct cross *p) /*把新岔路口入栈*/
{stack[top].left=p-left;
stack[top].right=p-right;
stack[top].up=p-up;
stack[top].down=p-down;
stack[top].x=p-x;
stack[top].y=p-y;
top++;
}

int wan(struct cross *p) /*当前人所在的岔路口走完否?*/
{int count=0;
if(p-left==1) count++;
if(p-right==1) count++;
if(p-up==1) count++;
if(p-down==1) count++;
if(count0) return 0;
return 1;
}

void chukou(struct cross *p) /*人从出口出来*/
{if(p-up==ENTER) man.s=UP;
else if(p-down==ENTER) man.s=DOWN;
else if(p-left==ENTER) man.s=LEFT;
else man.s=RIGHT;
}

main()
{int c,k;
int gdriver=DETECT,gmode;
registerbgidriver(EGAVGA_driver);
initgraph(gdriver,gmode,"");
cleardevice();
show_map();
init_man();show_man(LIGHTRED);getch();delay(65000);
do{
switch(c=cross())
{case 1:switch(man.s)
{case UP:if(UP_M) move();
else back();break;
case DOWN:if(DOWN_M) move();
else back();break;
case LEFT:if(LEFT_M) move();
else back();break;
case RIGHT:if(RIGHT_M) move();
else back();break;}
break;

case 2:go_on();break;
case 3:
case 4:k=xin();
if(!k) {copy();rukou();xuanlu(across);push(across);}
else {if(wan(stack[k])) chukou(stack[k]);
else xuanlu(stack[k]);}

move();
break;
}
delay(65000);
}while(!kbhit());
closegraph();}

==================================================
编译环境:tc 2.0

C++课设 用room类和maze类实现的迷宫游戏 最多走八步

书籍,称为结构(太多了),我做重叠!我希望你能帮助!程序如下:
typedef结构{

诠释通道块编号;/ /路径条例

PosType的座椅;/ /通道块在迷宫中的坐标位置
二;/ /从通道块到下一个通道块方向

} SelemType ;/ /堆栈元素类型

状态MazePath(MazeType迷宫PosType的启动PosType结束){

/ /迷宫迷宫开始从入口到出口端的通道,因此,寻求存储堆栈

/ /从堆栈的底部(顶部)和返回TRUE,否则返回FALSE

InitStack(S );

CURPOS =开始;/ /设置当前位置的入口位置

curstep = 1 ;/ /探索第一步

{

如果(通(CURPOS) ){/ /当前位置可以,从来没有走过通道块

的足迹(CURPOS);/ /留下脚印

é=(curstep CURPOS,1);

推送( E);/ /路径

如果(CURPOS ==结束)

返回(TRUE);/ /到达终点

CURPOS = nextpos(CURPOS,1);/ /下一个位置当前位置东部

curstep + + ;/ /探索下一步

}

否则{/ /当前位置不能

(StackEmpty(S )){

POP(S,E);

(e.di == 4 !StackEmpty(S)){

MarkPrint ;/(e.seat)/留下印记不能退一步

POP(S,E);

}

(e.di 4){

e.di + +;

推( SE);/ /换下一个方向探索 CURPOS = nextpos(e.seat e.di);/ /设置当前位置的新方向相邻块

} / / /

} / /} / /其他

}(StackEmpty(S));

回报(FALSE);
} / / MazePath的

跪求老鼠走迷宫游戏,必须用C++编写,用栈来实现,因为是数据结构课程设计所以只要现成代码,越快越好。

C++课设 用room类和maze类实现的迷宫游戏 最多走八步_c++走迷宫游戏-第1张-游戏信息-四季网

#include "stdafx.h"

#include stack

using namespace std;

const int rows = 8,cols = 8;

HINSTANCE hInst;

HBITMAP ball;

HDC hdc,mdc,bufdc;

HWND hWnd;

DWORD tPre,tNow;

char *str;

int nowPos,prePos;

bool find;

stackint path;


int mapIndex[rows*cols] = { 0,2,0,0,0,0,0,0, ? //材1#59049;

0,1,0,1,1,1,1,0, ? //材2#59049;

0,1,0,1,0,1,1,0, ? //材3#59049;

0,1,0,0,0,1,1,0, ? //材4#59049;

0,1,1,1,1,1,1,0, ? //材5#59049;

0,1,0,0,0,0,1,0, ? //材6#59049;

0,0,1,1,1,1,1,0, ? //材7#59049;

0,0,0,0,0,0,3,0 }; //材8#59049;

int ?record[rows*cols];

ATOM MyRegisterClass(HINSTANCE hInstance);

BOOL InitInstance(HINSTANCE, int);

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

void MyPaint(HDC hdc);


int APIENTRY WinMain(HINSTANCE hInstance,

? ? ? ? ? ? ? ? ? ? ?HINSTANCE hPrevInstance,

? ? ? ? ? ? ? ? ? ? ?LPSTR ? ? lpCmdLine,

? ? ? ? ? ? ? ? ? ? ?int ? ? ? nCmdShow)

{

MSG msg;


MyRegisterClass(hInstance);



if (!InitInstance (hInstance, nCmdShow))?

{

return FALSE;

}


? ? while( msg.message!=WM_QUIT )

? ? {

? ? ? ? if( PeekMessage( msg, NULL, 0,0 ,PM_REMOVE) )

? ? ? ? {

? ? ? ? ? ? TranslateMessage( msg );

? ? ? ? ? ? DispatchMessage( msg );

? ? ? ? }

else

{

tNow = GetTickCount();

if(tNow-tPre = 100)

MyPaint(hdc);

}

? ? }

return msg.wParam;

}


//****注册窗口*************************

ATOM MyRegisterClass(HINSTANCE hInstance)

{

WNDCLASSEX wcex;


wcex.cbSize = sizeof(WNDCLASSEX);?

wcex.style = CS_HREDRAW | CS_VREDRAW;

wcex.lpfnWndProc = (WNDPROC)WndProc;

wcex.cbClsExtra = 0;

wcex.cbWndExtra = 0;

wcex.hInstance = hInstance;

wcex.hIcon = NULL;

wcex.hCursor = NULL;

wcex.hCursor = LoadCursor(NULL, IDC_ARROW);

wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);

wcex.lpszMenuName = NULL;

wcex.lpszClassName = "canvas";

wcex.hIconSm = NULL;


return RegisterClassEx(wcex);

}


//****初始化*************************************


BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)

{

HBITMAP bmp;

hInst = hInstance;


hWnd = CreateWindow("canvas", "迷宫" , WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);


if (!hWnd)

{

return FALSE;

}


MoveWindow(hWnd,10,10,430,450,true);

ShowWindow(hWnd, nCmdShow);

UpdateWindow(hWnd);

hdc = GetDC(hWnd);

mdc = CreateCompatibleDC(hdc);

bufdc = CreateCompatibleDC(hdc);


bmp = CreateCompatibleBitmap(hdc,cols*50,rows*50);

SelectObject(mdc,bmp);


HBITMAP tile;

int rowNum,colNum;

int i,x,y;


tile = (HBITMAP)LoadImage(NULL,"tile.bmp",IMAGE_BITMAP,50,50,LR_LOADFROMFILE);

ball = (HBITMAP)LoadImage(NULL,"ball.bmp",IMAGE_BITMAP,50,50,LR_LOADFROMFILE);


for (i=0;irows*cols;i++)

{

record[i] = mapIndex[i];


rowNum = i / cols;

colNum = i % cols;

x = colNum * 50;

y = rowNum * 50;

SelectObject(bufdc,tile);


if(!mapIndex[i])

BitBlt(mdc,x,y,50,50,bufdc,0,0,SRCCOPY);

else

{

? if(mapIndex[i] == 2)

{

nowPos = i;

path.push(i);

record[i] = 0;

}

BitBlt(mdc,x,y,50,50,bufdc,0,0,WHITENESS);

}

}

prePos = cols * rows + 1;


MyPaint(hdc);


return TRUE;

}


//****核心代码*********************************

void MyPaint(HDC hdc)

{

int rowNum,colNum;

int x,y;

int up,down,left,right;



rowNum = prePos / cols;

colNum = prePos % cols;

x = colNum * 50;

y = rowNum * 50;


SelectObject(bufdc,ball);

BitBlt(mdc,x,y,50,50,bufdc,0,0, WHITENESS);



rowNum = nowPos / cols;

colNum = nowPos % cols;

x = colNum * 50;

y = rowNum * 50;


SelectObject(bufdc,ball);

BitBlt(mdc,x,y,50,50,bufdc,0,0, SRCCOPY);


if(!find)

{

str = "迷宫入口";


up ? ?= nowPos - cols;

down ?= nowPos + cols;

left ?= nowPos - 1;

right = nowPos + 1;


if(up=0 record[up])

{

path.push(up);

record[up] = 0;

prePos = nowPos;

nowPos = up;


? ? ? ? if(mapIndex[nowPos] == 3)

find = true;

}

else if(down=cols*rows-1 record[down])?

{

path.push(down);

record[down] = 0;

prePos = nowPos;

nowPos = down;


if(mapIndex[nowPos] == 3)

find = true;

}

else if(left=rowNum*cols record[left]) ?

{

path.push(left);

record[left] = 0;

prePos = nowPos;

nowPos = left;


if(mapIndex[nowPos] == 3)

find = true;

}

else if(right=(rowNum+1)*cols-1 record[right]) ?

{

path.push(right);

record[right] = 0;

prePos = nowPos;

nowPos = right;


if(mapIndex[nowPos] == 3)

find = true;

}

else

{

if(path.size() = 1) //#59076;#59343;#58864;#58892;

str = "xxxxx";

else

{

path.pop();

prePos = nowPos;

nowPos = path.top();

}

}

}

else

{

str = "找到出口";

}


TextOut(mdc,0,0,str,strlen(str));

BitBlt(hdc,10,10,cols*50,rows*50,mdc,0,0,SRCCOPY);


tPre = GetTickCount();

}


//****消息函数***********************************

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

switch (message)

{

case WM_KEYDOWN:

if(wParam==VK_ESCAPE)

PostQuitMessage(0);

break;

case WM_DESTROY:

DeleteDC(mdc);

DeleteDC(bufdc);

DeleteObject(ball);


ReleaseDC(hWnd,hdc);


PostQuitMessage(0);

break;

default:

return DefWindowProc(hWnd, message, wParam, lParam);

? ?}

? ?return 0;

}



// ?可以运行 ? 请采纳 ??

有不懂的可以联系我

这个可是标准c++的 ? 这是结果

这是源代码?

求助用C或者C++语言实现一个迷宫小游戏代码

#includebits/stdc++.h

#includewindows.h

#includeconio.h

using namespace std;

int main()

{

int i123;

cout"? ?."endl;

cout"? . ."endl;

cout" . . ."endl;

cout"? . ."endl;

cout"? ?."endl;

cout"? T M";

for(i123=500;i123=1000;i123+=100){

Beep(i123,1000);

}

system("cls");

char a[50][50]={"##############################",

? ? ? ? "#o? ? ? ? ?#? ?##? ?# ### ####",

? ? ? ? "# ###### # # #? ? # # ### ####",

? ? ? ? "# #? ?## #? ?# #### # ###? ?##",

? ? ? ? "#? ?# ##? ###? ? #? #? ## ####",

? ? ? ? "##### #? ? ?# ##### ##? ? ####",

? ? ? ? "#? ?# ##### #? ?#? ?# # #? ? #",

? ? ? ? "# # #? ? ## # #### ## # # ####",

? ? ? ? "# # # ##? ? ? ##? ? ? # # ####",

? ? ? ? "# # # ####### ## ###### #? ?##",

? ? ? ? "# #? ?##? ?# ## ###### ###? ?#",

? ? ? ? "# ###### # #####? #? ? ? ? # #",

? ? ? ? "#? ? ? ? # #? ? ?##### ### #? ",

? ? ? ? "# ######## ##### # ### ### # #",

? ? ? ? "#? ? ?# ## ##### ###? ? ? ?###",

? ? ? ? "##### # ## #? ? ? ######## # #",

? ? ? ? "#? ? ?# ## ## ###? ? ? ? #? ?#",

? ? ? ? "# # ###? ? ? ?###### ####### #",

? ? ? ? "# #? ? ### ##? ? ? #? ? ? ? ?#",

? ? ? ? "##############################"

? ? ? ? };

int i,i1,x=1,y=1,n=12,m=29;

char ch;

for(i=0;i=19;i++){

puts(a[i]);

}

while(x!=n||y!=m){

? ch=getch();

if(ch==115||ch==25){

if(a[x+1][y]!=35){

a[x][y]=32;

x++;

a[x][y]=111;

}

}

if(ch==119||ch==24){

if(a[x-1][y]!=35){

a[x][y]=32;

x--;

a[x][y]=111;

}

}

if(ch==97||ch==27){

if(a[x][y-1]!=35){

a[x][y]=32;

y--;

a[x][y]=111;

}

}

if(ch==100||ch==26){

if(a[x][y+1]!=35){

a[x][y]=32;

y++;

a[x][y]=111;

}

}

system("cls");

for(i=0;i=19;i++){

puts(a[i]);

}

}

for(i1=500;i1=1000;i1=i1+100){

Beep(i1,1000);

}

coutendl"你赢了!!!祝贺你!!!";

system("pause");

}

标签 c课设 用room类和maze类实现的迷宫游戏 最多走八步_c走迷宫游戏