rendered paste body 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; } } } } }