Example #1
0
        public int GetRoundWinner()
        {
            IAttackPoints player1 = players[0];
            IAttackPoints player2 = players[1];

            if (player1.GetAttackPoints()[0] > player2.GetAttackPoints()[0])
            {
                return(0);
            }
            else if (player1.GetAttackPoints()[0] > player2.GetAttackPoints()[0])
            {
                return(1);
            }
            else
            {
                return(-1);
            }
        }
        public static void ShowBoard(Board board, int player, int[] lifePoints, int[] attackPoints)
        {
            IAttackPoints attackPointsType = board;

            Console.WriteLine("Board");
            if (player == 0)
            {
                Console.WriteLine("Opponent - LifePoints: {0} - AttackPoints: {1} :", lifePoints[1], attackPoints[1]);

                //Informacion de cartas longRange de oponente
                Console.WriteLine("(longRange) [{0}]:", attackPointsType.GetAttackPoints(EnumType.longRange)[1]);
                if (board.PlayerCards[1].ContainsKey(EnumType.longRange))
                {
                    foreach (CombatCard card in board.PlayerCards[1][EnumType.longRange])
                    {
                        Console.WriteLine("|{0}|", card.AttackPoints);
                    }
                }
                //Informacion de cartas range de oponente
                Console.WriteLine("(range) [{0}]:", attackPointsType.GetAttackPoints(EnumType.range)[1]);
                if (board.PlayerCards[1].ContainsKey(EnumType.range))
                {
                    foreach (CombatCard card in board.PlayerCards[1][EnumType.range])
                    {
                        Console.WriteLine("|{0}|", card.AttackPoints);
                    }
                }
                //Informacion de cartas melee de oponente
                Console.WriteLine("(melee) [{0}]:", attackPointsType.GetAttackPoints(EnumType.melee)[1]);
                if (board.PlayerCards[1].ContainsKey(EnumType.melee))
                {
                    foreach (CombatCard card in board.PlayerCards[1][EnumType.melee])
                    {
                        Console.WriteLine("|{0}|", card.AttackPoints);
                    }
                }
                Console.WriteLine("");
                Console.WriteLine("Wheather Cards");
                Console.WriteLine("");

                Console.WriteLine("You - LifePoints: {0} - AttackPoints: {1} :", lifePoints[0], attackPoints[0]);

                //Informacion de cartas longRange de jugador actual
                Console.WriteLine("(longRange) [{0}]:", attackPointsType.GetAttackPoints(EnumType.longRange)[0]);
                if (board.PlayerCards[player].ContainsKey(EnumType.longRange))
                {
                    foreach (CombatCard card in board.PlayerCards[player][EnumType.longRange])
                    {
                        Console.WriteLine("|{0}|", card.AttackPoints);
                    }
                }
                //Informacion de cartas rage de jugador actual
                Console.WriteLine("(range) [{0}]:", attackPointsType.GetAttackPoints(EnumType.range)[0]);
                if (board.PlayerCards[player].ContainsKey(EnumType.range))
                {
                    foreach (CombatCard card in board.PlayerCards[player][EnumType.range])
                    {
                        Console.WriteLine("|{0}|", card.AttackPoints);
                    }
                }
                //Informacion de cartas melee de jugador actual
                Console.WriteLine("(melee) [{0}]:", attackPointsType.GetAttackPoints(EnumType.melee)[0]);
                if (board.PlayerCards[player].ContainsKey(EnumType.melee))
                {
                    foreach (CombatCard card in board.PlayerCards[player][EnumType.melee])
                    {
                        Console.WriteLine("|{0}|", card.AttackPoints);
                    }
                }
            }
            else
            {
                Console.WriteLine("Opponent - LifePoints: {0} - AttackPoints: {1} :", lifePoints[0], attackPoints[0]);

                //Informacion de cartas longRange de oponente
                Console.WriteLine("(longRange) [{0}]:", attackPointsType.GetAttackPoints(EnumType.longRange)[0]);
                if (board.PlayerCards[0].ContainsKey(EnumType.longRange))
                {
                    foreach (CombatCard card in board.PlayerCards[0][EnumType.longRange])
                    {
                        Console.WriteLine("|{0}|", card.AttackPoints);
                    }
                }
                //Informacion de cartas range de oponente
                Console.WriteLine("(range) [{0}]:", attackPointsType.GetAttackPoints(EnumType.range)[0]);
                if (board.PlayerCards[0].ContainsKey(EnumType.range))
                {
                    foreach (CombatCard card in board.PlayerCards[0][EnumType.range])
                    {
                        Console.WriteLine("|{0}|", card.AttackPoints);
                    }
                }
                //Informacion de cartas melee de oponente
                Console.WriteLine("(melee) [{0}]:", attackPointsType.GetAttackPoints(EnumType.melee)[0]);
                if (board.PlayerCards[0].ContainsKey(EnumType.melee))
                {
                    foreach (CombatCard card in board.PlayerCards[0][EnumType.melee])
                    {
                        Console.WriteLine("|{0}|", card.AttackPoints);
                    }
                }
                Console.WriteLine("");
                Console.WriteLine("Wheather Cards");
                Console.WriteLine("");

                Console.WriteLine("You - LifePoints: {0} - AttackPoints: {1} :", lifePoints[1], attackPoints[1]);

                //Informacion de cartas longRange de jugador actual
                Console.WriteLine("(longRange) [{0}]:", attackPointsType.GetAttackPoints(EnumType.longRange)[1]);
                if (board.PlayerCards[player].ContainsKey(EnumType.longRange))
                {
                    foreach (CombatCard card in board.PlayerCards[player][EnumType.longRange])
                    {
                        Console.WriteLine("|{0}|", card.AttackPoints);
                    }
                }
                //Informacion de cartas rage de jugador actual
                Console.WriteLine("(range) [{0}]:", attackPointsType.GetAttackPoints(EnumType.range)[1]);
                if (board.PlayerCards[player].ContainsKey(EnumType.range))
                {
                    foreach (CombatCard card in board.PlayerCards[player][EnumType.range])
                    {
                        Console.WriteLine("|{0}|", card.AttackPoints);
                    }
                }
                //Informacion de cartas melee de jugador actual
                Console.WriteLine("(melee) [{0}]:", attackPointsType.GetAttackPoints(EnumType.melee)[1]);
                if (board.PlayerCards[player].ContainsKey(EnumType.melee))
                {
                    foreach (CombatCard card in board.PlayerCards[player][EnumType.melee])
                    {
                        Console.WriteLine("|{0}|", card.AttackPoints);
                    }
                }
            }
        }
