Ejemplo n.º 1
0
        public bool Move(FigureConstructor figura, int[,] Field, int owner, bool wantToEscape)
        {
            bool isPut = false;
            //if (owner == 4)
            //{
            //    redBr = 0;
            //    kolBr = 0;
            //}
            //if (owner == 3)
            //{
            //    redBr = 0;
            //    kolBr = 20;
            //}
            //if (owner == 2)
            //{
            //    redBr = 20;
            //    kolBr = 20;
            //}
            //if (owner == 1)
            //{
            //    redBr = 23;
            //    kolBr = 5;
            //}
            int redBr = 10;
            int kolBr = 10;

            for (int red = 4; red < Field.GetLength(0) - 4; red++)
            {
                for (int kol = 4; kol < Field.GetLength(1) - 4; kol++)
                {
                    if (red - redBr >= 0 && red - redBr < 9 && kol - kolBr >= 0 && kol - kolBr < 9 && figura.figure[red - redBr, kol - kolBr] == owner)
                    {
                        if (owner == 1)
                        {
                            Console.BackgroundColor = ConsoleColor.Green;
                        }
                        if (owner == 2)
                        {
                            Console.BackgroundColor = ConsoleColor.Red;
                        }
                        if (owner == 3)
                        {
                            Console.BackgroundColor = ConsoleColor.Yellow;
                        }
                        if (owner == 4)
                        {
                            Console.BackgroundColor = ConsoleColor.Blue;
                        }
                        Console.Write(owner + " ");
                        Console.BackgroundColor = ConsoleColor.Black;
                    }
                    else
                    {
                        if (Field[red, kol] == 1)
                        {
                            Console.BackgroundColor = ConsoleColor.Green;
                        }
                        if (Field[red, kol] == 2)
                        {
                            Console.BackgroundColor = ConsoleColor.Red;
                        }
                        if (Field[red, kol] == 3)
                        {
                            Console.BackgroundColor = ConsoleColor.Yellow;
                        }
                        if (Field[red, kol] == 4)
                        {
                            Console.BackgroundColor = ConsoleColor.Blue;
                        }
                        Console.Write(Field[red, kol] + " ");
                        Console.BackgroundColor = ConsoleColor.Black;
                    }
                }
                Console.WriteLine();
            }
            while (isPut == false)
            {
                ConsoleKeyInfo k = new ConsoleKeyInfo();
                k = Console.ReadKey();
                Console.Clear();
                if (k.Key == ConsoleKey.Escape)
                {
                    return(true);
                }
                if (k.Key == ConsoleKey.UpArrow)
                {
                    redBr -= 1;
                }
                if (k.Key == ConsoleKey.DownArrow)
                {
                    redBr += 1;
                }
                if (k.Key == ConsoleKey.LeftArrow)
                {
                    kolBr -= 1;
                }
                if (k.Key == ConsoleKey.RightArrow)
                {
                    kolBr += 1;
                }
                for (int rows = 0; rows < figura.figure.GetLength(0); rows++)
                {
                    for (int cols = 0; cols < figura.figure.GetLength(1); cols++)
                    {
                        if (figura.figure[rows, cols] == owner)
                        {
                            if (rows + redBr > Field.GetLength(0) - 5)
                            {
                                redBr -= 1;
                            }
                            if (cols + kolBr > Field.GetLength(1) - 5)
                            {
                                kolBr -= 1;
                            }
                            if (rows + redBr < 4)
                            {
                                redBr += 1;
                            }
                            if (cols + kolBr < 4)
                            {
                                kolBr += 1;
                            }
                        }
                    }
                }
                if (k.Key == ConsoleKey.Enter)
                {
                    if (CheckForMoves.canItFit(figura.figure, Field, redBr, kolBr, owner) == true)
                    {
                        for (int red = 4; red < Field.GetLength(0) - 4; red++)
                        {
                            for (int kol = 4; kol < Field.GetLength(1) - 4; kol++)
                            {
                                if (red - redBr >= 0 && red - redBr < 9 && kol - kolBr >= 0 && kol - kolBr < 9 && figura.figure[red - redBr, kol - kolBr] == owner)
                                {
                                    Field[red, kol] = owner;
                                }
                            }
                        }
                        isPut = true;
                    }
                    else
                    {
                        Console.WriteLine("wrong move");
                    }
                }
                for (int red = 4; red < Field.GetLength(0) - 4; red++)
                {
                    for (int kol = 4; kol < Field.GetLength(1) - 4; kol++)
                    {
                        if (red - redBr >= 0 && red - redBr < 9 && kol - kolBr >= 0 && kol - kolBr < 9 && figura.figure[red - redBr, kol - kolBr] == owner)
                        {
                            if (owner == 1)
                            {
                                Console.BackgroundColor = ConsoleColor.Green;
                            }
                            if (owner == 2)
                            {
                                Console.BackgroundColor = ConsoleColor.Red;
                            }
                            if (owner == 3)
                            {
                                Console.BackgroundColor = ConsoleColor.Yellow;
                            }
                            if (owner == 4)
                            {
                                Console.BackgroundColor = ConsoleColor.Blue;
                            }
                            Console.Write(owner + " ");
                            Console.BackgroundColor = ConsoleColor.Black;
                        }
                        else
                        {
                            if (Field[red, kol] == 1)
                            {
                                Console.BackgroundColor = ConsoleColor.Green;
                            }
                            if (Field[red, kol] == 2)
                            {
                                Console.BackgroundColor = ConsoleColor.Red;
                            }
                            if (Field[red, kol] == 3)
                            {
                                Console.BackgroundColor = ConsoleColor.Yellow;
                            }
                            if (Field[red, kol] == 4)
                            {
                                Console.BackgroundColor = ConsoleColor.Blue;
                            }
                            Console.Write(Field[red, kol] + " ");
                            Console.BackgroundColor = ConsoleColor.Black;
                        }
                    }
                    Console.WriteLine();
                }
            }
            return(false);
        }
