예제 #1
0
        public void CreateBrick()
        {
            //此处为了开始下落像AI固定开始方块和旋转
            curBrick     = new Brick(6);
            curBrick.Mod = curBrick.assignShapeValue(6, 2);
            rotateCopy   = 2;
            //curBrick.shape2 = 2;


            //curBrick = new Brick(random.Next(19));
            curBrick.Pos.X = (map.Width + 8 / 2) - 8;
            curBrick.Pos.Y = 2;
        }
예제 #2
0
        public bool NewFall()//新的方块下落
        {
            //move = 5;

            curBrick       = nextBrick;
            curBrick.Pos.X = (map.Width + 8 / 2) - 8;
            curBrick.Pos.Y = 1;
            //nextBrick = new Brick(6);
            nextBrick = new Brick(random.Next(19));
            curBrick.MoveTestMod();//移动测试模式

            double[] p  = new double[4];
            int[]    m  = new int[4];
            int[]    mm = new int[4];
            //int p1,p2,p3,p4,m1, m2, m3,m4,m11,m22,m33,m44;
            int[,] gameMap  = returnMapArray();
            int[,] brickMap = curBrick.Mod;
            int[,] b1       = curBrick.assignShapeValue(curBrick.shape1, (curBrick.shape2 + 1) % 4);
            int[,] b2       = curBrick.assignShapeValue(curBrick.shape1, (curBrick.shape2 + 2) % 4);
            int[,] b3       = curBrick.assignShapeValue(curBrick.shape1, (curBrick.shape2 + 3) % 4);
            //int[,] brickMap = returnBrickArray();
            //int[,] b1 = Rotate2(brickMap);
            //int[,] b2 = Rotate2(b1);
            //int[,] b3 = Rotate2(b2);
            p[0]  = EvaluateShape2(gameMap, brickMap);
            p[1]  = EvaluateShape2(gameMap, b1);
            p[2]  = EvaluateShape2(gameMap, b2);
            p[3]  = EvaluateShape2(gameMap, b3);
            m[0]  = EvaluateShape(gameMap, brickMap);
            m[1]  = EvaluateShape(gameMap, b1);
            m[2]  = EvaluateShape(gameMap, b2);
            m[3]  = EvaluateShape(gameMap, b3);
            mm[0] = Math.Abs(m[0]);
            mm[1] = Math.Abs(m[1]);
            mm[2] = Math.Abs(m[2]);
            mm[3] = Math.Abs(m[3]);
            double maxP = p.Max();

            if (p[0] == maxP)
            {
                rotateCopy = 0;
                rotate     = 0;
                move       = m[0];
                moveCopy   = m[0];
            }
            else if (p[1] == maxP)
            {
                rotateCopy = 1;
                rotate     = 1;
                move       = m[1];
                moveCopy   = m[1];
            }
            else if (p[2] == maxP)
            {
                rotateCopy = 2;
                rotate     = 2;
                move       = m[2];
                moveCopy   = m[2];
            }
            else
            {
                rotateCopy = 3;
                rotate     = 3;
                move       = m[3];
                moveCopy   = m[3];
            }
            //if (m11<=m22&&m11<=m33&m11<=m44)
            //{
            //    move = m1;
            //    rotate = 0;
            //}
            //else if (m22 <= m11 && m22 <= m33 && m22 <= m44)
            //{
            //    move = m2;
            //    rotate = 1;
            //}
            //else if (m33 <= m11 && m33 <= m22 && m33 <= m44)
            //{
            //    move = m3;
            //    rotate = 2;
            //}
            //else
            //{
            //    move = m4;
            //    rotate = 3;
            //}
            //move = EvaluateShape(gameMap, brickMap);
            return(!Intersect());
        }