public int[] GetWinnerAndPointsAndTrickNumber() { Trick currentTrick = tricks[tricks.Count - 1]; int[] trickAndWinner = currentTrick.GetTrickWinnerAndPoints(); return(new int[] { trickAndWinner[0], trickAndWinner[1], tricks.Count - 1 }); }
internal void UndoMove(Move move) { if (tricks.Count - 1 < 0) { Console.WriteLine("PerfectInformationGame.UndoMove >> Negative index"); //System.Environment.Exit(1); } predictableTrickWinner = -1; predictableTrickCut = false; Trick currentTrick = tricks[tricks.Count - 1]; if (currentTrick.IsFull()) { int[] winnerPoints = currentTrick.GetTrickWinnerAndPoints(); if (winnerPoints[0] == players[0].Id || winnerPoints[0] == (players[0].Id + 2) % 4) { firstTeamPoints -= winnerPoints[1]; } else { secondTeamPoints -= winnerPoints[1]; } } currentTrick.UndoMove(); if (currentTrick.IsEmpty()) { tricks.RemoveAt(tricks.Count - 1); } foreach (PlayerNode p in players) { //TODO review if is this the correct method p.UndoMove(move); } }
internal void ApplyMove(Move move) { Trick currentTrick = tricks[tricks.Count - 1]; if (currentTrick.IsFull()) { tricks.Add(new Trick(trump)); currentTrick = tricks[tricks.Count - 1]; } currentTrick.ApplyMove(move); if (currentTrick.IsFull()) { predictableTrickWinner = -1; predictableTrickCut = false; int[] winnerPoints = currentTrick.GetTrickWinnerAndPoints(); if (winnerPoints[0] == players[0].Id || winnerPoints[0] == (players[0].Id + 2) % 4) { firstTeamPoints += winnerPoints[1]; } else { secondTeamPoints += winnerPoints[1]; } } foreach (var p in players) { //TODO review if is this the correct method p.ApplyMove(move); } }
public void RemovePlay(int playerId, int card) { Trick currentTrick = tricks[tricks.Count - 1]; if (currentTrick.IsFull()) { int[] winnerPoints = currentTrick.GetTrickWinnerAndPoints(); if (winnerPoints[0] == id || winnerPoints[0] == (id + 2) % 4) { MyTeamPoints -= winnerPoints[1]; } else { //TODO checks valence of points!!! OtherTeamPoints -= winnerPoints[1]; } } currentTrick.UndoMove(); if (currentTrick.IsEmpty()) { tricks.RemoveAt(tricks.Count - 1); } if (playerId == id) { hand.Add(card); } else { int cardSuit = Card.GetSuit(card); if (!suitHasPlayer[cardSuit].Contains(playerId)) { suitHasPlayer[cardSuit].Add(playerId); } if (TrumpCard == card) { trumpCardWasPlayed = false; } else { unknownOwnerCards.Add(card); } if (Card.GetValue(card) > 0) { othersPointCards[Card.GetSuit(card)].Add(Card.GetRank(card)); } } if (Card.GetSuit(card) == Trump) { remainingTrumps++; } }
public void AddPlay(int playerID, int card) { Trick currentTrick = tricks[tricks.Count - 1]; if (currentTrick.IsFull()) { int[] winnerPoints = currentTrick.GetTrickWinnerAndPoints(); if (winnerPoints[0] == id || winnerPoints[0] == (id + 2) % 4) { MyTeamPoints += winnerPoints[1]; } else { //TODO checks valence of points!!! OtherTeamPoints += winnerPoints[1]; } tricks.Add(new Trick(Trump)); currentTrick = tricks[tricks.Count - 1]; } //check if player has the leadSuit int leadSuit = currentTrick.LeadSuit; int cardSuit = Card.GetSuit(card); int cardValue = Card.GetValue(card); if (playerID != id && cardSuit == leadSuit && !suitHasPlayer[leadSuit].Contains(playerID)) { Console.WriteLine("AddPlay: The player has renounced!"); } currentTrick.ApplyMove(new Move(playerID, card)); if (playerID != id && cardSuit != leadSuit && leadSuit != (int)Suit.None) { if (suitHasPlayer[leadSuit].Contains(playerID)) { suitHasPlayer[leadSuit].Remove(playerID); } } if (cardSuit == Trump) { remainingTrumps--; } if (playerID == id) { if (hand.Remove(card) == false) { //Console.WriteLine("INFOSET Trying to remove an nonexisting card!!!"); } } else { if (TrumpCard == card) { trumpCardWasPlayed = true; } else { if (unknownOwnerCards.RemoveCard(card) == false) { Console.WriteLine("FILIPA"); } } if (cardValue > 0) { othersPointCards[cardSuit].Remove(Card.GetRank(card)); } } }