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); }
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); }