Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }