之前我们详细讲解了怎么在地图上绘制墙,这次我们来完善整个地图,
地图的静态物体构成分为可破坏的墙体,不可破坏的铁块,以及最终boos
那我们为了方便存储将三个对象分开放为3个列表
private static List<gudin> walllist = new List<gudin>();//创建一个列表放置墙
 private static List<gudin> steellist = new List<gudin>();//创建一个列表放置铁块
 private static gudin boos;//创建一个gudin变量boos
在函数调用时直接把传进去的列表参数修改就行
但是boos与墙体和铁块又不一样,墙体和铁块都是15*15的大小,而boos更大并且只需要放一个,所以需要一个新的函数来放置boos
 private static  void boos(int x,int y, Image img,List<gudin>list)//放置boos专用方法
  {
      int X = x * 30;//定义一块墙占30像素点,同比例放大生成墙的坐标
      int Y = y * 30;
      gudin gudin1 = new gudin(X, Y, img);
      list.Add(gudin1);
  }
对着墙体代码仿写简化就行
最终,在设置地图函数中是这样的
 public static void map()//设置整体地图
  {
      wall(1, 1, 5,Resources.wall, walllist);//在30,30的位置创造竖着的五个墙体,传入(位置,数量,储存对象信息的列表)
      wall(3, 1, 5, Resources.wall, walllist);
      wall(5, 1, 3, Resources.wall, walllist);
      wall(7, 1, 5, Resources.wall, walllist);
      wall(9, 1, 3, Resources.wall, walllist);
      wall(11, 1, 5, Resources.wall, walllist);
      wall(13, 1, 5, Resources.wall, walllist);
      wall(4, 3, 1, Resources.steel, steellist);
      wall(10, 3, 1, Resources.steel, steellist);
      wall(4, 8, 1, Resources.wall, walllist);
      wall(5, 8, 1, Resources.wall, walllist);
      wall(3, 8, 1, Resources.wall, walllist);
      wall(2, 8, 1, Resources.wall, walllist);
      wall(11, 8, 1, Resources.wall, walllist);
      wall(12, 8, 1, Resources.wall, walllist);
      wall(9, 8, 1, Resources.wall, walllist);
      wall(10, 8, 1, Resources.wall, walllist);
      wall(1, 10, 5, Resources.wall, walllist);//在30,30的位置创造竖着的五个墙体,传入(位置,数量,储存对象信息的列表)
      wall(3, 10, 5, Resources.wall, walllist);
      wall(5, 10, 3, Resources.wall, walllist);
     
      wall(9, 10, 3, Resources.wall, walllist);
      wall(11, 10, 5, Resources.wall, walllist);
      wall(13, 10, 5, Resources.wall, walllist);
      
      wall(6, 12, 3, Resources.wall, walllist);
      wall(8, 12, 3, Resources.wall, walllist);
      wall(7, 12, 1, Resources.wall, walllist);
      boos(7, 14, Resources.Boss, booslist);//放置boos
}、
列表需要遍历两次,然后直接调用boos中的huizhi方法
 public static void huizhi()//有了位置以及图片信息就可以调用Object里的绘制函数在窗体中实例化对象
  {
      foreach (gudin n in walllist)//遍历墙体列表
      {
          n.HuiZhi();//调用列表中定义的gudin类信息,传回父类GameObject
      }
      foreach (gudin n in steellist)//遍历铁块列表
      {
          n.HuiZhi();//调用列表中定义的gudin类信息,传回父类GameObject
      }
    boos.HuiZhi();//绘制boos
  }
这样通过绘制方法就可以将地图绘制出来了




















