4.地图固定墙壁和动态墙壁相关
4.1 知识点
要实现的代码
相关示图
主要操作
- 创建地图类,声明固定墙壁和动态墙壁的 List
- 在地图类构造函数中初始化固定墙壁
- 实现地图的绘制方法,在游戏场景构造函数初始化时调用
- 实现地图的添加墙壁方法,用于将正在动的俄罗斯方块添加到固定墙壁中。参数可以是一个俄罗斯方块的绘制对象 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