Example #3
0
        public void Play()
        {
            int  userInput         = 0;
            int  useInputB         = 0;
            int  firstOrSecondUser = ActivePlayer.Id == 0 ? 0 : 1;
            bool GameSwitch        = false;

            //int count1=  0;//
            //int count2 = 0;//

            /*IAttackPoints playa1 = players[0];
             * IAttackPoints playa2 = players[1];
             * LifeP[0] = players[0].LifePoints;
             * LifeP[1] = players[1].LifePoints;
             * for(int m = 0; m < playa1.GetAttackPoints(EnumType.None).Length; m++)
             * {
             *  count1 += playa1.GetAttackPoints(EnumType.None)[m];
             * }
             * for (int n = 0; n < playa2.GetAttackPoints(EnumType.None).Length; n++)
             * {
             *  count2 += playa2.GetAttackPoints(EnumType.None)[n];
             * }
             * AttackP[0] = playa1.GetAttackPoints(EnumType.None)[0];
             * AttackP[1] = playa2.GetAttackPoints(EnumType.None)[0];*/



            //turno 0 o configuracion
            if (turn == 0)
            {
                for (int _ = 0; _ < Players.Length; _++)
                {
                    ActivePlayer = Players[firstOrSecondUser];
                    Visualization.ClearConsole();
                    //Mostrar mensaje de inicio
                    Visualization.ShowProgramMessage($"Player {ActivePlayer.Id+1} select Deck and Captain:");
                    //Preguntar por deck
                    Visualization.ShowDecks(this.Decks);
                    userInput = Visualization.GetUserInput(this.Decks.Count - 1);
                    Deck deck = new Deck();
                    deck.Cards        = new List <Card>(Decks[userInput].Cards);
                    ActivePlayer.Deck = deck;
                    //Preguntar por capitan
                    Visualization.ShowCaptains(Captains);
                    userInput = Visualization.GetUserInput(this.Captains.Count - 1);
                    ActivePlayer.ChooseCaptainCard(new SpecialCard(Captains[userInput].Name, Captains[userInput].Type, Captains[userInput].Effect));
                    //Asignar mano
                    ActivePlayer.FirstHand();
                    //Mostrar mano
                    Visualization.ShowHand(ActivePlayer.Hand);
                    //Mostar opciones, cambiar carta o pasar
                    Visualization.ShowListOptions(new List <string>()
                    {
                        "Change Card", "Pass"
                    }, "Change 3 cards or ready to play:");
                    userInput = Visualization.GetUserInput(1);
                    if (userInput == 0)
                    {
                        Visualization.ClearConsole();
                        Visualization.ShowProgramMessage($"Player {ActivePlayer.Id+1} change cards:");
                        Visualization.ShowHand(ActivePlayer.Hand);
                        for (int i = 0; i < DEFAULT_CHANGE_CARDS_NUMBER; i++)
                        {
                            Visualization.ShowProgramMessage($"Input the numbers of the cards to change (max {DEFAULT_CHANGE_CARDS_NUMBER}). To stop enter -1");
                            userInput = Visualization.GetUserInput(ActivePlayer.Hand.Cards.Count, true);
                            if (userInput == -1)
                            {
                                break;
                            }
                            ActivePlayer.ChangeCard(userInput);
                            Visualization.ShowHand(ActivePlayer.Hand);
                        }
                    }
                    firstOrSecondUser = ActivePlayer.Id == 0 ? 1 : 0;
                }
                turn += 1;
            }

            IAttackPoints playa1 = players[0];
            IAttackPoints playa2 = players[1];

            LifeP[0] = players[0].LifePoints;
            LifeP[1] = players[1].LifePoints;

            /*for(int y = 0; y < players[0].Hand.Cards.Count; y++)
             * {
             *  if (players[0].Hand.Cards[y] is CombatCard)
             *  {
             *      BoardGame.AddCard(players[0].Hand.Cards[y], 0, players[0].Hand.Cards[y].Type);
             *  }
             * }
             *
             * for (int w = 0; w < players[1].Hand.Cards.Count; w++)
             * {
             *  if (players[1].Hand.Cards[w] is CombatCard)
             *  {
             *      BoardGame.AddCard(players[1].Hand.Cards[w], 1, players[1].Hand.Cards[w].Type);
             *  }
             *
             * }*/



            while (GameSwitch != true)
            {
                if (ActivePlayer.Id == 0)
                {
                    Visualization.ShowBoard(BoardGame, ActivePlayer.Id, LifeP, AttackP);
                    Visualization.ShowProgramMessage($"Player {ActivePlayer.Id + 1} will draw a card");
                    ActivePlayer.DrawCard();
                    Visualization.ShowHand(ActivePlayer.Hand);
                    Visualization.ShowListOptions(new List <string>()
                    {
                        "Play Card", "Pass"
                    });
                    userInput = Visualization.GetUserInput(1);
                    if (userInput == 0)
                    {
                        Visualization.ClearConsole();
                        Visualization.ShowBoard(BoardGame, ActivePlayer.Id, LifeP, AttackP);
                        Visualization.ShowProgramMessage($"Player {ActivePlayer.Id + 1} play cards:");
                        Visualization.ShowHand(ActivePlayer.Hand);
                        Visualization.ShowProgramMessage($"Input the number of the cards you'd like to  play (max {ActivePlayer.Hand.Cards.Count}). To stop enter -1");
                        userInput = Visualization.GetUserInput(ActivePlayer.Hand.Cards.Count);

                        Visualization.ClearConsole();
                        if (ActivePlayer.Hand.Cards[userInput].Type == EnumType.buff)
                        {
                            Visualization.ShowProgramMessage("Please Select which type you'd like to buff:");
                            Visualization.ShowProgramMessage("(0): LongRange (1): Range (2): Melee");
                            useInputB = Visualization.GetUserInput(2);

                            switch (useInputB)
                            {
                            case 0:
                                ActivePlayer.PlayCard(userInput, EnumType.bufflongRange);
                                break;

                            case 1:
                                ActivePlayer.PlayCard(userInput, EnumType.buffrange);
                                break;

                            case 2:
                                ActivePlayer.PlayCard(userInput, EnumType.buffmelee);
                                break;
                            }
                        }
                        else
                        {
                            ActivePlayer.PlayCard(userInput, ActivePlayer.Hand.Cards[userInput].Type);
                        }

                        AttackP[ActivePlayer.Id] = playa1.GetAttackPoints(EnumType.None)[0];
                        //Visualization.ShowProgramMessage($"Player {ActivePlayer.Id + 1} has played{ActivePlayer.Hand.Cards[userInput].Name} ");//
                        Visualization.ShowHand(ActivePlayer.Hand);
                        Visualization.ShowBoard(BoardGame, ActivePlayer.Id, LifeP, AttackP);
                    }
                    Visualization.ShowProgramMessage($"Player {ActivePlayer.Id + 1} Turn has ended please press anykey to continue to the next player turn");
                    Console.ReadKey();
                    Visualization.ClearConsole();
                    ActivePlayer.Id += 1;
                    Visualization.ShowBoard(BoardGame, ActivePlayer.Id, LifeP, AttackP);
                    Visualization.ShowProgramMessage($"Player {ActivePlayer.Id + 1} will draw a card");
                    ActivePlayer.DrawCard();
                    Visualization.ShowHand(ActivePlayer.Hand);
                    Visualization.ShowListOptions(new List <string>()
                    {
                        "Play Card", "Pass"
                    });
                    userInput = Visualization.GetUserInput(1);
                    if (userInput == 0)
                    {
                        Visualization.ClearConsole();
                        Visualization.ShowBoard(BoardGame, ActivePlayer.Id, LifeP, AttackP);
                        Visualization.ShowProgramMessage($"Player {ActivePlayer.Id + 1} play cards:");
                        Visualization.ShowHand(ActivePlayer.Hand);
                        Visualization.ShowProgramMessage($"Input the number of the cards you'd like to  play (max {ActivePlayer.Hand.Cards.Count}). To stop enter -1");
                        userInput = Visualization.GetUserInput(ActivePlayer.Hand.Cards.Count);

                        Visualization.ClearConsole();
                        if (ActivePlayer.Hand.Cards[userInput].Type == EnumType.buff)
                        {
                            Visualization.ShowProgramMessage("Please Select which type you'd like to buff:");
                            Visualization.ShowProgramMessage("(0): LongRange (1): Range (2): Melee");
                            useInputB = Visualization.GetUserInput(2);

                            switch (useInputB)
                            {
                            case 0:
                                ActivePlayer.PlayCard(userInput, EnumType.bufflongRange);
                                break;

                            case 1:
                                ActivePlayer.PlayCard(userInput, EnumType.buffrange);
                                break;

                            case 2:
                                ActivePlayer.PlayCard(userInput, EnumType.buffmelee);
                                break;
                            }
                        }
                        else
                        {
                            ActivePlayer.PlayCard(userInput, ActivePlayer.Hand.Cards[userInput].Type);
                        }
                        AttackP[ActivePlayer.Id] = playa2.GetAttackPoints(EnumType.None)[0];
                        //Visualization.ShowProgramMessage($"Player {ActivePlayer.Id + 1} has played{ActivePlayer.Hand.Cards[userInput].Name} ");//
                        Visualization.ShowHand(ActivePlayer.Hand);
                        Visualization.ShowBoard(BoardGame, ActivePlayer.Id, LifeP, AttackP);
                    }
                    Visualization.ClearConsole();
                    Visualization.ShowBoard(BoardGame, ActivePlayer.Id, LifeP, AttackP);
                    if (AttackP[0] < AttackP[1])
                    {
                        Visualization.ShowProgramMessage("Player 2 has won this round, Player 1 has lost one lifepoint  ");
                        LifeP[0] -= 1;
                        players[0].LifePoints -= 1;
                    }
                    if (AttackP[1] < AttackP[0])
                    {
                        Visualization.ShowProgramMessage("Player 1 has won this round, Player 2 has lost one lifepoint  ");
                        LifeP[1] -= 1;
                        players[1].LifePoints -= 1;
                    }
                    if (AttackP[0] == AttackP[1])
                    {
                        Visualization.ShowProgramMessage("Player 2 has tied this round with Player 1,  both Players  have lost one lifepoint  ");
                        LifeP[0] -= 1;
                        LifeP[1] -= 1;
                        players[0].LifePoints -= 1;
                        players[1].LifePoints -= 1;
                    }
                    GameSwitch = this.CheckIfEndGame();
                }
                else
                {
                    Visualization.ShowBoard(BoardGame, ActivePlayer.Id, LifeP, AttackP);
                    Visualization.ShowProgramMessage($"Player {ActivePlayer.Id + 1} will draw a card");
                    ActivePlayer.DrawCard();
                    Visualization.ShowHand(ActivePlayer.Hand);
                    Visualization.ShowListOptions(new List <string>()
                    {
                        "Play Card", "Pass"
                    });
                    userInput = Visualization.GetUserInput(1);
                    if (userInput == 0)
                    {
                        Visualization.ClearConsole();
                        Visualization.ShowBoard(BoardGame, ActivePlayer.Id, LifeP, AttackP);
                        Visualization.ShowProgramMessage($"Player {ActivePlayer.Id + 1} play cards:");
                        Visualization.ShowHand(ActivePlayer.Hand);
                        Visualization.ShowProgramMessage($"Input the number of the cards you'd like to  play (max {ActivePlayer.Hand.Cards.Count}). To stop enter -1");
                        userInput = Visualization.GetUserInput(ActivePlayer.Hand.Cards.Count);

                        Visualization.ClearConsole();
                        if (ActivePlayer.Hand.Cards[userInput].Type == EnumType.buff)
                        {
                            Visualization.ShowProgramMessage("Please Select which type you'd like to buff:");
                            Visualization.ShowProgramMessage("(0): LongRange (1): Range (2): Melee");
                            useInputB = Visualization.GetUserInput(2);

                            switch (useInputB)
                            {
                            case 0:
                                ActivePlayer.PlayCard(userInput, EnumType.bufflongRange);
                                break;

                            case 1:
                                ActivePlayer.PlayCard(userInput, EnumType.buffrange);
                                break;

                            case 2:
                                ActivePlayer.PlayCard(userInput, EnumType.buffmelee);
                                break;
                            }
                        }
                        else
                        {
                            ActivePlayer.PlayCard(userInput, ActivePlayer.Hand.Cards[userInput].Type);
                        }
                        AttackP[ActivePlayer.Id] = playa2.GetAttackPoints(EnumType.None)[0];
                        //Visualization.ShowProgramMessage($"Player {ActivePlayer.Id + 1} has played{ActivePlayer.Hand.Cards[userInput].Name} ");//
                        Visualization.ShowHand(ActivePlayer.Hand);
                        Visualization.ShowBoard(BoardGame, ActivePlayer.Id, LifeP, AttackP);
                    }
                    Visualization.ShowProgramMessage($"Player {ActivePlayer.Id + 1} Turn has ended please press anykey to continue to the next player turn");
                    Console.ReadKey();
                    Visualization.ClearConsole();
                    ActivePlayer.Id -= 1;
                    Visualization.ShowBoard(BoardGame, ActivePlayer.Id, LifeP, AttackP);
                    Visualization.ShowProgramMessage($"Player {ActivePlayer.Id + 1} will draw a card");
                    ActivePlayer.DrawCard();
                    Visualization.ShowHand(ActivePlayer.Hand);
                    Visualization.ShowListOptions(new List <string>()
                    {
                        "Play Card", "Pass"
                    });
                    userInput = Visualization.GetUserInput(1);
                    if (userInput == 0)
                    {
                        Visualization.ClearConsole();
                        Visualization.ShowBoard(BoardGame, ActivePlayer.Id, LifeP, AttackP);
                        Visualization.ShowProgramMessage($"Player {ActivePlayer.Id + 1} play cards:");
                        Visualization.ShowHand(ActivePlayer.Hand);
                        Visualization.ShowProgramMessage($"Input the number of the cards you'd like to  play (max {ActivePlayer.Hand.Cards.Count}). To stop enter -1");
                        userInput = Visualization.GetUserInput(ActivePlayer.Hand.Cards.Count);

                        Visualization.ClearConsole();

                        if (ActivePlayer.Hand.Cards[userInput].Type == EnumType.buff)
                        {
                            Visualization.ShowProgramMessage("Please Select which type you'd like to buff:");
                            Visualization.ShowProgramMessage("(0): LongRange (1): Range (2): Melee");
                            useInputB = Visualization.GetUserInput(2);

                            switch (useInputB)
                            {
                            case 0:
                                ActivePlayer.PlayCard(userInput, EnumType.bufflongRange);
                                break;

                            case 1:
                                ActivePlayer.PlayCard(userInput, EnumType.buffrange);
                                break;

                            case 2:
                                ActivePlayer.PlayCard(userInput, EnumType.buffmelee);
                                break;
                            }
                        }
                        else
                        {
                            ActivePlayer.PlayCard(userInput, ActivePlayer.Hand.Cards[userInput].Type);
                        }
                        AttackP[ActivePlayer.Id] = playa1.GetAttackPoints(EnumType.None)[0];
                        //Visualization.ShowProgramMessage($"Player {ActivePlayer.Id + 1} has played{ActivePlayer.Hand.Cards[userInput].Name} ");//

                        Visualization.ShowHand(ActivePlayer.Hand);
                        Visualization.ShowBoard(BoardGame, ActivePlayer.Id, LifeP, AttackP);
                    }
                    Visualization.ClearConsole();
                    Visualization.ShowBoard(BoardGame, ActivePlayer.Id, LifeP, AttackP);
                    if (AttackP[0] < AttackP[1])
                    {
                        Visualization.ShowProgramMessage("Player 2 has won this round, Player 1 has lost one lifepoint  ");
                        LifeP[0] -= 1;
                        players[0].LifePoints -= 1;
                    }
                    if (AttackP[1] < AttackP[0])
                    {
                        Visualization.ShowProgramMessage("Player 1 has won this round, Player 2 has lost one lifepoint  ");
                        LifeP[1] -= 1;
                        players[1].LifePoints -= 1;
                    }
                    if (AttackP[0] == AttackP[1])
                    {
                        Visualization.ShowProgramMessage("Player 2 has tied this round with Player 1,  both Players  have lost one lifepoint  ");
                        LifeP[0] -= 1;
                        LifeP[1] -= 1;
                        players[0].LifePoints -= 1;
                        players[1].LifePoints -= 1;
                    }
                    GameSwitch = this.CheckIfEndGame();
                }
            }



            int gk = this.GetWinner();

            switch (gk)
            {
            case 0:
                Visualization.ShowProgramMessage("Player 1 has won this game");
                break;

            case 1:
                Visualization.ShowProgramMessage("Player 2 has won this game");
                break;

            case -1:
                Visualization.ShowProgramMessage("the game was tied");
                break;
            }
            Console.ReadKey();
        }
        public static void ShowBoard(Board board, int player, int[] lifePoints, int[] attackPoints)
        {
            IAttackPoints Boarde = board;

            Console.WriteLine("Board\n\n");
            CombatCard LongRangeC;
            CombatCard RangeC;
            CombatCard MeleeC;

            if (player == 1)
            {
                Console.WriteLine($"Opponent: - Life Points:   {lifePoints[0]} AttackPoints:  {attackPoints[0]} ");

                Console.Write("(LongRange) ");

                if (board.PlayerCards[0].ContainsKey(EnumType.bufflongRange))
                {
                    Console.Write("(Buffed");
                }
                Console.Write($"[{Boarde.GetAttackPoints(EnumType.longRange)[0]}]: ");

                if (board.PlayerCards[0].ContainsKey(EnumType.longRange))
                {
                    for (int o = 0; o < board.PlayerCards[0][EnumType.longRange].Count; o++)
                    {
                        LongRangeC = board.PlayerCards[0][EnumType.longRange][o] as CombatCard;
                        Console.Write($"|{LongRangeC.AttackPoints}|");
                    }
                }

                Console.Write("\n");
                Console.Write("(Range) ");
                if (board.PlayerCards[0].ContainsKey(EnumType.buffrange))
                {
                    Console.Write("(Buffed");
                }
                Console.Write($"[{Boarde.GetAttackPoints(EnumType.range)[0]}]: ");
                if (board.PlayerCards[0].ContainsKey(EnumType.range))
                {
                    for (int f = 0; f < board.PlayerCards[0][EnumType.range].Count; f++)
                    {
                        RangeC = board.PlayerCards[0][EnumType.range][f] as CombatCard;
                        Console.Write($"|{RangeC.AttackPoints}|");
                    }
                }
                Console.Write("\n");
                Console.Write("(Melee) ");
                if (board.PlayerCards[0].ContainsKey(EnumType.buffmelee))
                {
                    Console.Write("(Buffed");
                }
                Console.Write($"[{Boarde.GetAttackPoints(EnumType.melee)[0]}]: ");
                if (board.PlayerCards[0].ContainsKey(EnumType.melee))
                {
                    for (int a = 0; a < board.PlayerCards[0][EnumType.melee].Count; a++)
                    {
                        MeleeC = board.PlayerCards[0][EnumType.melee][a] as CombatCard;
                        Console.Write($"|{MeleeC.AttackPoints}|");
                    }
                }
                Console.Write("\n\n");
                Console.Write("Weather Cards: ");
                for (int h = 0; h < board.WeatherCards.Count; h++)
                {
                    Console.ForegroundColor = ConsoleColor.Blue;

                    Console.Write($"|{board.WeatherCards[h].Name}|");
                }
                Console.ResetColor();
                Console.Write("\n\n");
                Console.WriteLine($"You: - Life Points:   {lifePoints[player]} AttackPoints:  {attackPoints[player]} ");

                Console.Write("(LongRange) ");
                if (board.PlayerCards[player].ContainsKey(EnumType.bufflongRange))
                {
                    Console.Write("(Buffed");
                }
                Console.Write($"[{Boarde.GetAttackPoints(EnumType.longRange)[player]}]: ");
                if (board.PlayerCards[player].ContainsKey(EnumType.longRange))
                {
                    for (int t = 0; t < board.PlayerCards[player][EnumType.longRange].Count; t++)
                    {
                        LongRangeC = board.PlayerCards[player][EnumType.longRange][t] as CombatCard;
                        Console.Write($"|{LongRangeC.AttackPoints}|");
                    }
                }
                Console.Write("\n");
                Console.Write("(Range) ");
                if (board.PlayerCards[player].ContainsKey(EnumType.buffrange))
                {
                    Console.Write("(Buffed");
                }
                Console.Write($"[{Boarde.GetAttackPoints(EnumType.range)[player]}]: ");
                if (board.PlayerCards[player].ContainsKey(EnumType.range))
                {
                    for (int s = 0; s < board.PlayerCards[player][EnumType.range].Count; s++)
                    {
                        RangeC = board.PlayerCards[player][EnumType.range][s] as CombatCard;
                        Console.Write($"|{RangeC.AttackPoints}|");
                    }
                }
                Console.Write("\n");
                Console.Write("(Melee) ");
                if (board.PlayerCards[player].ContainsKey(EnumType.buffmelee))
                {
                    Console.Write("(Buffed");
                }
                Console.Write($"[{Boarde.GetAttackPoints(EnumType.melee)[player]}]: ");
                if (board.PlayerCards[player].ContainsKey(EnumType.melee))
                {
                    for (int v = 0; v < board.PlayerCards[player][EnumType.melee].Count; v++)
                    {
                        MeleeC = board.PlayerCards[player][EnumType.melee][v] as CombatCard;
                        Console.Write($"|{MeleeC.AttackPoints}|");
                    }
                }
                Console.Write("\n\n");

                /*Console.Write("Weather Cards: ");
                 * for (int d = 0; d < board.WeatherCards.Count; d++)
                 * {
                 *  Console.ForegroundColor = ConsoleColor.Blue;
                 *
                 *  Console.Write($"|{board.WeatherCards[d].Name}|");
                 * }
                 * Console.ResetColor();
                 * Console.Write("\n\n");*/
            }
            else
            {
                Console.WriteLine($"Opponent: - Life Points:   {lifePoints[1]} AttackPoints:  {attackPoints[1]} ");

                Console.Write("(LongRange) ");
                if (board.PlayerCards[1].ContainsKey(EnumType.bufflongRange))
                {
                    Console.Write("(Buffed");
                }
                Console.Write($"[{Boarde.GetAttackPoints(EnumType.longRange)[1]}]: ");
                if (board.PlayerCards[1].ContainsKey(EnumType.longRange))
                {
                    for (int c = 0; c < board.PlayerCards[1][EnumType.longRange].Count; c++)
                    {
                        LongRangeC = board.PlayerCards[1][EnumType.longRange][c] as CombatCard;
                        Console.Write($"|{LongRangeC.AttackPoints}|");
                    }
                }
                Console.Write("\n");
                Console.Write("(Range) ");
                if (board.PlayerCards[1].ContainsKey(EnumType.buffrange))
                {
                    Console.Write("(Buffed");
                }
                Console.Write($"[{Boarde.GetAttackPoints(EnumType.range)[1]}]: ");
                if (board.PlayerCards[1].ContainsKey(EnumType.range))
                {
                    for (int x = 0; x < board.PlayerCards[1][EnumType.range].Count; x++)
                    {
                        RangeC = board.PlayerCards[1][EnumType.range][x] as CombatCard;
                        Console.Write($"|{RangeC.AttackPoints}|");
                    }
                }
                Console.Write("\n");
                Console.Write("(Melee) ");
                if (board.PlayerCards[1].ContainsKey(EnumType.buffmelee))
                {
                    Console.Write("(Buffed");
                }
                Console.Write($"[{Boarde.GetAttackPoints(EnumType.melee)[1]}]: ");
                if (board.PlayerCards[1].ContainsKey(EnumType.melee))
                {
                    for (int q = 0; q < board.PlayerCards[1][EnumType.melee].Count; q++)
                    {
                        MeleeC = board.PlayerCards[1][EnumType.melee][q] as CombatCard;
                        Console.Write($"|{MeleeC.AttackPoints}|");
                    }
                }
                Console.Write("\n\n");
                Console.Write("Weather Cards: ");
                for (int z = 0; z < board.WeatherCards.Count; z++)
                {
                    Console.ForegroundColor = ConsoleColor.Blue;

                    Console.Write($"|{board.WeatherCards[z].Name}|");
                }
                Console.ResetColor();
                Console.Write("\n\n");
                Console.WriteLine($"You: - Life Points:   {lifePoints[player]} AttackPoints:  {attackPoints[player]} ");

                Console.Write("(LongRange) ");
                if (board.PlayerCards[player].ContainsKey(EnumType.bufflongRange))
                {
                    Console.Write("(Buffed");
                }
                Console.Write($"[{Boarde.GetAttackPoints(EnumType.longRange)[player]}]: ");
                if (board.PlayerCards[player].ContainsKey(EnumType.longRange))
                {
                    for (int b = 0; b < board.PlayerCards[player][EnumType.longRange].Count; b++)
                    {
                        LongRangeC = board.PlayerCards[player][EnumType.longRange][b] as CombatCard;
                        Console.Write($"|{LongRangeC.AttackPoints}|");
                    }
                }
                Console.Write("\n");
                Console.Write("(Range) ");
                if (board.PlayerCards[player].ContainsKey(EnumType.buffrange))
                {
                    Console.Write("(Buffed");
                }
                Console.Write($"[{Boarde.GetAttackPoints(EnumType.range)[player]}]: ");
                if (board.PlayerCards[player].ContainsKey(EnumType.range))
                {
                    for (int r = 0; r < board.PlayerCards[player][EnumType.range].Count; r++)
                    {
                        RangeC = board.PlayerCards[player][EnumType.range][r] as CombatCard;
                        Console.Write($"|{RangeC.AttackPoints}|");
                    }
                }
                Console.Write("\n");
                Console.Write("(Melee) ");
                if (board.PlayerCards[player].ContainsKey(EnumType.buffmelee))
                {
                    Console.Write("(Buffed");
                }
                Console.Write($"[{Boarde.GetAttackPoints(EnumType.melee)[player]}]: ");
                if (board.PlayerCards[player].ContainsKey(EnumType.melee))
                {
                    for (int vb = 0; vb < board.PlayerCards[player][EnumType.melee].Count; vb++)
                    {
                        MeleeC = board.PlayerCards[player][EnumType.melee][vb] as CombatCard;
                        Console.Write($"|{MeleeC.AttackPoints}|");
                    }
                }
                Console.Write("\n\n");

                /* Console.Write("Weather Cards: ");
                 * for (int df = 0; df < board.WeatherCards.Count; df++)
                 * {
                 *   Console.ForegroundColor = ConsoleColor.Blue;
                 *
                 *   Console.Write($"|{board.WeatherCards[df].Name}|");
                 * }
                 * Console.ResetColor();
                 * Console.Write("\n\n");*/
            }
        }
