game_t game; game.board = board; game.chance = chanceDeck; game.chest = chestDeck; game.numPlayers = atoi(argv[4]); game.rounds = atoi(argv[5]); if (yesNo == y) { game.detailedOutput = true; } else { game.detailedOutput = false; } for (int playerNumber = 0; (playerNumber < game.numPlayers); playerNumber++) { game.players[playerNumber].location = board.goSquare; game.players[playerNumber].throws = 0; game.players[playerNumber].inJail = false; } int dice1, dice2; int currentRound = 1; bool playerDone, jailTurn = false; for (int roundsLeft = game.rounds; (roundsLeft > 0); roundsLeft--) { playerDone = false; if (game.detailedOutput) { cout << "Round " << currentRound << endl; currentRound++; } for (int playerNumber = 0; (playerNumber < game.numPlayers); playerNumber++) { playerDone = false; while ( playerDone == false ) { dice1 = 3; //roll_die(); dice2 = 3; //roll_die(); if (dice1 != dice2) { game.players[playerNumber].throws = 0; } if (game.players[playerNumber].inJail == true) { if (game.players[playerNumber].throws < 2) { if (dice1 != dice2) { game.players[playerNumber].throws++; playerDone = true;} else { game.players[playerNumber].throws = 0; game.players[playerNumber].inJail = false; jailTurn = true; playerDone = false;} } else { if (dice1 == dice2) { game.players[playerNumber].inJail = false; game.players[playerNumber].throws = 0; playerDone = false; } else { game.players[playerNumber].throws = 0; game.players[playerNumber].inJail = false; playerDone = false; } } } if (playerDone == false) { if (game.players[playerNumber].location + dice1 + dice2 > (board.numSquares - 1) ) { game.players[playerNumber].location = (game.players[playerNumber].location + dice1 + dice2) - board.numSquares; playerDone = true; } else { game.players[playerNumber].location += dice1 + dice2; playerDone = true; } } if ( (dice1 == dice2) && (game.players[playerNumber].inJail == false) && (jailTurn == false) ) { game.players[playerNumber].throws++; if (game.players[playerNumber].throws == 3) { game.players[playerNumber].throws = 0; game.players[playerNumber].location = board.jailSquare; game.players[playerNumber].inJail = true; playerDone = true; } else { playerDone = false; } } if ( (dice1 == dice2) && (game.players[playerNumber].inJail == false) && (jailTurn == true) ) { jailTurn = false; } if (board.squares[game.players[playerNumber].location].kind == S_TOJAIL) { game.players[playerNumber].location = board.jailSquare; game.players[playerNumber].inJail = true; game.players[playerNumber].throws = 0; playerDone = true; } if (game.detailedOutput) { if ( (game.players[playerNumber].inJail == true) && (playerDone == true) && (game.players[playerNumber].throws == 0) ) { cout << "Player " << (playerNumber + 1) << " rolls [" << dice1 << " " << dice2 << "]\n" << "Player " << (playerNumber + 1) << " is in Jail\n"; } else if ( (game.players[playerNumber].inJail == true) && (playerDone == true) && (game.players[playerNumber].throws < 3) ) { cout << "Player " << (playerNumber + 1) << " rolls [" << dice1 << " " << dice2 << "]\n" << "Player " << (playerNumber + 1) << " remains in Jail\n"; } else { cout << "Player " << (playerNumber + 1) << " rolls [" << dice1 << " " << dice2 << "]\n" << "Player " << (playerNumber + 1) << " lands on " << board.squares[game.players[playerNumber].location].name << endl; } } } } }