Exemple #1
0
        //player-i siht-NEST-ide  leidmine
        public List <Nest> findTargetNests(Player player, int step, List <Nest> playerCurrentNests)
        {
            int         targetNestID = 0;
            Nest        targetNest   = null;
            List <Nest> targetNests  = new List <Nest>(24);

            foreach (Nest currentNest in playerCurrentNests)
            {
                if (!player.isOpponent)
                {
                    targetNestID = currentNest.paleyerNestID + step;
                    targetNest   = this.gameBoard.findNest_ByPaleyerNestID(targetNestID);
                }
                else
                {
                    targetNestID = currentNest.opponentNestID + step;
                    targetNest   = this.gameBoard.findNest_ByOpponentNestID(targetNestID);
                }

                if (targetNestContainsNOopponentsChecker(targetNest, player) || targetNestContainsONEopponentsChecker(targetNest, player))
                {
                    targetNests.Add(targetNest);
                }
            }

            return(targetNests);
        }
Exemple #2
0
        public void checkers_addTo_removeFrom_Home(Nest currentNest, Checker checker, List<Nest> nestList)
        {
            Boolean checkerInHomeArea = false;
            if (this.isOpponent == false)
            {
                if (currentNest.opponentNestID < 7)
                {
                    checkerInHomeArea = true;
                }
            }
            else
            {
                if (currentNest.paleyerNestID < 7)
                {
                    checkerInHomeArea = true;
                }
            }

            if (checkerInHomeArea)
            {
                if (!this.checkersInHome.Contains(checker))
                    this.checkersInHome.Add(checker);
            }
            else
            {
                if (this.checkersInHome.Contains(checker))
                    this.checkersInHome.Remove(checker);
            }
        }
Exemple #3
0
 public Moves(Player _player, Nest _prevtnest, Prison _prison, Checker checker)
 {
     this.player = _player;
     this.prison = _prison;
     this.prevnest = _prevtnest;
     this.checker = checker;
 }
Exemple #4
0
        public List <Nest> addNests(String nestTexture_all, String nestTexture_ylal, Color color1, Color color2)
        {
            //upper nests
            int counter = 0;

            for (int i = 0; i < 12; i++)
            {
                Nest pesa = new Nest(counter, i, this.leftOffset, middleGap, color1, color2, nestTexture_all, this.topOffset_upper);
                this.Nests.Add(pesa);
                counter++;
            }
            //start from right upper corner
            this.Nests.Reverse();
            //lower nests
            counter++;
            for (int i = 0; i < 12; i++)
            {
                Nest pesa = new Nest(counter, i, this.leftOffset, middleGap, color1, color2, nestTexture_ylal, this.topOffset_lower);
                this.Nests.Add(pesa);
                counter++;
            }

            int nestCounterPlayer   = 1;
            int nestCounterOpponent = 24;

            foreach (Nest n in this.Nests)
            {
                n.paleyerNestID  = nestCounterPlayer;
                n.opponentNestID = nestCounterOpponent;
                nestCounterPlayer++;
                nestCounterOpponent--;
            }

            return(this.Nests);
        }
Exemple #5
0
 public Moves(Player _player, Nest _prevtnest, Nest _nextnest, Checker checker)
 {
     this.player = _player;
     this.nextnest = _nextnest;
     this.prevnest = _prevtnest;
     this.checker = checker;
 }
Exemple #6
0
 public Moves(Player _player, Nest _prevtnest, Jar _jar, Checker checker)
 {
     this.player = _player;
     this.jar = _jar;
     this.prevnest = _prevtnest;
     this.checker = checker;
 }
Exemple #7
0
 public Moves(Player _player, Nest _prevtnest, Prison _prison, Checker checker)
 {
     this.player   = _player;
     this.prison   = _prison;
     this.prevnest = _prevtnest;
     this.checker  = checker;
 }
Exemple #8
0
 public Moves(Player _player, Nest _prevtnest, Jar _jar, Checker checker)
 {
     this.player   = _player;
     this.jar      = _jar;
     this.prevnest = _prevtnest;
     this.checker  = checker;
 }
Exemple #9
0
 public Moves(Player _player, Nest _prevtnest, Nest _nextnest, Checker checker)
 {
     this.player   = _player;
     this.nextnest = _nextnest;
     this.prevnest = _prevtnest;
     this.checker  = checker;
 }
Exemple #10
0
        public void checkers_addTo_removeFrom_Home(Nest currentNest, Checker checker, List <Nest> nestList)
        {
            Boolean checkerInHomeArea = false;

            if (this.isOpponent == false)
            {
                if (currentNest.opponentNestID < 7)
                {
                    checkerInHomeArea = true;
                }
            }
            else
            {
                if (currentNest.paleyerNestID < 7)
                {
                    checkerInHomeArea = true;
                }
            }

            if (checkerInHomeArea)
            {
                if (!this.checkersInHome.Contains(checker))
                {
                    this.checkersInHome.Add(checker);
                }
            }
            else
            {
                if (this.checkersInHome.Contains(checker))
                {
                    this.checkersInHome.Remove(checker);
                }
            }
        }
Exemple #11
0
 public int addChecker(Checker checker, Nest cameFromNest)
 {
     if (checker != null && cameFromNest != null)
     {
         cameFromNest.removeChecker(checker);
         this.checkers.Add(checker);
         int numCheckers = this.numberOfCheckers();
         int ch_Ypos     = (int)this.center.Y + numCheckers * checker.width;
         checker.location = new Vector2(this.center.X, ch_Ypos);
     }
     return(this.numberOfCheckers());
 }
Exemple #12
0
 public int addChecker(Checker checker, Nest cameFromNest)
 {
     if (checker != null && cameFromNest != null)
     {
         cameFromNest.removeChecker(checker);
         this.checkers.Add(checker);
         int numCheckers = this.numberOfCheckers();
         int ch_Ypos = (int)this.center.Y + numCheckers*checker.width;
         checker.location = new Vector2(this.center.X, ch_Ypos);
     }
     return this.numberOfCheckers();
 }
Exemple #13
0
        public Nest findNest_ByOpponentNestID(int opponentnestid)
        {
            Nest foundNest = null;

            foreach (Nest n in this.Nests)
            {
                if (n.opponentNestID == opponentnestid)
                {
                    foundNest = n;
                    break;
                }
            }
            return(foundNest);
        }
Exemple #14
0
        public Nest findNest_ByPaleyerNestID(int playernestid)
        {
            Nest foundNest = null;

            foreach (Nest n in this.Nests)
            {
                if (n.paleyerNestID == playernestid)
                {
                    foundNest = n;
                    break;
                }
            }
            return(foundNest);
        }
Exemple #15
0
        private Nest findTargetNest(Nest clickedNest, Player player, int steps)
        {
            int clickedNest_playerid_plusStep = 0;

            if (player.isOpponent == false)
            {
                clickedNest_playerid_plusStep = clickedNest.paleyerNestID + steps;
            }
            else
            {
                clickedNest_playerid_plusStep = clickedNest.paleyerNestID - steps;
            }

            Nest nextNest = gameBoard.findNest_ByPaleyerNestID(clickedNest_playerid_plusStep);

            return(nextNest);
        }
Exemple #16
0
        public Nest findNest_ByLocation(Vector2 mouseLocation)
        {
            Nest foundNest = null;

            foreach (Nest n in this.Nests)
            {
                int nest_Y_loc_max = n.y_location + n.height;

                if (mouseLocation.X >= n.leftCorner && mouseLocation.X <= n.rightCorner)
                {
                    if (mouseLocation.Y >= n.y_location && mouseLocation.Y <= nest_Y_loc_max)
                    {
                        foundNest = n;
                        break;
                    }
                }
            }
            return(foundNest);
        }
Exemple #17
0
        //ONE OPPONENT'S
        public Boolean targetNestContainsONEopponentsChecker(Nest targetNest, Player player)
        {
            int numberOfOpponentCheckerInTargetNest = 0;

            if (targetNest != null)
            {
                if (targetNest.Checkers.Count > 0)
                {
                    foreach (Checker ch in targetNest.Checkers)
                    {
                        if (!player.checkers.Contains(ch))//kui sisalduvad nupud ei ole player-i omad
                        {
                            numberOfOpponentCheckerInTargetNest++;
                        }
                    }
                }
            }

            return(numberOfOpponentCheckerInTargetNest == 1);
        }
