Beispiel #1
0
        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);
        }
Beispiel #2
0
        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();
                }
            }
        }
Beispiel #3
0
 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);
 }
Beispiel #4
0
        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();
                }
            }
        }
Beispiel #5
0
 public void Draw(FillWords game, int hoverX, int hoverY)
 {
     PrintField(game);
     PrintLetters(game);
     Console.SetCursorPosition(0, 0);
 }