This second assignment will build upon our knowledge of poin
Solution
#include <iostream>
#include <stdlib.h>
#include <ctime>
using namespace std;
#define RACE_LENGTH 50
void advanceRacerA(int *ptrRacerA);
void advanceRacerB(int *ptrRacerB);
void printPosition(int *ptrRacerA, int *ptrRacerB);
int main()
{
// define racer\'s initial positions
int racerA=0, racerB=0;
cout << \"Welcome to Ryan\'s spartan Race!\";
cout << \"READY...SET...GO!\";
while(true) {
advanceRacerA(&racerA);
advanceRacerB(&racerB);
printPosition(&racerA, &racerB);
// if both fall at same spot, A looses
if(racerA == racerB){
racerA -= 1;
}
if((racerA == RACE_LENGTH) || (racerB == RACE_LENGTH)) {
// race is over. One has won.
if(racerB == RACE_LENGTH) {
cout << \"\ Your friend has won the race - I must train harder!\ \";
} else {
cout << \"\ Yipppppie! I won!\ \";
}
break;
}
}
return 0;
}
void advanceRacerA(int *ptrRacerA) {
// get a random number between 1-10
int moveement = rand() % 10 + 1;
int initialPosition = *ptrRacerA;
if(moveement <=3) {
// Run
*ptrRacerA = initialPosition + 4;
} else if(moveement <=4) {
// Sprint
*ptrRacerA = initialPosition + 5;
} else if(moveement <=7) {
// Fall in mud
*ptrRacerA = initialPosition - 2;
} else if(moveement <=9) {
// Fall off rope
*ptrRacerA = initialPosition - 3;
} else if(moveement <=10) {
// Fall off monkey bars
*ptrRacerA = initialPosition - 4;
}
// iF racer has moved to start position by shifting left
if(*ptrRacerA < 0) {
*ptrRacerA = 0;
} else if(*ptrRacerA > RACE_LENGTH) {
*ptrRacerA = RACE_LENGTH;
}
}
void advanceRacerB(int *ptrRacerB) {
// get a random number between 1-10
int moveement = rand() % 10 + 1;
int initialPosition = *ptrRacerB;
if(moveement <=4) {
// Run
*ptrRacerB = initialPosition + 5;
} else if(moveement <=5) {
// Sprint
*ptrRacerB = initialPosition + 6;
} else if(moveement <=7) {
// Fall in mud
*ptrRacerB = initialPosition - 1;
} else if(moveement <=9) {
// Fall off rope
*ptrRacerB = initialPosition - 2;
} else if(moveement <=10) {
// Fall off monkey bars
*ptrRacerB = initialPosition - 4;
}
// iF racer has moved to start position by shifting left
if(*ptrRacerB < 0) {
*ptrRacerB = 0;
} else if(*ptrRacerB > RACE_LENGTH) {
*ptrRacerB = RACE_LENGTH;
}
}
void printPosition(int *ptrRacerA, int *ptrRacerB) {
int i=0;
cout << \"\ \";
for(i; i<= RACE_LENGTH; i++) {
if(*ptrRacerA == i) {
cout << \"A\";
} else {
cout << \" \";
}
if(*ptrRacerB == i) {
cout << \"B\";
} else {
cout << \" \";
}
}
cout << \"|\";
}