Exemple #18
0
        private void moveCheckerIntoFreeNest(Nest clickedNest, Checker remCh, Player player, Nest nextNest)
        {
            if (player.checkers.Contains(remCh))
            {
                if (clickedNest != null)
                {
                    clickedNest.Checkers.Remove(remCh);
                }


                if (targetNestContainsMoreThanOneOpponentsChecker(nextNest, player))
                {
                    return;
                }
                else if (targetNestContainsNOopponentsChecker(nextNest, player))
                {
                    nextNest.addChecker(remCh);
                    if (clickedNest != null)
                    {
                        player.checkers_addTo_removeFrom_Home(clickedNest, remCh, gameBoard.Nests);
                    }
                }
            }
        }
Exemple #19
0
        //ONE OPPONENT'S
        public Boolean targetNestContainsONEopponentsChecker(Nest targetNest, Player player)
        {
            int numberOfOpponentCheckerInTargetNest = 0;
            if (targetNest != null)
            if (targetNest.Checkers.Count > 0)
            {
                foreach (Checker ch in targetNest.Checkers)
                {
                    if (!player.checkers.Contains(ch))//kui sisalduvad nupud ei ole player-i omad
                    {
                        numberOfOpponentCheckerInTargetNest++;
                    }
                }
            }

            return numberOfOpponentCheckerInTargetNest == 1;
        }
