地图分两种,普通地图和隐藏地图(指通过水管进入的地图)。先讲普图地图的切换,再讲隐藏地图的切换。
普通地图的切换:
思路:很简单,用一个数字iMatch表示当前是第几关。每过一关,iMatch+1,加载下一张地图。
存储: int iMatch;
初始化: iMatch=0;(0表示第一关)
过关检测:用一个函数不停地检测玩家是否到了地图终点,如果是,加载下一关的地图。
函数:int GAMEMAP::IsWin()
代码:
//判断玩家的坐标是否到达地图终点(横坐标大于等于地图宽度)
if(rmain.xpos >= MAX_PAGE*GAMEW*32 )
{
// iMatch增加
iMatch=mapinfo.iNextMap;
if(iMatch>=MAX_MATCH)
{
//如果iMatch大于关卡数量(即通过最后一关),加载第一关的数据,代码略
}
else
{
//没有通关
InitMatch();//初始化游戏数据
//设置玩家角色坐标,初始化玩家角色
rmain.SetPos(BM_USER,3*32,8*32);
rmain.InitRole(0,GAMEW*32*MAX_PAGE-32);
//加载下一关的地图
LoadMap();
}
说明:函数LoadMap()根据iMatch的值加载某一关的

本文详细介绍了超级玛丽游戏中地图切换的设计与实现,包括普通地图和隐藏地图的切换方法。通过地图信息表存储各关卡的连接关系,利用iMatch变量追踪当前关卡,并根据玩家位置和操作进行地图切换。在玩家到达终点或进入水管时,更新iMatch值来加载新地图。文章还探讨了如何扩展功能以适应更多隐藏地图和水管入口。
最低0.47元/天 解锁文章
1435