Ejemplo n.º 2
0
        public static void Main(string[] args)
        {
            //var test = new Figure5(2);

            //for (int i = 0; i < 15; i++)
            //{
            //    test.print();
            //    test.rotate();
            //}
            #region Console and font resizing
            //resize the console
            ConsoleHelper.SetConsoleFont(5); //Set the font size to  the smallest possible
            Console.WindowHeight = Console.LargestWindowHeight - 1;
            Console.WindowWidth  = Console.LargestWindowWidth - 4;
            ConsoleUtils.CenterConsole();
            #endregion Console and font resizing

            #region splashScreen
            ConsoleHelper.SplashScreen();
            Console.Write("{0,15}", "Choose how many players will play: ");
            #endregion splashScreen

            #region PlayersCount

            while (true)
            {
                string playerCountAsString = Console.ReadLine();

                if (int.TryParse(playerCountAsString, out playerCount))
                {
                    playerCount = int.Parse(playerCountAsString);


                    if (playerCount > 1 && playerCount <= 4)
                    {
                        Console.Clear();
                        break;
                    }
                    else
                    {
                        Console.WriteLine("You can play only with 2, 3 or 4 players");
                    }
                }
                else
                {
                    Console.WriteLine("You can play only with 2, 3 or 4 players");
                }
            }
            #endregion PlayersCount

            Player[] players = new Player[playerCount];
            #region playersInitializing
            if (playerCount == 2)
            {
                Console.Write("Enter 1st player's name : ");
                players[0] = new Player(1, Console.ReadLine());
                players[0].fillingStack();
                Console.Write("Enter 2nd player's name : ");
                players[1] = new Player(2, Console.ReadLine());
                players[1].fillingStack();

                //TODO Trqbva da e v masiv za da moje da se izvikvat pored
            }
            if (playerCount == 3)
            {
                Console.Write("Enter 1st player's name : ");
                players[0] = new Player(1, Console.ReadLine());
                players[0].fillingStack();
                Console.Write("Enter 2nd player's name : ");
                players[1] = new Player(2, Console.ReadLine());
                players[1].fillingStack();
                Console.Write("Enter 3rd player's name : ");
                players[2] = new Player(3, Console.ReadLine());
                players[2].fillingStack();
            }
            if (playerCount == 4)
            {
                Console.Write("Enter 1st player's name : ");
                players[0] = new Player(1, Console.ReadLine());
                players[0].fillingStack();
                Console.Write("Enter 2nd player's name : ");
                players[1] = new Player(2, Console.ReadLine());
                players[1].fillingStack();
                Console.Write("Enter 3rd player's name : ");
                players[2] = new Player(3, Console.ReadLine());
                players[2].fillingStack();
                Console.Write("Enter 4th player's name : ");
                players[3] = new Player(4, Console.ReadLine());
                players[3].fillingStack();
            }
            #endregion playersInitializingplayer
            Console.Clear();
            bool GameOver      = false;
            bool isFigLeft     = false;
            int  currentPlayer = 0;

            Field constructField = new Field();
            constructField.FillingMatrix();
            while (!GameOver)
            {
                isFigLeft = false;
                // DRAW FIELD I FIRST PLAYER'S STACK
                if (CheckForMoves.haveTurn(players[currentPlayer].playerStack, constructField.playField, currentPlayer + 1) == false)
                {
                    players[currentPlayer].hasMoves = false;
                }
                for (int i = 0; i < playerCount; i++)
                {
                    if (players[i].hasMoves == true)
                    {
                        break;
                    }
                    if (i == playerCount - 1)
                    {
                        if (players[i].hasMoves == false)
                        {
                            GameOver = true;
                        }
                    }
                }
                // CHECK IF PLAYER HAS MOVES
                if (players[currentPlayer].hasMoves == true)
                {
                    int currentFigure = new int();
                    // FIRSTPLAYER CHOOSE FIGURE
                    bool ret;
                    bool wantToEscape = false;
                    while (true)
                    {
                        int counter = 0;
                        int curCol  = 48;
                        int curRow  = 0;
                        foreach (var fig in players[currentPlayer].playerStack)
                        {
                            if (fig.isPut == false)
                            {
                                Console.SetCursorPosition(curCol, curRow);
                                Console.Write("[{0}]", fig.number);
                                Console.SetCursorPosition(curCol, curRow + 1);
                                fig.PrintFigure(curCol, curRow);
                                counter++;
                                curRow += 12;
                            }
                            if (counter > 3)
                            {
                                curCol += 12; // 22 beshe za distanciqta pri risuvaneto
                                curRow -= 48;
                                counter = 0;
                            }
                        }
                        Console.SetCursorPosition(0, 22);
                        ret       = false;
                        isFigLeft = false;
                        Console.WriteLine("It is player {0} turn:", currentPlayer + 1);
                        Console.Write("Chose a figure number: ");
                        string playerChoise = Console.ReadLine();

                        if (int.TryParse(playerChoise, out currentFigure))
                        {
                            currentFigure = int.Parse(playerChoise);

                            if (players[currentPlayer].playerStack[currentFigure - 1].isPut == true)
                            {
                                while (players[currentPlayer].playerStack[currentFigure - 1].isPut == true)
                                {
                                    Console.Write("Chose a figure that is not alredy used: ");
                                    playerChoise = Console.ReadLine();
                                    if (int.TryParse(playerChoise, out currentFigure))
                                    {
                                        currentFigure = int.Parse(playerChoise);
                                    }
                                    else
                                    {
                                        Console.Write("Chose a figure that is not alredy used: ");
                                        playerChoise = Console.ReadLine();
                                    }
                                }
                            }
                            if (currentFigure >= 1 && currentFigure <= 21)
                            {
                                Console.Write("Choose rotation: ");
                                while (true)
                                {
                                    ConsoleKeyInfo k = Console.ReadKey();

                                    if (k.Key == ConsoleKey.Spacebar)
                                    {
                                        players[currentPlayer].playerStack[currentFigure - 1].rotate();
                                        Console.WriteLine();
                                        players[currentPlayer].playerStack[currentFigure - 1].print(0, 26);
                                    }
                                    if (k.Key == ConsoleKey.Enter)
                                    {
                                        Console.Clear();
                                        MoveFigure fig = new MoveFigure();
                                        wantToEscape = fig.Move(players[currentPlayer].playerStack[currentFigure - 1], constructField.playField, currentPlayer + 1, wantToEscape);
                                        if (wantToEscape == true)
                                        {
                                            ret = true;
                                            break;
                                        }
                                        else
                                        {
                                            players[currentPlayer].playerScore += players[currentPlayer].playerStack[currentFigure - 1].score;
                                            isFigLeft = true;
                                            players[currentPlayer].playerStack[currentFigure - 1].isPut = true;
                                        }
                                    }
                                    if (isFigLeft)
                                    {
                                        currentPlayer++;
                                        if (currentPlayer > playerCount - 1)
                                        {
                                            currentPlayer = 0;
                                        }
                                        ret = true;
                                        break;
                                    }
                                    if (k.Key == ConsoleKey.Escape)
                                    {
                                        ret = true;
                                        break;
                                    }
                                }
                                if (ret)
                                {
                                    continue;
                                }
                            }
                            else
                            {
                                Console.WriteLine("Figures are integers from 1 to 21");
                            }
                        }
                        else
                        {
                            Console.WriteLine("Figures are integers from 1 to 21");
                        }
                    }
                }
                Console.Clear();
                for (int i = 0; i < playerCount; i++)
                {
                    Console.WriteLine("{0} has {1} points", players[i].playerName, players[i].playerScore);
                }

                // PLAYER CHOOSE ROTATION

                // FIRSTPLAYER CHOOSE PLACE ON FIELD OR CHOOSE ANOTHER FIGURE

                // IF FIGURE IS LEFT ON THE FIELD --> NEXTPLAYER
            }
            //{

            //}
            // WINNER



            //Player first = new Player(1,"Ivan");
        }