示例#1
0
        public void BoardToTile(int x, int y, int xExpected, int yExpected)
        {
            var result = Coordinates.BoardToTile(x, y);

            Assert.AreEqual(xExpected, result.X);
            Assert.AreEqual(yExpected, result.Y);

            result = Coordinates.BoardToTile(new Point(x, y));

            Assert.AreEqual(xExpected, result.X);
            Assert.AreEqual(yExpected, result.Y);
        }
示例#2
0
        public Mat Visualize(Mat image)
        {
            if (!_visualize)
            {
                // no visualization
                return(image);
            }

            var visualization = new Mat();

            CvInvoke.CvtColor(image, visualization, ColorConversion.Gray2Bgr);

            if (GameState?.Board != null)
            {
                var board = GameState.Board;
                for (int x = 0; x < board.Width; x++)
                {
                    for (int y = 0; y < board.Height; y++)
                    {
                        if (board.IsOccupied(x, y))
                        {
                            var tileCoordinates = Coordinates.BoardToTile(x, y);
                            DrawBlock(visualization, tileCoordinates, Color.DodgerBlue);
                        }
                    }
                }
            }
            if (TracedPiece != null)
            {
                // current piece
                var piece = TracedPiece;
                foreach (var block in piece.Shape.Body)
                {
                    var tileCoordinates = Coordinates.PieceToTile(piece.X + block.X, piece.Y + block.Y);
                    DrawBlock(visualization, tileCoordinates, Color.Orange);
                }
            }
            if (ExtractedPiece != null)
            {
                // current piece
                var piece = ExtractedPiece;
                foreach (var block in piece.Shape.Body)
                {
                    var tileCoordinates = Coordinates.PieceToTile(piece.X + block.X, piece.Y + block.Y);
                    DrawBlock(visualization, tileCoordinates, Color.Red);
                }
            }
            if (ExtractedNextPiece != null)
            {
                // next piece
                foreach (var block in Shape.Get(ExtractedNextPiece.Value).Body)
                {
                    var tileCoordinates = Coordinates.PieceToTilePreview(block);
                    DrawBlock(visualization, tileCoordinates, Color.LimeGreen);
                }
            }
            if (SearchHeight > 0)
            {
                DrawLine(visualization, SearchHeight, Color.Red);
            }

            return(visualization);
        }