项目-坦克大战学习笔记-地图完善

之前我们详细讲解了怎么在地图上绘制墙,这次我们来完善整个地图,

地图的静态物体构成分为可破坏的墙体,不可破坏的铁块,以及最终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
 }

这样通过绘制方法就可以将地图绘制出来了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值