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); } } } }
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");*/ } }
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); }