Exemple #20
0
        // PÕHILINE MEETOD, MIS JUHIB NUPPUDE LIIKUMIST
        private void moveCheckers(Player player, int steps, int mouse_x, int mouse_y, List <Nest> nests, Dice dice)
        {
            Prison prison = this.gameBoard.prison;

            if (steps == 0 && dice.rolledValues.Count > 0)
            {
                steps = dice.rolledValues.Max();
            }

            //kui nupp on vangis
            Boolean        nuppOnVangis           = false;
            List <Checker> playerCheckersInPrison = new List <Checker>(15);

            foreach (Checker ch in player.checkers)
            {
                foreach (Checker chInPrison in prison.checkers)
                {
                    if (ch == chInPrison)
                    {
                        playerCheckersInPrison.Add(ch);
                        nuppOnVangis = true;
                    }
                }
            }


            //FIND CLICKED NEST OR PRISON
            Nest        clickedNest    = null;
            List <Nest> availableNests = findTargetNestsInOpponentsHome(player, steps);

            if (nuppOnVangis && availableNests.Count == 0)
            {
                //mängija jääb vahele
                player.currentMoves = 2;
                dice.isDouble       = false;
                return;
            }

            if (!nuppOnVangis)
            {
                foreach (Nest n in nests)
                {
                    int max_y = n.height + n.y_location;
                    if (mouse_x > n.leftCorner && mouse_x < n.rightCorner && mouse_y > n.y_location && mouse_y < max_y)
                    {
                        clickedNest = n;
                        break;
                    }
                }
            }
            else
            {
                if (mouse_x > prison.prison_x && mouse_x < prison.rightEdge && mouse_y > prison.prison_y && mouse_y < prison.bottomEdge)
                {
                    if (nuppOnVangis && availableNests.Count == 0)
                    {
                        //mängija jääb vahele
                        player.currentMoves = 2;
                        dice.isDouble       = false;
                        return;
                    }
                    if (playerCheckersInPrison.Count > 0)
                    {
                        Checker checkerInPrison = playerCheckersInPrison[0];
                        Nest    nestToMoveTo    = null;
                        foreach (Nest n in availableNests)
                        {
                            if (player.isOpponent && n.opponentNestID == steps)
                            {
                                nestToMoveTo = n;
                            }
                            else if (!player.isOpponent && n.paleyerNestID == steps)
                            {
                                nestToMoveTo = n; //moveCheckerIntoFreeNest(null, checkerInPrison, player, n);
                            }
                        }

                        if (nestToMoveTo != null && checkerInPrison != null)
                        {
                            if (dice.rolledValues.Count > 0)
                            {
                                if (targetNestContainsNOopponentsChecker(nestToMoveTo, player))
                                {
                                    moveCheckerIntoFreeNest(clickedNest, checkerInPrison, player, nestToMoveTo);
                                    prison.checkers.Remove(checkerInPrison);
                                }
                                else if (targetNestContainsONEopponentsChecker(nestToMoveTo, player))
                                {
                                    Checker opponentsOneChecker = nestToMoveTo.Checkers[0];
                                    nestToMoveTo.Checkers.Remove(opponentsOneChecker);
                                    moveCheckerIntoFreeNest(null, checkerInPrison, player, nestToMoveTo);
                                    prison.checkers.Remove(checkerInPrison);
                                    prison.addChecker(opponentsOneChecker, nestToMoveTo);
                                }

                                playerCheckersInPrison.Remove(checkerInPrison);
                                /////////////////////
                                //kasutatud täringuväärtus nullida:
                                if (player.checkers.Contains(checkerInPrison))
                                {
                                    for (int i = 0; i < dice.rolledValues.Count; i++)
                                    {
                                        if (dice.rolledValues[i] == steps)
                                        {
                                            dice.rolledValues[i] = 0;
                                            break;
                                        }
                                    }

                                    //lisa playerile käikudelogisse
                                    player.currentMoves++;
                                    Moves playerMove = new Moves(player, null, nestToMoveTo, checkerInPrison);
                                    player.moves.Add(playerMove);
                                }
                            }
                        }
                    }
                }
            }



            //FIND NESTs, WHERE PLAYER HAS checkers currently
            List <Nest> palyerHasCheckersInNests = findPlayerCurrentNests(gameBoard, player);
            //find all available target nests
            List <Nest> targetNests = findTargetNests(player, steps, palyerHasCheckersInNests);

            //kas on vabu Nest-e, kuhu käia
            //is there any available target Nests for the player
            if (targetNests.Count == 0)
            {
                //mängija jääb vahele
                player.currentMoves = 2;
                dice.isDouble       = false;
                return;
            }



            //MANAGE OTHER STATES
            // player has some free Nests where to go and defenitely goes somewhere
            if (clickedNest != null)
            {
                int countCheckersInCurrentNest = clickedNest.Checkers.Count;
                //kui klikitud nest ei olnud tühi
                if (countCheckersInCurrentNest > 0)
                {
                    if (dice.rolledValues.Count > 0)
                    {
                        Checker remCh    = clickedNest.Checkers[countCheckersInCurrentNest - 1];
                        Nest    nextNest = findTargetNest(clickedNest, player, steps);


                        /**/
                        //kui Player-i kõik nupud on tema kodus
                        if (player.allCheckersAreInHomeArea() == true)
                        {
                            int         maxNestPositionForChecker = 0;
                            List <Nest> filledHomeNests           = new List <Nest>(6);
                            Nest        maxNest = null;
                            Checker     movable = null;

                            foreach (Nest n in gameBoard.Nests)
                            {
                                foreach (Checker ch_in_homeNest in player.checkersInHome)
                                {
                                    if (n.Checkers.Contains(ch_in_homeNest))
                                    {
                                        filledHomeNests.Add(n);
                                    }
                                }
                            }

                            foreach (Nest n in filledHomeNests)
                            {
                                if (!player.isOpponent && n.paleyerNestID > maxNestPositionForChecker)
                                {
                                    maxNestPositionForChecker = n.paleyerNestID;
                                    maxNest = n;
                                }
                                else if (player.isOpponent && n.opponentNestID > maxNestPositionForChecker)
                                {
                                    maxNestPositionForChecker = n.opponentNestID;
                                    maxNest = n;
                                }
                            }

                            int new_stepMax = dice.rolledValues.Max();
                            if (maxNestPositionForChecker <= new_stepMax)
                            {
                                movable = maxNest.Checkers[0];
                                player.jar.addChecker(maxNest.Checkers[0]);
                                for (int i = 0; i < dice.rolledValues.Count; i++)
                                {
                                    if (dice.rolledValues[i] == new_stepMax)
                                    {
                                        dice.rolledValues[i] = 0;
                                        break;
                                    }
                                }
                                //lisa playerile käikudelogisse
                                player.currentMoves++;
                                if (movable != null)
                                {
                                    Moves playerMove = new Moves(player, clickedNest, player.jar, movable);
                                    player.moves.Add(playerMove);
                                }
                                return;
                            }
                        }
                        /* */
                        //kui target pole null!!
                        if (nextNest != null)
                        {
                            if (targetNestContainsNOopponentsChecker(nextNest, player))
                            {
                                moveCheckerIntoFreeNest(clickedNest, remCh, player, nextNest);
                            }
                            else if (targetNestContainsONEopponentsChecker(nextNest, player))
                            {
                                Checker opponentsOneChecker = nextNest.Checkers[0];
                                nextNest.Checkers.Remove(opponentsOneChecker);
                                moveCheckerIntoFreeNest(clickedNest, remCh, player, nextNest);
                                gameBoard.prison.addChecker(opponentsOneChecker, nextNest);
                            }


                            /////////////////////
                            //kasutatud täringuväärtus nullida:
                            if (player.checkers.Contains(remCh) && targetNests.Contains(nextNest))
                            {
                                for (int i = 0; i < dice.rolledValues.Count; i++)
                                {
                                    if (dice.rolledValues[i] == steps)
                                    {
                                        dice.rolledValues[i] = 0;
                                        break;
                                    }
                                }

                                //lisa playerile käikudelogisse
                                player.currentMoves++;
                                Moves playerMove = new Moves(player, clickedNest, nextNest, remCh);
                                player.moves.Add(playerMove);
                            }
                        }
                    }
                }
            }
        }
