int ApiMain()
 {
 	Main.Open();
 	assert(Main.GetStatus() == WindowOpen);
	Wall.Load("wl3.xpm");
	assert(Wall.GetStatus() == BitMapOkay);
	Wall.SetPosition(Position(0.0,0.0));
	Wall.Draw();
	assert(Main.GetStatus() == WindowOpen);
	Play.Load("play2.xpm");
	assert(Play.GetStatus() == BitMapOkay);
	Play.SetPosition(Position(4.3,4.0));
	Play.Draw();
	assert(Main.GetStatus() == WindowOpen);
	How.Load("how2.xpm");
	assert(How.GetStatus() == BitMapOkay);
	How.SetPosition(Position(4.3,5.5));
	How.Draw();
	assert(Main.GetStatus() == WindowOpen);
	Options.Load("option2.xpm");
	assert(Options.GetStatus() == BitMapOkay);
	Options.SetPosition(Position(4.3,7.0));
	Options.Draw();
	assert(Main.GetStatus() == WindowOpen);
	Loop.Load("loop2.xpm");
	assert(Loop.GetStatus() == BitMapOkay);
	Loop.SetPosition(Position(4.3,8.5));
	Loop.Draw();
	assert(Main.GetStatus() == WindowOpen);
	Exit.Load("exit2.xpm");
	assert(Exit.GetStatus() == BitMapOkay);
	Exit.SetPosition(Position(4.3,10.0));
	Exit.Draw();	
	Main.SetMouseClickCallback(MainMouseClickEvent);
	return 0;
}
Exemple #2
0
int ApiMain()
{	
	//SimpleWindow Game_Board("Game Board",19.5,19.5,Position(4.0,2.0));	
	//SimpleWindow Welcome_Screen("Welcome To Monopoly",18.0,12.0,Position(0.0,0.0));
	//SimpleWindow Roll_Dice("Roll Dice",25.0,18.0,Position(4.0,2.0));

	/*BitMap Dice_Image(Roll_Dice);
	BitMap Dice_1(Roll_Dice);
	BitMap Dice_2(Roll_Dice);
	BitMap Dice_3(Roll_Dice);
	BitMap Dice_4(Roll_Dice);
	BitMap Dice_5(Roll_Dice);
	BitMap Dice_6(Roll_Dice);
	BitMap Dice_text(Roll_Dice);
	BitMap Game_Board_Image(Game_Board);*/
	BitMap Welcome_Image(Welcome_Screen);
	

	int current_position=0;
	int flag1=0;

	class city cty[20];
	class player plyr[2];
	class company cmpny[6]; 
					
	Monopoly.Open();
	Welcome_Image.Load("Welcome.xpm");
	Position WindowCenter=Monopoly.GetCenter();
	Position Welcome_ImagePosition= WindowCenter+Position(-0.5*Welcome_Image.GetWidth(),-0.5*Welcome_Image.GetHeight());
	Welcome_Image.SetPosition(Welcome_ImagePosition);
	Welcome_Image.Draw();
	cin>>flag1;
	
	if(flag1==2)
	{
		cout<<"Thank You"<<endl;
		return 1;
	}
	if((flag1!=1)&&(flag1!=2))
	{
		cout<<"INVALID INPUT, GAME QUITS"<<endl;
		return 2;
	}
	if(flag1==1)
	{
		cout<<" Let's Start The Game: "<<endl;
	                                            
		FILE *fp1,*fp2,*fp3;
		fp1=fopen("city.txt","r");
		fp2=fopen("company.txt","r");								
	
		if(fp1==NULL)
		{
			cout<<"\nCannot open the file city.txt";
			exit(0);
		}
		if(fp2==NULL)
		{
			cout<<"\nCannot open the file company.txt";
			exit(0);
		}
		i=0; 
		char str1[20];												
		int id, c_rent , hse_rent, htl_rent, t, c_cost, hse_cost, htl_cost, hse_count, htl_count; 			int cty_owner;                 //dummy variables for city
		while(!feof(fp1))
		{
			fscanf(fp1,"%s %d %d %d %d %d %d %d %d %d %d %d",str1,&t,&id,&c_cost,&hse_cost,&htl_cost,&c_rent,&hse_rent,&htl_rent,&hse_count,&htl_count,&cty_owner);
			cty[i].set_details_of_city(str1,id, c_rent,hse_rent,htl_rent,t,c_cost,hse_cost,htl_cost,hse_count,htl_count,cty_owner);
			cty[i].display_details_of_city();
			i++;
			cout<<endl;
		}
		cout<<endl;	
		i=0;
		char str[20], str2[20];
		int p_comp_id,b_rent,p_rent,comp_cost,c_owner;
		while(!feof(fp2))
		{
			fscanf(fp2,"%s %s %d %d %d %d %d %d",str,str2,&id,&p_comp_id,&comp_cost,&b_rent,&p_rent,&c_owner);
			cmpny[i].set_details_of_company(str,str2,id,p_comp_id, b_rent, p_rent,comp_cost,c_owner);
			cmpny[i].display_details_of_company();
			i++;
			cout<<endl;
		}
		for(i=0;i<2;i++)
		{
			plyr[i].set_details_of_player(i,50000,0,0,0,0,0);     
			plyr[i].display_details_of_player();
			cout<<endl;                                        
		}
		fclose(fp1);
		fclose(fp2);	                                                                       	
		int x,y,flag=-1,type_count=0,j,temp;	
		char ch,ch2='n'; 			//flag=0 denotes city, and flag=1 denotes company
//main algorithm	
		start:                                                                //LABEL	
		while((plyr[0].return_balance()>0)&&(plyr[1].return_balance()>0)&&((ch2=='n')||(ch2=='N')))
		{
	    		i=z%2;
	    		cout<<"\nNext player's turn.";
	    		cout<<"\nYour current balance:"<<plyr[i].return_balance();
	    		flag=-1;
			z++;
			/*Roll_Dice.Open();
			
			Position WindowCenter1=Roll_Dice.GetCenter();
				
			
			Dice_text.SetPosition(Dice_textPosition);
			Dice_text.Draw();
			Dice_Image.SetPosition(Dice_ImagePosition);
			Dice_Image.Draw();*/
			Welcome_Image.Erase();
			Dice_Image.Load("dice.xpm");
			Dice_text.Load("df.xpm");
			Dice_1.Load("diceno1.xpm");
			Dice_2.Load("diceno2.xpm");
			Dice_3.Load("diceno3.xpm");
			Dice_4.Load("diceno4.xpm");
			Dice_5.Load("diceno5.xpm");
			Dice_6.Load("diceno6.xpm");
			Position Dice_textPosition=WindowCenter+Position(-0.5*Dice_text.GetWidth(),-0.5*Dice_text.GetHeight());
			Position Dice_ImagePosition= Position(12.0+Exit_Button.GetWidth(),17-Exit_Button.GetHeight());
			Position Dice_1Position= WindowCenter+Position(3.0-0.5*Welcome.GetWidth(),4.0-0.5*Welcome.GetHeight());
			Position Dice_2Position= Dice_1Position+Position(3.0,0.0);
			Dice_text.SetPosition(Dice_textPosition);
			Dice_text.Draw();
			Dice_Image.SetPosition(Dice_ImagePosition);
			Dice_Image.Draw();			
			if(plyr[i].return_turn()==0)
			{
				dice();
			}
			Monopoly.SetMouseClickCallback(MouseClickEvent1);
				
			
			
		
		main_algorithm_start:                                            //LABEL
		
		
		
		
		
		current_position=plyr[i].set_position(dice_sum);
		
		main_algorithm_start_2:
		
		
		if((current_position==9)&&(plyr[i].return_turn()==0))
		{
		    
			if(plyr[i].return_turn()==0)
			{
			cout<<"\nYou've landed in 'JAIL'.Wait for the other player to play.";
			plyr[i].modify_turn(1);
			goto start;
			}
			if(plyr[i].return_turn()>0)
			{	
				if(plyr[i].return_turn()==1)
				{
				cout<<"\nWould you like to pay a fine of Rs. 500, throw three times or miss three turns?";
				cout<<"\nEnter 1, 2 or 3 respectively.";
				cin>>jail_choice[i];
				}
				switch(jail_choice[i])
				{
					case 1:
						plyr[i].modify_balance(-500);
						cout<<"\nRs. 500 has been deducted from your bank balance.";
						cout<<"\nYour current balance : "<<plyr[i].return_balance();
						plyr[i].modify_turn((-1)*(plyr[i].return_turn()));
						dice();
                        plyr[i].set_position(dice_sum);					
						break;		
					case 2:
						int d_sum[3];
						for(j=0;j<3;j++)
						{
							dice();
							if(dice_1==dice_2)
							{
								plyr[i].modify_turn((-1)*(plyr[i].return_turn()));
								goto main_algorithm_start;
							}
							d_sum[j]=dice_sum;
						}
						if((d_sum[0]==d_sum[1])&&(d_sum[1]==d_sum[2]))
						{
							plyr[i].modify_turn((-1)*(plyr[i].return_turn()));
							goto main_algorithm_start;
						}
						cout<<"\nYou've failed to satisfy the condition to be released from 'JAIL'.Hence you've to wait for two more turns.";
					case 3:
						if(plyr[i].return_turn()<3)
						{
							plyr[i].modify_turn(1);
							goto start;
						}
						if(plyr[i].return_turn()==3)
						{
							plyr[i].modify_turn((-1)*(plyr[i].return_turn()));
							goto start;
						}
						break;
					default:
						cout<<"\nInvalid input.You've been released from jail and Rs.500 has been deducted from your bank balance.";
						plyr[i].modify_balance(-500);
						break; 
				}
			}
		}
		
		
		
		                                                                  //chance 
		
		if (current_position==7 || current_position==20)
		{
			cout<<"\nYou have landed at 'CHANCE'.";
			switch (dice_sum)
			{
				case 2:				//SYNTAX DOUBTFUL
					cout<<"\nYou have lost Rs. 2000 in the share market.";
					plyr[i].modify_balance(-2000);
					break;
				case 3:
					cout<<"\nYou have won Rs. 2500 in the lottery!";
					plyr[i].modify_balance(2500);
					break;
				case 4:
					cout<<"\nYou have been fined Rs. 1500 for driving under influence (DUI)";
					plyr[i].modify_balance(-1500);
					break;
				case 5:
					cout<<"\nYou have won Rs. 1000 in a crossword competition!";
					plyr[i].modify_balance(1000);
					break;
				case 6:
					cout<<"\nHouse repairs have cost you Rs. 1500";
					plyr[i].modify_balance(-1500);
					break;
				case 7:
					cout<<"\nYou have won a jackpot of Rs. 2000!";
					plyr[i].modify_balance(2000);
					break;
				case 8:
					cout<<"\nA fire in your godown has caused you a loss of Rs. 3000";
					plyr[i].modify_balance(-3000);
					break;
				case 9:
					if (current_position==7)
					plyr[i].modify_balance(2500);
																	                         //Changed the rules.to be filled.
					break;
				case 10:
					cout<<"\nYou have been sent to the 'JAIL'.";
					plyr[i].jump(9);
					goto main_algorithm_start_2;
					break;
				case 11:
					cout<<"\nYou have won Rs. 3000 for best performance in export!";
					plyr[i].modify_balance(3000);
					break;
				case 12:
					cout<<"\nYou have been sent to the 'REST HOUSE'.";
					plyr[i].jump(27);			                                                        //Changed the rules. Player will NOT miss a turn.
					plyr[i].modify_balance(100);
					break;
			}
		}
		
		
		if((current_position==16)||(current_position==29))                   //community chest
		{
			cout<<"\nYou have landed at 'CHANCE'.";
			switch (dice_sum)
			{
				case 2:
					cout<<"\nIt is your birthday.You have received Rs. 500 as gift.";
					plyr[i].modify_balance(500);
					break;	
				case 3:
				    cout<<"\nYou've been sent to 'JAIL'.";
					plyr[i].jump(9);
					goto main_algorithm_start_2;
					break;
				case 4:
					cout<<"\nYou've won 1st prize in beauty contest.Rs. 2500 has been awarded to you.";
					plyr[i].modify_balance(2500);
					break;
				case 5:
					cout<<"\nYou've to pay medical and school fees totaling Rs. 1000.";
					plyr[i].modify_balance(-1000);
					break;
				case 6:
					cout<<"\nIncome tax refund:You received Rs. 2000.";
					plyr[i].modify_balance(2000);
					break;
				case 7:
					cout<<"\nExpenses for marriage celebration are Rs. 2000.";
					plyr[i].modify_balance(-2000);
					break;
				case 8:
					cout<<"\nYou've been sent to 'REST HOUSE'.";
					plyr[i].jump(27);			                                                        //Changed the rules. Player will NOT miss a turn.
					plyr[i].modify_balance(100);
					break;
				case 9:
					cout<<"\nCost of carrying out general repairs on all your properties is :\n"<<"Rs.50 for each house.\n"<<"Rs.100 for each hotel.";
					plyr[i].modify_balance((-50)*(plyr[i].return_house_count())+(-100)*(plyr[i].return_hotel_count()));
					break;
				case 10:
					cout<<"\nYou've received interest on shares amounting to Rs. 1500.";
					plyr[i].modify_balance(1500);
					break;
				case 11:
					cout<<"\nYou've to pay Insurance Premium amounting to Rs. 1500.";
					plyr[i].modify_balance(-1500);
					break;
				case 12:
					cout<<"\nYou've received Rs. 3000 by selling your stocks.";
					plyr[i].modify_balance(3000);
					break;
			}
		}
		
					
		
		
		
		
		
		if(current_position==18)                                                     //CLUB
		{
			cout<<"\nYou have landed at CLUB HOUSE.";
			plyr[i].modify_balance(-100);
			cout<<"\nRs. 100 deducted from your bank account."; 
		}
		
		if(current_position==27)                                                 //REST HOUSE
		{
			cout<<"\nYou have landed at REST HOUSE.";
			plyr[i].modify_balance(100);
			cout<<"\nRs. 100 deposited in your bank account."; 
		}
		
		if(current_position-dice_sum<0)                                         //START
		{
			cout<<"\nYou have crossed START and Rs. 500 has been deposited in your bank account";
			plyr[i].modify_balance(1500);
		}
		
		
		
		
		
		
		if (current_position==5)				                                    //income tax
		{
			cout<<"\nYou have landed at 'INCOME TAX'."; 
			if (plyr[i].return_city_count()*(50) >500)
			{
				plyr[i].modify_balance(-500);
				cout<<"\nRs. 500 has been deducted fom your bank account.";
			}
			else
			{
				plyr[i].modify_balance((-50)*(plyr[i].return_city_count()));
				cout<<"\nRs. "<<(50)*(plyr[i].return_city_count())<<" has been deducted from your bank account.";
			}
		}
		
		if (current_position==31)				                                //wealth tax
		{
			cout<<"\nYou have landed at 'WEALTH TAX'.";
			if ((plyr[i].return_house_count()+(2)*(plyr[i].return_hotel_count()))*(50) > 500)
			{
				plyr[i].modify_balance(-500);
				cout<<"\nRs. 500 has been deducted from your bank account.";
			}
			else
			{
				plyr[i].modify_balance((-50)*((plyr[i].return_house_count())+(2)*(plyr[i].return_hotel_count())));
				cout<<"\nRs. "<<(-50)*((plyr[i].return_house_count())+(2)*(plyr[i].return_hotel_count()))<<" has been deducted from your bank account.";
			}
		}
		
		
		
				
		
		//city and company
		
		
		
		x=0;				                                            //flag=0 denotes city, and flag=1 denotes company
		for(x=0;x<6;x++)
		{
			if(cmpny[x].return_id()==current_position)
			{
				flag=1;
				break;
			}
		}
		if(flag==1)
		{
			cout<<"\nYou have landed on a company.";
			cmpny[x].display_details_of_company();
			if(cmpny[x].get_owner()==-1)
			{
				cout<<"\nWould you like to buy this company?(y/n)";
				cin>>ch;
				while (!(ch=='y' || ch=='n' || ch=='Y' || ch=='N'))
				{
					cout<<"\nInvalid input, please type your response again. (y/n)";
					cin>>ch;
				}
				if((ch=='y' || ch=='Y'))
				{
					plyr[i].modify_balance((-1)*cmpny[x].return_company_cost());
					cmpny[x].modify_owner(i);
					cout<<"\nCongratulations!!You are the owner of this company.";
					cout<<"\n"<<cmpny[x].return_company_cost()<<" has been deducted from your bank account.";
				}
			}