/******************************************************************************* move ******************************************************************************* * purpose: To move Player around the board * input: * p1loc-> takes in the players location on the board * p1-> to move computer around the board c1 times * p1bal-> if passed go add $200 * pmove[]->sets new location for computer * output: * p1bal->if passed go collect $200 * p1loc->if passed go starts at the beginning */ int move(Human &h,int pmove[]){ //Used to make sure the board is set to 0 for(int i=0;i<SIZE;i++){ pmove[i]=0; } for(int i=0;i<=h.getroll();i++){ if(h.getloc()>39){ h.setloc(h.getloc()-39); cout<<"You passed 'Go' please collect $200\n"; h.setmoney(h.getMoney()+200); }else{ pmove[h.getloc()]=1; } } }
//Execution Begins here int main(int argc, char** argv) { //Set the random number seed and size the array srand(static_cast<unsigned int>(time(0))); //Declare Variables Human h; // int p1=0;//player dice ===== is now roll // int p1bal=1500;//player bank account === is now bal // int p1loc=0;//player location on the board ==== is now loc int c1=0; //The computer's dice int c1bal=1500;//The computer's bank account int c1loc=0;//computer's location on the board bool who=true;//used to see who's turn it is bool prison=true;//If the player is in jail bool cprison=true;//If the computer is in jail bool game=true;//to continue the game until there is a winner char check;//is the player would like to buy int play=0;//play the game or see rules int buyans;//If the user would like to buy the property int turn=1; //Turns if the player or computer land on jail House *board=new House[SIZE];//dynamic array to hold the name, buy and rent of the property string property[SIZE]={"Go","Mediterranean Avenue","Community Chest","Baltic Avenue"," Income Tax","Reading Railroad", "Oriental Avenue","Chance","Vermont Avenue","Connecticut Avenue","In Jail or Just visiting","St. Charles Place", "Electric Company","States Avenue"," Virginia Avenue","Pennsylvania RailRoad","St. James Place", "Community Chest","Tennessee Avenue"," New York Avenue","Free Parking","Kentucky Avenue","Chance", "Indiana Avenue","Illinois Avenue"," B. & O. Railroad","Atlantic Avenue","Ventnor Avenue", "Water Works","Marvin Gardens","Go to Jail","Pacific Avenue","North Carolina Avenue", "Community Chest","Pennsylvania Avenue","Short Line","Chance","Park Place","Luxury Tax","BoardWalk"}; int buy[SIZE]={0,60,0,60,0,200,100,0,100,120,0,140,150,140,160,200,180,0,180, 200,0,220,0,220,240,200,260,260,150,280,0,300,300,0,320,200,0,350,0,400}; int rent[SIZE]={0,20,0,40,0,25,60,0,60,80,0,100,75,100,120,250,140,0,140,160, 0,180,0,180,200,250,220,220,75,240,0,260,260,0,280,250,0,350,0,500}; for(int i=0;i<SIZE;i++){ board[i].setName(property[i]); board[i].setBuy(buy[i]); board[i].setRent(rent[i]); } bool avail[SIZE];//if the house is owned or available //sets the whole board to true available to buy for(int i=0;i<SIZE;i++){ avail[i]=true; //Sets the chance,go,income tax, et. to not able to buy if (i==0 || i==2 || i==4 || i==7 ||i==10 || i==17 || i==20 || i==22 || i==30 || i==33 || i==36 || i==38){ avail[i]=false; } } int pmove[SIZE];//is the player's board int cmove[SIZE];//the computers board vector <int> p1prop; vector <int> c1prop; //sets the whole array to 0 for(int i=0;i<SIZE;i++){ pmove[i]=0; cmove[i]=0; } do{ do{ cout<<"Welcome to the Monopoly game!!!\n"; cout<<"Each player starts off with $1500\n"; cout<<"1. To play the game\n2. To see the rules\n"; cin>>play; if(play<1 || play>2){ cout<<"ERROR: Invalid Input\n"; } }while(play<1 || play>2); switch(play){ case 1:{ do{ if(game!=false){ if(cprison==false){ turn=2; cprison=true; }else{ turn=1; } for(int i=1;i<=turn;i++){ who=true; h.setroll(roll(6,2)); cout<<"Player 1 you rolled your dice and got "<<h.getroll()<<endl; cout<<"Move forward "<<h.getroll()<<" spaces."<<endl; pmove[h.getloc()]=0; h.setloc(h.getloc()+h.getroll()); move(h,pmove); cout<<"You landed on "<<property[h.getloc()]<<endl; if(h.getloc()==4 || h.getloc()==38){ pay(h,c1bal,c1loc,who); } if(h.getloc()==7 || h.getloc()==22 || h.getloc()==36){ chance(h,pmove,c1loc,cmove,c1,c1bal,prison,cprison,who); } if(h.getloc()==2 || h.getloc()==17 || h.getloc()==33){ chest(h,pmove,c1loc,cmove,c1,c1bal,prison,cprison,who); } if(h.getloc()==30){ prison=false; jail(h,pmove,c1loc,cmove,c1,who); } cout<<"Your balance is $"<<h.getMoney()<<endl; //Output the board display(pmove,cmove); //Used to check if player lands on a computer owned location for(int i=0;i<c1prop.size();i++){ if(h.getloc()==c1prop[i]){ h.setmoney(h.getMoney()-rent[h.getloc()]); c1bal+=rent[h.getloc()]; cout<<"Computer owns "<<property[h.getloc()]<<" you owe $"<<rent[h.getloc()]<<" for rent\n"; } } //To determine the winner win(h,c1bal,game); if(game==false){ break; } do{ do{ cout<<"1. Buy Property\n2. See your property\n3. End turn\n"; cin>>buyans; if(buyans<1 || buyans>3){ cout<<"Invalid Input\n"; } }while(buyans<1 || buyans>3); switch(buyans){ case 1:{ if(avail[h.getloc()]==false){ cout<<"You cannot buy this property\n"; }else if(avail[h.getloc()]==true){ cout<<"You can buy this property\n"; board[h.getloc()].print(); do{ cout<<"Press 'Y' if you want to buy this property,or 'N' if you do not\n"; cin>>check; if(check!='Y' && check!='y' && check!='N' && check!='n'){ cout<<"Invalid Input\n"; } }while(check!='Y' && check!='y' && check!='N' && check!='n'); if(check=='Y' || check=='y'){ if(h.getMoney()<buy[h.getloc()]){ cout<<"You can not afford this property\n"; }else if(h.getMoney()>=buy[h.getloc()]){ cout<<"You purchased "<<property[h.getloc()]<<endl; h.setmoney(h.getMoney()-buy[h.getloc()]);//Subtracts the cost to buy from the players balance avail[h.getloc()]=false;//Is no longer available p1prop.push_back(h.getloc());//stores the location of where the player owns } } } break; } case 2:{ if(p1prop.size()==0){ cout<<"You do not own any property\n"; }else{ //Cout the property the player owns cout<<"\n************************************************\n\n"; for(int i=0;i<p1prop.size();i++){ cout<<"You own "<<property[p1prop[i]]<<endl; } cout<<"\n************************************************\n\n"; } break; } case 3:{ cout<<"Turn ended!\n\n\n"; break; } default:cout<<"Error: In the switch statment\n"; } }while(buyans!=3); } } if(game!=false){ if(prison==false){ turn=2; prison=true; }else{ turn=1; } for(int i=1;i<=turn;i++){ who=false; c1=roll(6,2); cout<<"Now it is the computers turn, balance $"<<c1bal<<"\n"; cout<<"The computer moved forward "<<c1<<" spaces."<<endl; cmove[c1loc]=0; c1loc+=c1; compmove(c1loc,c1,c1bal,cmove); cout<<"The computer landed on "<<property[c1loc]<<endl; win(h,c1bal,game);//determines the winner if(game==false)break;//doesn't let the computer turn happen if player wins //calls the income tax function if(c1loc==4 || c1loc==38){ pay(h,c1bal,c1loc,who); } //calls the chance function if(c1loc==7 || c1loc==22 || c1loc==36){ chance(h,pmove,c1loc,cmove,c1,c1bal,prison,cprison,who); } //calls the chest function if(c1loc==2 || c1loc==17 || c1loc==33){ chest(h,pmove,c1loc,cmove,c1,c1bal,prison,cprison,who); } //Calls the jail function if(c1loc==30){ cprison=false; jail(h,pmove,c1loc,cmove,c1,who); } //Used to check if player lands on a computer owned location for(int i=0;i<p1prop.size();i++){ if(c1loc==p1prop[i]){ c1bal-=rent[c1loc]; h.setmoney(h.getMoney()+rent[c1loc]); cout<<"You own "<<property[c1loc]<<" the computer owes you $"<<rent[c1loc]<<" for rent\n"; } } int Cbuy=rand()%3+1; if(avail[c1loc]==true){ if(c1bal>buy[c1loc]){ if(Cbuy==2){ cout<<"The computer purchased "<<property[c1loc]<<endl; c1bal-=buy[c1loc];//Subrtracts the cost to buy from the players balance avail[c1loc]=false;//Is no longer available c1prop.push_back(c1loc);//stores the location of where the player owns } } } display(pmove,cmove); cout<<"Computer's turn ended, balance $"<<c1bal<<"\n"; cout<<"\n\n"; } } }while(game); break; } case 2:{ rules(); break; } } }while(play!=1); over(); //Writes to a file::binary the p1 balance and property's ofstream fout("scores.txt",ios::binary); cout<<"Writing down your score to a file..\n"; fout<<"Player 1 balance: $"<<h.getMoney()<<endl; //Cout the property the player owns int counter=0; for(int i=0;i<p1prop.size();i++){ fout<<"You own "<<property[p1prop[i]]<<", "; counter++; if(counter>3){ fout<<endl; counter=0; } } fout.close(); cout<<"Thank you for playing!!"<<endl; return 0; }