9.地图类

9.游戏场景-地图类


9.1 知识点

将要实现的类图

创建地图类,继承绘制接口,地图类里创建一个墙壁数组。地图类构造函数中初始化墙壁数组。四次遍历new出四周的每一堵墙。实现地图类绘制方法,遍历墙壁数组中的所有墙,逐个调用墙的绘制方法进行绘制。

//地图类 继承绘制接口
class Map : IDraw
{
    //墙壁数组
    public Wall[] walls;
    
    //地图类构造函数 初始化墙壁数组 new出中的每一堵墙
    public Map()
    {

        //new出墙壁数组
        walls = new Wall[Game.w + (Game.h - 3) * 2];
        
        //设置墙的索引 用来计数画了多少堵墙
        int index = 0;
        
        //四次遍历 画四周的墙
        
        for (int i = 0; i < Game.w; i += 2)
        {
            walls[index] = new Wall(i, 0);
            ++index;
        }
        
        for (int i = 0; i < Game.w; i += 2)
        {
            walls[index] = new Wall(i, Game.h - 2);
            ++index;
        }
        
        for (int i = 1; i < Game.h - 2; i++)
        {
            walls[index] = new Wall(0, i);
            ++index;
        }
        
        for (int i = 1; i < Game.h - 2; i++)
        {
            walls[index] = new Wall(Game.w - 2, i);
            ++index;
        }
    }
    
    //实现地图类绘制方法 绘制墙壁数组中的所有墙
    public void Draw()
    {
        //遍历墙壁数组中的所有墙 逐个调用墙的绘制方法进行绘制
        for (int i = 0; i < walls.Length; i++)
        {
            walls[i].Draw();
        }
    }
}

游戏场景类中,创建一个地图类变量,用于管理所有墙壁。创建游戏场景类构造函数,游戏场景类构造函数中初始化地图类变量。游戏场景里的更新方法中调用地图类的绘制方法。

//游戏场景类 继承游戏帧更新接口
class GameScene : ISceneUpdate
{
    //地图类变量 管理所有墙壁
    Map map;
    
    //游戏场景类构造函数
    public GameScene()
    {
        //初始化地图类变量
        map = new Map();
    }
    
    //实现游戏场景里的更新方法
    public void Update()
    {
        //绘制地图类
        map.Draw();
    }
}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