Example #5
0
        public void Play()
        {
            int userInput         = 0;
            int firstOrSecondUser = ActivePlayer.Id == 0 ? 0 : 1;


            //turno 0 o configuracion
            if (turn == 0)
            {
                for (int _ = 0; _ < Players.Length; _++)
                {
                    ActivePlayer = Players[firstOrSecondUser];
                    Visualization.ClearConsole();
                    //Mostrar mensaje de inicio
                    Visualization.ShowProgramMessage($"Player {ActivePlayer.Id+1} select Deck and Captain:");
                    //Preguntar por deck
                    Visualization.ShowDecks(this.Decks);
                    userInput = Visualization.GetUserInput(this.Decks.Count - 1);
                    Deck deck = new Deck();
                    deck.Cards        = new List <Card>(Decks[userInput].Cards);
                    ActivePlayer.Deck = deck;
                    //Preguntar por capitan
                    Visualization.ShowCaptains(Captains);
                    userInput = Visualization.GetUserInput(this.Captains.Count - 1);
                    ActivePlayer.ChooseCaptainCard(new SpecialCard(Captains[userInput].Name, Captains[userInput].Type, Captains[userInput].Effect));
                    //Asignar mano
                    ActivePlayer.FirstHand();
                    //Mostrar mano
                    Visualization.ShowHand(ActivePlayer.Hand);
                    //Mostar opciones, cambiar carta o pasar
                    Visualization.ShowListOptions(new List <string>()
                    {
                        "Change Card", "Pass"
                    }, "Change 3 cards or ready to play:");
                    userInput = Visualization.GetUserInput(1);
                    if (userInput == 0)
                    {
                        Visualization.ClearConsole();
                        Visualization.ShowProgramMessage($"Player {ActivePlayer.Id+1} change cards:");
                        Visualization.ShowHand(ActivePlayer.Hand);
                        for (int i = 0; i < DEFAULT_CHANGE_CARDS_NUMBER; i++)
                        {
                            Visualization.ShowProgramMessage($"Input the numbers of the cards to change (max {DEFAULT_CHANGE_CARDS_NUMBER}). To stop enter -1");
                            userInput = Visualization.GetUserInput(ActivePlayer.Hand.Cards.Count, true);
                            if (userInput == -1)
                            {
                                break;
                            }
                            ActivePlayer.ChangeCard(userInput);
                            Visualization.ShowHand(ActivePlayer.Hand);
                        }
                    }
                    firstOrSecondUser = ActivePlayer.Id == 0 ? 1 : 0;
                }
                turn += 1;
            }
            IAttackPoints player1 = players[0];
            IAttackPoints player2 = players[1];

            int[] playersLife = new int[2] {
                players[0].LifePoints, players[1].LifePoints
            };
            int[] playersAttack = new int[2] {
                player1.GetAttackPoints()[0], player1.GetAttackPoints()[0]
            };

            //Se implemento ShowBoard, falto agregar metodolgia de turnos
            Visualization.ShowBoard(BoardGame, ActivePlayer.Id, playersLife, playersAttack);
        }