예제 #1
0
파일: NPoint.cs 프로젝트: hirotk/Pentia
 public static void Rotate(NPoint[] points, RtDirection direction)
 {
     for (int i = 0; i < points.Length; i++)
     {
         Rotate(ref points[i], direction);
     }
 }
예제 #2
0
파일: NPoint.cs 프로젝트: hirotk/Pentia
        public static NPoint Rotate(NPoint point, RtDirection direction) // A clockwise rotation matrix in the screen coordinate system
        {
            int a01 = (direction == RtDirection.Clockwise) ? -1 : 1;     // (a00, a01) = (cos(pi/2), -sin(pi/2))
            int a10 = (direction == RtDirection.Clockwise) ? 1 : -1;     // (a10, a11) = (sin(pi/2),   cos(pi/2))

            int tx = point.x;

            point.x = a01 * point.y;
            point.y = a10 * tx;
            return(point);
        }
예제 #3
0
        public bool Rotate(RtDirection direction)
        {
            Field.RemovePiece(this);
            bool rotated = false;

            if (canRotate(direction))
            {
                Rotator.Rotate(Shape, direction);
                rotated = true;
            }

            Field.PutPiece(this);
            Field.Draw();
            return(rotated);
        }
예제 #4
0
        private bool canRotate(RtDirection direction)
        {
            int COLS = Field.COLS, ROWS = Field.ROWS;

            foreach (NPoint pt in Shape)
            {
                var tpt = this.pos + Rotator.Rotate(pt, direction);

                if (Field[tpt.x, tpt.y] != PcColor.None)
                {
                    return(false);
                }
            }

            return(true);
        }
예제 #5
0
        public bool RotatePiece(RtDirection direction)
        {
            bool rotated = piece.Rotate(direction);

            return(rotated);
        }
예제 #6
0
파일: NPoint.cs 프로젝트: hirotk/Pentia
 public static void Rotate(NPoint[] points, RtDirection direction)
 {
     for (int i = 0; i < points.Length; i++) {
         Rotate(ref points[i], direction);
     }
 }
예제 #7
0
파일: NPoint.cs 프로젝트: hirotk/Pentia
 public static void Rotate(ref NPoint point, RtDirection direction)
 {
     point = Rotate(point, direction);
 }
예제 #8
0
파일: NPoint.cs 프로젝트: hirotk/Pentia
        public static NPoint Rotate(NPoint point, RtDirection direction)
        {
            // A clockwise rotation matrix in the screen coordinate system
            int a01 = (direction == RtDirection.Clockwise) ? -1 : 1; // (a00, a01) = (cos(pi/2), -sin(pi/2))
            int a10 = (direction == RtDirection.Clockwise) ? 1 : -1; // (a10, a11) = (sin(pi/2),   cos(pi/2))

            int tx = point.x;
            point.x = a01 * point.y;
            point.y = a10 * tx;
            return point;
        }
예제 #9
0
파일: Piece.cs 프로젝트: hirotk/Pentia
        private bool canRotate(RtDirection direction)
        {
            int COLS = Field.COLS, ROWS = Field.ROWS;

            foreach (NPoint pt in Shape) {
                var tpt = this.pos + Rotator.Rotate(pt, direction);

                if (Field[tpt.x, tpt.y] != PcColor.None) {
                   return false;
                }
            }

            return true;
        }
예제 #10
0
파일: Piece.cs 프로젝트: hirotk/Pentia
        public bool Rotate(RtDirection direction)
        {
            Field.RemovePiece(this);
            bool rotated = false;

            if (canRotate(direction)) {
                Rotator.Rotate(Shape, direction);
                rotated = true;
            }

            Field.PutPiece(this);
            Field.Draw();
            return rotated;
        }
예제 #11
0
파일: NPoint.cs 프로젝트: hirotk/Pentia
 public static void Rotate(ref NPoint point, RtDirection direction)
 {
     point = Rotate(point, direction);
 }
예제 #12
0
파일: Board.cs 프로젝트: hirotk/Pentia
 public bool RotatePiece(RtDirection direction)
 {
     bool rotated = piece.Rotate(direction);
     return rotated;
 }