Exemple #21
0
        private void moveCheckerIntoFreeNest(Nest clickedNest, Checker remCh, Player player, Nest nextNest)
        {
            if (player.checkers.Contains(remCh))
            {
                if(clickedNest != null)
                    clickedNest.Checkers.Remove(remCh);

                if (targetNestContainsMoreThanOneOpponentsChecker(nextNest, player))
                {
                    return;
                }
                else if (targetNestContainsNOopponentsChecker(nextNest, player))
                {
                    nextNest.addChecker(remCh);
                    if (clickedNest != null)
                        player.checkers_addTo_removeFrom_Home(clickedNest, remCh, gameBoard.Nests);
                }

            }
        }
Exemple #22
0
        public List<Nest> addNests(String nestTexture_all, String nestTexture_ylal, Color color1, Color color2)
        {
            //upper nests
            int counter = 0;
            for (int i = 0; i < 12; i++)
            {
                Nest pesa = new Nest(counter, i, this.leftOffset, middleGap, color1, color2, nestTexture_all, this.topOffset_upper);
                this.Nests.Add(pesa);
                counter++;
            }
            //start from right upper corner
            this.Nests.Reverse();
            //lower nests
            counter++;
            for (int i = 0; i < 12; i++)
            {
                Nest pesa = new Nest(counter, i, this.leftOffset, middleGap, color1, color2, nestTexture_ylal, this.topOffset_lower);
                this.Nests.Add(pesa);
                counter++;
            }

            int nestCounterPlayer = 1;
            int nestCounterOpponent = 24;
            foreach (Nest n in this.Nests)
            {
                n.paleyerNestID = nestCounterPlayer;
                n.opponentNestID = nestCounterOpponent;
                nestCounterPlayer++;
                nestCounterOpponent--;
            }

            return this.Nests;
        }
Exemple #23
0
        private Nest findTargetNest(Nest clickedNest, Player player, int steps)
        {
            int clickedNest_playerid_plusStep = 0;
            if (player.isOpponent == false)
                clickedNest_playerid_plusStep = clickedNest.paleyerNestID + steps;
            else
                clickedNest_playerid_plusStep = clickedNest.paleyerNestID - steps;

            Nest nextNest = gameBoard.findNest_ByPaleyerNestID(clickedNest_playerid_plusStep);
            return nextNest;
        }