//Check secondary objectives - end game public void checkEndGameSecondaryObjectives(ResistilePlayer player) { var objectives = player.secondaryObjective; foreach (var objective in objectives) { switch (objective) { case 1: player.secondaryObjectiveChecks[1] = checkEasyStreet(); break; case 2: player.secondaryObjectiveChecks[2] = checkLongestRoad(); break; case 4: player.secondaryObjectiveChecks[4] = checkCleanHouse(); break; case 5: player.secondaryObjectiveChecks[5] = checkAllTheConnections(); break; } } }
public GameTile drawResistorSolder(ResistilePlayer player) { var resistorSolder = deck.drawResistorSolder(); player.hand.Add(resistorSolder); return(resistorSolder); }
public bool AddTileWithSolder(ResistilePlayer player, GameTile tile, GameTile solder, int[] coords) { checkItsFutile(player, tile, coords); player.hand.Remove(solder); AddTile(player, tile, coords); return(false); }
public void calculateWhoWon(ResistilePlayer player, ResistilePlayer opponent) { int playerScore = (player.primaryAchieved ? 1 : 0) + (player.guessAchieved ? 1 : 0) + player.getSecondaryObjectiveResults().Count(e => e); int opponentScore = (opponent.primaryAchieved ? 1 : 0) + (opponent.guessAchieved ? 1 : 0) + opponent.getSecondaryObjectiveResults().Count(e => e); player.won = playerScore > opponentScore; opponent.won = !player.won; }
//Check secondary objectives - end turn //private void checkEndTurnSecondaryObjectives(GameTile tile, int[] coords) //{ //} //3 IT'S FUTILE: Solder out a piece (resistor or wire) and replace it with an identical piece. private void checkItsFutile(ResistilePlayer player, GameTile tile, int[] coords) { if (player.secondaryObjectiveChecks[3] == false) { var tileToBeChecked = board.board[coords[0], coords[1]]; bool check = tileToBeChecked.type == tile.type && tileToBeChecked.rotation == tile.rotation && (Math.Abs(tileToBeChecked.resistance - tile.resistance) < 0.01); player.secondaryObjectiveChecks[3] = check; // once its true, its always true. } }
public bool AddTile(ResistilePlayer player, GameTile tile, int[] coords) { board.AddTile(tile, coords); if (tile.type.Contains("Wire")) { wireHand.Remove(tile); } else if (tile.type.Contains("Resistor")) { player.hand.Remove(tile); } return(board.isGameOver); }
public GameManager(string playerOneUsername, string playerTwoUsername) { /* * Initialize Board */ board = new BoardManager(); /* * Initialize Deck */ deck = new DeckManager(); /* * Initialize playerOne */ ArrayList tempHand = new ArrayList(); for (int i = 0; i < MAXHAND; i++) { tempHand.Add(deck.drawResistorSolder()); } var p1SecObj = CreateSecondaryObj(); //var p1SecObj = new[] {1, 2}; //to set objectives manually for testing playerOne = new ResistilePlayer(playerOneUsername, tempHand, GetRandomPrimary(primaryMIN, primaryMAX), p1SecObj); /* * Initialize playerTwo */ tempHand = new ArrayList(); for (int i = 0; i < MAXHAND; i++) { tempHand.Add(deck.drawResistorSolder()); } var p2SecObj = CreateSecondaryObj(); //var p2SecObj = new[] {3, 5}; playerTwo = new ResistilePlayer(playerTwoUsername, tempHand, GetRandomPrimary(primaryMIN, primaryMAX), p2SecObj); currentTurnPlayer = random.Next(0, 2) == 1 ? playerOne : playerTwo; for (int i = 0; i < MAXHAND; i++) { wireHand.Add(deck.drawWire()); } }
private void writeClientOnValidMove(bool isGameOver, bool isSolder, GameTile tile, int rotation, int[] coords, ResistilePlayer player, ResistilePlayer opponent, GameTile solder) { //Sent opponent placed tile data var opponentHandle = handleClients.Find(handle => handle.clName == opponent.userName); var oppMsg1 = new ResistileMessage(gameID, ResistileMessageTypes.tilePlaced); oppMsg1.tileID = tile.id; oppMsg1.turn = true; oppMsg1.rotation = rotation; oppMsg1.coordinates = new ArrayList(coords); opponentHandle.writeClient(oppMsg1); writeClient(gameID, ResistileMessageTypes.validMove, ""); if (isGameOver) { writeClient(gameID, ResistileMessageTypes.gameOver); opponentHandle.writeClient(gameID, ResistileMessageTypes.gameOver); gameManager.checkEndGameSecondaryObjectives(player); gameManager.checkEndGameSecondaryObjectives(opponent); gameManager.calculateResistance(); gameManager.checkEndGamePrimaryObjective(player, opponent); } else { Thread.Sleep(100); //Sent player new tile data var messageToBeSent = new ResistileMessage(gameID, ResistileMessageTypes.drawTile); var card = gameManager.draw(tile, player); messageToBeSent.turn = false; messageToBeSent.tileID = card.id; writeClient(messageToBeSent); Thread.Sleep(100); if (card.type.Contains("Wire")) { var oppMsg2 = new ResistileMessage(gameID, ResistileMessageTypes.drawTile); oppMsg2.turn = true; oppMsg2.tileID = card.id; opponentHandle.writeClient(oppMsg2); } if (isSolder) { var messageToBeSent2 = new ResistileMessage(gameID, ResistileMessageTypes.drawTile); var cardID2 = gameManager.draw(solder, player); messageToBeSent2.tileID = cardID2.id; messageToBeSent2.turn = false; writeClient(messageToBeSent2); } } }
public void checkGuessAchieved(ResistilePlayer player) { player.guessAchieved = Math.Abs(resistance - player.guess) < 0.2; }
public void checkEndGamePrimaryObjective(ResistilePlayer player, ResistilePlayer opponent) { player.primaryAchieved = Math.Abs(resistance - player.primaryObjective) < Math.Abs(resistance - opponent.primaryObjective); opponent.primaryAchieved = !player.primaryAchieved; }
public GameTile draw(GameTile tile, ResistilePlayer player) { return(tile.type.Contains("Wire") ? drawWire() : drawResistorSolder(player)); }