前面,我们已经将迷宫布置好,人物也在入口处了。
本节我们就来实现人物在迷宫中行走的功能。
把前面在ONKEYDOWN里的所有代码改成下面的代码:
CClientDC dc(this);dc.BitBlt(n*93+x,m*100+y,93,100,mdc,0,0,WHITENESS);if(nChar==VK_DOWN){y+=100;
k=(n*93+x)/93; l=(m*100+y)/100; if(maze[l][k]==1) { y-=100; } if(dir==0) { index++; if(index==4) { index=0; } } else { index=0; dir=0; } } if(nChar==VK_UP) { y-=100; k=(n*93+x)/93; l=(m*100+y)/100; if(maze[l][k]==1) { y+=100; } if(dir==3) { index++; if(index==4) { index=0; } } else { index=0; dir=3; } } if(nChar==VK_RIGHT) { x+=93; k=(n*93+x)/93; l=(m*100+y)/100; if(maze[l][k]==1) { x-=93; } if(dir==2) { index++; if(index==4) { index=0; } } else { index=0; dir=2; } } if(nChar==VK_LEFT) { x-=93; k=(n*93+x)/93; l=(m*100+y)/100; if(maze[l][k]==1) { x+=93; } if(dir==1) { index++; if(index==4) { index=0; } } else { index=0; dir=1; } } k=(n*93+x)/93; l=(m*100+y)/100; if(maze[l][k]==3) { dc.TextOut(120,350,"走出去了!"); } mdc->SelectObject(bitmap[dir][index]); dc.BitBlt(n*93+x,m*100+y,93,100,mdc,0,0,SRCCOPY); |
这样,我们就完了人物在迷宫中行走,只要我们按下向下的键,人物就会向下走;同理,按下向上、向左、向右的键,可以达到相应的行走,并且,一旦前面是墙壁,人物就走不进去,只有在不是墙壁的地方才能达到行走的目的。到这里,整个迷宫行走游戏就全部完成。下一节,我们会对迷宫行径实现回放功能。