//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); }
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); } }
public Moves(Player _player, Nest _prevtnest, Prison _prison, Checker checker) { this.player = _player; this.prison = _prison; this.prevnest = _prevtnest; this.checker = checker; }
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); }
public Moves(Player _player, Nest _prevtnest, Nest _nextnest, Checker checker) { this.player = _player; this.nextnest = _nextnest; this.prevnest = _prevtnest; this.checker = checker; }
public Moves(Player _player, Nest _prevtnest, Jar _jar, Checker checker) { this.player = _player; this.jar = _jar; this.prevnest = _prevtnest; this.checker = checker; }
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); } } }
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()); }
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(); }
public Nest findNest_ByOpponentNestID(int opponentnestid) { Nest foundNest = null; foreach (Nest n in this.Nests) { if (n.opponentNestID == opponentnestid) { foundNest = n; break; } } return(foundNest); }
public Nest findNest_ByPaleyerNestID(int playernestid) { Nest foundNest = null; foreach (Nest n in this.Nests) { if (n.paleyerNestID == playernestid) { foundNest = n; break; } } return(foundNest); }
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); }
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); }
//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); }
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); } } } }
//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; }
// 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); } } } } } }
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); } } }
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; }
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; }