实训课俄罗斯方块之三 基本类型设计
// 列举出所有形状的枚举enum BlockType
{
I2,// 竖线,由2个方块组成
I3, // 竖线,由3个方块组成
I4, // 竖线,由4个方块组成
T1, // T型,由4个方块组成
T2,// T型,由5个方块组成
TR1, // 凹形
TR2, // 深凹形
L, // L型,由4个方块组成
LR, // 反向L型,由4个方块组成
Square // 田子型,由4个方块组成
}针对枚举类型做的计算机存储的定义
static class ShapeTable
{
static Dictionary<BlockType, List<int[,]>> Tabs = new Dictionary<BlockType, List<int[,]>>();
// 在此初始化所有的形状
static ShapeTable()
{//int[,]:前一个数组声明行列值;后面赋值存储1表示有个块0表示没有;
//s.Add:表示存储了几种类型的方块。
List<int[,]> s0 = new List<int[,]>();
s0.Add(new int{{1,1}});
s0.Add(new int { {1},{1} });
Tabs.Add(BlockType.I2, s0);
List<int[,]> s1 = new List<int[,]>();
s1.Add(new int { { 1,1, 1 } });
s1.Add(new int { {1 }, {1 }, { 1 } });
Tabs.Add(BlockType.I3, s1);
List<int[,]> s2 = new List<int[,]>();
s2.Add(new int { { 1, 1, 1,1 } });
s2.Add(new int { { 1 }, {1 }, {1 }, {1 } });
Tabs.Add(BlockType.I4, s2);
List<int[,]> s3 = new List<int[,]>();
s3.Add(new int { { 1, 1, 1},{0, 1,0 } });
s3.Add(new int { {0, 1 }, {1, 1 }, {0, 1 } });
s3.Add(new int { { 0, 1,0 }, { 1, 1,1 } });
s3.Add(new int { { 1,0 }, { 1, 1 }, { 1, 0 } });
Tabs.Add(BlockType.T1, s3);
List<int[,]> s4 = new List<int[,]>();
s4.Add(new int { { 1, 1, 1 }, { 0, 1, 0 }, { 0, 1, 0 } });
s4.Add(new int { {0, 0, 1 }, {1, 1, 1 }, {0, 0, 1 } });
s4.Add(new int { { 0, 1, 0 }, { 0, 1, 0 }, { 1, 1, 1 } });
s4.Add(new int { { 1, 0, 0 }, { 1, 1, 1 }, { 1, 0, 0 } });
Tabs.Add(BlockType.T2, s4);
List<int[,]> s5 = new List<int[,]>();
s5.Add(new int { { 1, 0, 1 }, { 1, 1, 1 } });
s5.Add(new int { { 1, 1 }, { 1, 0 }, { 1, 1 } });
s5.Add(new int { { 1, 1, 1 }, { 1, 0, 1 } });
s5.Add(new int { { 1, 1 }, { 0, 1 }, { 1, 1 } });
Tabs.Add(BlockType.TR1, s5);
List<int[,]> s6 = new List<int[,]>();
s6.Add(new int { { 1, 0, 1 }, { 1, 0, 1 }, { 1, 1, 1 } });
s6.Add(new int { { 1, 1, 1 }, { 1, 0, 0 }, { 1, 1, 1 } });
s6.Add(new int { { 1, 1, 1 }, { 1, 0, 1 }, { 1, 0, 1 } });
s6.Add(new int { { 1, 1, 1 }, { 0, 0, 1 }, { 1, 1, 1 } });
Tabs.Add(BlockType.TR2, s6);
List<int[,]> s7 = new List<int[,]>();
s7.Add(new int { { 1, 0 }, { 1, 0 }, { 1, 1 } });
s7.Add(new int { { 1, 1, 1 }, { 1, 0, 0 } });
s7.Add(new int { { 1, 1 }, { 0, 1 }, { 0, 1 } });
s7.Add(new int { { 0, 0, 1 }, { 1, 1, 1 } });
Tabs.Add(BlockType.L, s7);
List<int[,]> s8 = new List<int[,]>();
s8.Add(new int { { 0, 1 }, { 0, 1 }, { 1, 1 } });
s8.Add(new int { { 1, 0, 0 }, { 1, 1, 1 } });
s8.Add(new int { { 1, 1 }, { 1, 0 }, { 1, 0 } });
s8.Add(new int { { 1, 1, 1 }, { 0, 0, 1 } });
Tabs.Add(BlockType.LR, s8);
List<int[,]> s9 = new List<int[,]>();
s9.Add(new int { { 1, 1 }, { 1, 1 } });
Tabs.Add(BlockType.Square, s9);
//……
}
public static List<int[,]> GetShapes(BlockType tid)
{
return Tabs;
}
//?
public static int[,] GetShape(BlockType tid, int num) //T1,6
{
List<int[,]> list = GetShapes(tid); //根据t1:得到值是s3;
return list; //返回默认形状; 7%4求余,得到产生的是3;
}
public static int ShapeCount
{
get
{
return Tabs.Count;
}
}
}} +
文档来源:51CTO技术博客https://blog.51cto.com/u_2096101/3188762
页:
[1]