private void SwapPawns(Player player, int i) { int sign = 1; Player otherPlayer = oppositePlayer; if (player == oppositePlayer) { sign = -1; otherPlayer = friendPlayer; } int rest = sign * friendPlayer.Choice.ChoiceBoards[i].Score; //---> Si le plateau était remporté par l'autre joueur if (sign * Boards[i].PawnsFriendPlayer < 0) { //---> Si l'autre joueur garde l'avantage if (sign * (Boards[i].PawnsFriendPlayer + rest) <= 0) { otherPlayer.FreePawns += sign * friendPlayer.Choice.ChoiceBoards[i].Score; rest = 0; } else { otherPlayer.FreePawns += Math.Abs(Boards[i].PawnsFriendPlayer); rest -= Math.Abs(Boards[i].PawnsFriendPlayer); } } //---> Assez de pions en réserve if (rest > 0 && player.FreePawns - rest >= 0) { player.FreePawns -= rest; rest = 0; } else if (rest > 0) { rest = sign * friendPlayer.Choice.ChoiceBoards[i].Score - player.FreePawns; player.FreePawns = 0; int orientation = -1; Dictionary<int, int> dicSens = new Dictionary<int, int>(); dicSens.Add(-1, 0); dicSens.Add(1, 0); if (i > 0) dicSens[-1] = -1; if (i < 4) dicSens[1] = 1; while (rest > 0) { orientation *= -1; int sens = dicSens[orientation]; if (sens != 0 && sign * Boards[i + sens].PawnsFriendPlayer > 1) { Boards[i + sens].PawnsFriendPlayer -= sign; rest--; } else if (sens != 0) { sens += orientation; dicSens[orientation] = sens; if (i + sens < 0 || i + sens > 4) dicSens[orientation] = 0; } if (dicSens[-1] == 0 && dicSens[1] == 0) break; } } Boards[i].PawnsFriendPlayer += friendPlayer.Choice.ChoiceBoards[i].Score + sign * rest; }
private void EvalScore() { if (turn % 3 == 0) { for (int i = 0; i < Boards.Length; i++) { if (Boards[i].PawnsFriendPlayer > 0) friendPlayer.Score += Boards[i].Scores[(turn - 1) / 3]; else if (Boards[i].PawnsFriendPlayer < 0) oppositePlayer.Score += Boards[i].Scores[(turn - 1) / 3]; } } if (friendPlayer.Score >= 9 && friendPlayer.Score > oppositePlayer.Score) Winner = friendPlayer; if (oppositePlayer.Score >= 9 && oppositePlayer.Score > friendPlayer.Score) Winner = oppositePlayer; }
private void InitCards(ref Player player) { for (int i = 0; i < 10; i++) { player.ListCard.Add(new Card() { CardType = CardType.Value, Value = i + 1, Index = i }); if (i > 5) player.ListIndexAvailableCard.Add(i); } player.ListCard.Add(new Card() { CardType = CardType.MinusValue, Value = -1, Index = 10 }); player.ListCard.Add(new Card() { CardType = CardType.MinusValue, Value = -1, Index = 11 }); player.ListCard.Add(new Card() { CardType = CardType.MinusValue, Value = -1, Index = 12 }); player.ListCard.Add(new Card() { CardType = CardType.PlusValue, Value = 1, Index = 13 }); player.ListCard.Add(new Card() { CardType = CardType.PlusValue, Value = 1, Index = 14 }); player.ListCard.Add(new Card() { CardType = CardType.PlusValue, Value = 1, Index = 15 }); player.ListCard.Add(new Card() { CardType = CardType.PlusValue, Value = 2, Index = 16 }); player.ListCard.Add(new Card() { CardType = CardType.PlusValue, Value = 3, Index = 17 }); player.ListIndexAvailableCard.Add(10); player.ListIndexAvailableCard.Add(11); player.ListIndexAvailableCard.Add(12); player.ListIndexAvailableCard.Add(13); player.ListIndexAvailableCard.Add(14); player.ListIndexAvailableCard.Add(15); player.ListIndexAvailableCard.Add(16); player.ListIndexAvailableCard.Add(17); }
public void Init() { rnd = new Random(); friendPlayer = new Player(this, PlayerType.IA); oppositePlayer = new Player(this, PlayerType.Human); friendPlayer.OtherPlayer = oppositePlayer; oppositePlayer.OtherPlayer = friendPlayer; Choices = new List<Choice[]>(); Boards = new Board[5]; for (int i = 0; i < Boards.Length; i++) { Boards[i] = new Board(); Boards[i].IdBoard = i; Boards[i].Scores = new int[3]; for (int j = 0; j < 3; j++) { Boards[i].Scores[j] = rnd.Next(1, 4); } } //---Test valeur par défaut //Boards[0].Scores[0] = 3; //Boards[1].Scores[0] = 1; //Boards[2].Scores[0] = 3; //Boards[3].Scores[0] = 1; //Boards[4].Scores[0] = 3; //--- InitCards(ref friendPlayer); InitCards(ref oppositePlayer); }