static void Main(string[] args) { // TEST Console.CursorVisible = false; FillWords fillWords = new FillWords(new ConsoleDrawer(), 6, 6); do { fillWords.Draw(); ConsoleKeyInfo cki = Console.ReadKey(); if (cki.Key == ConsoleKey.DownArrow) { fillWords.SetHover(0, 1); } if (cki.Key == ConsoleKey.UpArrow) { fillWords.SetHover(0, -1); } if (cki.Key == ConsoleKey.RightArrow) { fillWords.SetHover(1, 0); } if (cki.Key == ConsoleKey.LeftArrow) { fillWords.SetHover(-1, 0); } if (cki.Key == ConsoleKey.Enter) { fillWords.SwitchSelectionMode(); } } while (true); }
private void PrintLetters(FillWords game) { int xStep = _cellSizeX - 1; int yStep = _cellSizeY - 1; for (int fieldY = 0; fieldY < game.GetFieldHeight(); fieldY++) { for (int fieldX = 0; fieldX < game.GetFieldWidth(); fieldX++) { int x, y; if (fieldX == 0) { x = _margin + _cellSizeX / 2; } else { x = _margin + fieldX * xStep + xStep - 2; } if (fieldY == 0) { y = _margin + _cellSizeY / 2; } else { y = _margin + fieldY * yStep + yStep - 1; } Console.BackgroundColor = GetColor(game, fieldX, fieldY); Console.SetCursorPosition(x, y); Console.Write(game.GetLetter(fieldX, fieldY)); Console.ResetColor(); } } }
private ConsoleColor GetColor(FillWords game, int x, int y) { return(game.IsCellHovered(x, y) ? HoverColor : game.IsCellSelected(x, y) ? SelectionColor : game.IsCellGuessed(x, y) ? GuessedColor : DefaultColor); }
private void PrintField(FillWords game) { Console.SetCursorPosition(_margin, _margin); int maxX = game.GetFieldWidth() * _cellSizeX - game.GetFieldWidth(); int maxY = game.GetFieldHeight() * _cellSizeY - game.GetFieldHeight(); for (int y = 0; y <= maxY; y++) { bool isFirstRow = y == 0; bool isLastRow = y == maxY; bool isBorderHorizontal = y % (_cellSizeY - 1) == 0; for (int x = 0; x <= maxX; x++) { bool isFirstColumn = x == 0; bool isLastColumn = x == maxX; bool isBorderVertical = x % (_cellSizeX - 1) == 0; bool isBorderCross = isBorderHorizontal && isBorderVertical; int fieldX = (x - 1) / (_cellSizeX - 1); int fieldY = (y - 1) / (_cellSizeY - 1); Console.SetCursorPosition(_margin + x, _margin + y); if (isBorderCross) { if (isFirstColumn && isFirstRow) { Console.Write("┌"); } else if (isFirstRow && !isFirstColumn && !isLastColumn) { Console.Write("┬"); } else if (isFirstRow && isLastColumn) { Console.Write("┐"); } else if (isFirstColumn && !isFirstRow && !isLastRow) { Console.Write("├"); } else if (!isFirstRow && !isLastRow && !isFirstColumn && !isLastColumn) { Console.Write("┼"); } else if (isLastColumn && !isFirstRow && !isLastRow) { Console.Write("┤"); } else if (isLastRow && isFirstColumn) { Console.Write("└"); } else if (isLastRow && !isFirstColumn && !isLastColumn) { Console.Write("┴"); } else if (isLastColumn && isLastRow) { Console.Write("┘"); } } else { if (isBorderVertical) { Console.Write("│"); } else if (isBorderHorizontal) { Console.Write("─"); } else { ConsoleColor color = GetColor(game, fieldX, fieldY); Console.BackgroundColor = color; Console.Write(" "); } } Console.ResetColor(); } } }
public void Draw(FillWords game, int hoverX, int hoverY) { PrintField(game); PrintLetters(game); Console.SetCursorPosition(0, 0); }