4.地图固定墙壁和动态墙壁相关

  1. 4.地图固定墙壁和动态墙壁相关
    1. 4.1 知识点
      1. 要实现的代码
      2. 相关示图
      3. 主要操作
    2. 4.2 知识点代码
      1. Map

4.地图固定墙壁和动态墙壁相关


4.1 知识点

要实现的代码

相关示图

主要操作

  1. 创建地图类,声明固定墙壁和动态墙壁的 List
  2. 在地图类构造函数中初始化固定墙壁
  3. 实现地图的绘制方法,在游戏场景构造函数初始化时调用
  4. 实现地图的添加墙壁方法,用于将正在动的俄罗斯方块添加到固定墙壁中。参数可以是一个俄罗斯方块的绘制对象 list,遍历切换绘制对象类型,逐个添加到动态墙壁的 List。

4.2 知识点代码

Map

using System;
using System.Collections.Generic;
using System.Text;

namespace CSharp实践教学
{
    class Map : IDraw
    {
        //固定墙壁
        private List<DrawObject> walls = new List<DrawObject>();
        //动态墙壁
        private List<DrawObject> dynamicWalls = new List<DrawObject>();

        //重载一次无参构造 去初始化我们的固定墙壁
        public Map()
        {
            for (int i = 0; i < Game.w; i+=2)
            {
                walls.Add(new DrawObject(E_DrawType.Wall, i, Game.h - 6));
            }

            for (int i = 0; i < Game.h - 6; i++)
            {
                walls.Add(new DrawObject(E_DrawType.Wall, 0, i));
                walls.Add(new DrawObject(E_DrawType.Wall, Game.w - 2, i));
            }
        }

        public void Draw()
        {
            //绘制固定墙壁
            for (int i = 0; i < walls.Count; i++)
            {
                walls[i].Draw();
            }

            //绘制动态墙壁 有才绘制
            for (int i = 0; i < dynamicWalls.Count; i++)
            {
                dynamicWalls[i].Draw();
            }
        }

        /// <summary>
        /// 提供给外部添加动态方块的函数
        /// </summary>
        /// <param name="walls"></param>
        public void AddWalls(List<DrawObject> walls)
        {
            for (int i = 0; i < walls.Count; i++)
            {
                //传递方块进来时 把其类型改成 墙壁类型
                walls[i].ChangeType(E_DrawType.Wall);
                dynamicWalls.Add(walls[i]);
            }
        }
    }
}


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

×

喜欢就点赞,疼爱就打赏