示例#1
0
        /// <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);
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
        }
示例#4
0
        /// <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);
        }
示例#5
0
        /// <summary>
        /// 获取x轴最小值
        /// </summary>
        /// <param name="style"></param>
        /// <returns></returns>
        public int getMinX(TetrisStyle style)
        {
            int x = 0;

            return(x);
        }
示例#6
0
 /// <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;
 }
示例#7
0
        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);
        }
示例#8
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="style"></param>
 public TetrisElement(TetrisStyle style)
 {
     this.style = style;
 }