/// <summary> /// 获取y轴最大值 /// </summary> /// <param name="style"></param> /// <returns></returns> public int getMaxY(TetrisStyle style) { int y = 20; switch (style) { case TetrisStyle.I: //I形状 y = 16; break; case TetrisStyle.J: //J形状 case TetrisStyle.L: //L形状 y = 17; break; case TetrisStyle.O: //O形状 case TetrisStyle.S: //S形状 case TetrisStyle.T: //T形状 case TetrisStyle.Z: //Z形状 y = 18; break; default: //默认I y = 16; break; } y = y - 1; return(y); }
/// <summary> /// 获取x轴最大值 /// </summary> /// <param name="style"></param> /// <returns></returns> public int getMaxX(TetrisStyle style) { int x = 10; switch (style) { case TetrisStyle.I: //I形状 x = 10; break; case TetrisStyle.J: //J形状 case TetrisStyle.L: //L形状 case TetrisStyle.O: //O形状 x = 9; break; case TetrisStyle.S: //S形状 case TetrisStyle.T: //T形状 case TetrisStyle.Z: //Z形状 x = 8; break; default: //默认I x = 10; break; } x = x - 1; return(x); }
/// <summary> /// 获取y轴最小值 /// </summary> /// <param name="style"></param> /// <returns></returns> public int getMinY(TetrisStyle style) { int y = 0; switch (style) { case TetrisStyle.I: //I形状 y = -3; break; case TetrisStyle.J: //J形状 case TetrisStyle.L: //L形状 y = -2; break; case TetrisStyle.O: //O形状 case TetrisStyle.S: //S形状 case TetrisStyle.T: //T形状 case TetrisStyle.Z: //Z形状 y = -1; break; default: //默认I y = -3; break; } return(y); }
/// <summary> /// 静态函数,生成Tetris元素对象 /// </summary> /// <returns></returns> public static TetrisElement generate() { Random r = new Random(0); //随机生成形状 int tstyle = getRandom(); tstyle = tstyle % 7; TetrisStyle style = TetrisStyle.I; style = (TetrisStyle)Enum.Parse(typeof(TetrisStyle), tstyle.ToString()); //随机生成起始坐标 int x = getRandom(); x = x % 10; int y = 0; //根据形状生成位置信息 TetrisElement element = new TetrisElement(style); //内容由四个点组成,顺序:先上后下,先左后右 Point[] content = element.getContent(style); //获取最小坐标和最大坐标,防止越界 int minX = element.getMinX(style); int minY = element.getMinY(style); int maxX = element.getMaxX(style); int maxY = element.getMaxY(style); //修正起始坐标 x = (x <= minX) ? minX : x; x = (x >= maxX) ? maxX : x; y = minY; Point location = new Point(x, y); element.location = location; element.content = content; return(element); }
/// <summary> /// 获取x轴最小值 /// </summary> /// <param name="style"></param> /// <returns></returns> public int getMinX(TetrisStyle style) { int x = 0; return(x); }
/// <summary> /// 构造函数 /// </summary> /// <param name="style">形状</param> /// <param name="content">内容</param> /// <param name="location">位置</param> public TetrisElement(TetrisStyle style, Point[] content, Point location) { this.style = style; this.content = content; this.location = location; }
public Point[] getContent(TetrisStyle style) { //内容由四个点组成,顺序:先上后下,先左后右 Point[] content = new Point[4]; switch (style) { case TetrisStyle.I: //I形状 content[0] = new Point(0, 0); content[1] = new Point(0, 1); content[2] = new Point(0, 2); content[3] = new Point(0, 3); break; case TetrisStyle.J: //J形状 content[0] = new Point(1, 0); content[1] = new Point(1, 1); content[2] = new Point(1, 2); content[3] = new Point(0, 2); break; case TetrisStyle.L: //L形状 content[0] = new Point(0, 0); content[1] = new Point(0, 1); content[2] = new Point(0, 2); content[3] = new Point(1, 2); break; case TetrisStyle.O: //O形状 content[0] = new Point(0, 0); content[1] = new Point(1, 0); content[2] = new Point(0, 1); content[3] = new Point(1, 1); break; case TetrisStyle.S: //S形状 content[0] = new Point(2, 0); content[1] = new Point(1, 0); content[2] = new Point(1, 1); content[3] = new Point(0, 1); break; case TetrisStyle.T: //T形状 content[0] = new Point(0, 0); content[1] = new Point(1, 0); content[2] = new Point(2, 0); content[3] = new Point(1, 1); break; case TetrisStyle.Z: //Z形状 content[0] = new Point(0, 0); content[1] = new Point(1, 0); content[2] = new Point(1, 1); content[3] = new Point(2, 1); break; default: //默认I content[0] = new Point(0, 0); content[1] = new Point(0, 1); content[2] = new Point(0, 2); content[3] = new Point(0, 3); break; } return(content); }
/// <summary> /// 构造函数 /// </summary> /// <param name="style"></param> public TetrisElement(TetrisStyle style) { this.style = style; }