⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mygovt.h

📁 gamecode 很不错的小游戏源代码
💻 H
字号:
//************************************************************
//游戏政府类
//作者:曾铮
//时间:2004年6月
//说明:游戏中的政府:) 该类会根据一定的算法(研究中)来伪随机的进行一些政府的干预事件。
//*************************************************************
#ifndef MyGovt_h_
#define	MyGovt_h_

//#include "CZDemo.h"
#include "MyPlayer.h"
#include "MyFactory.h"
#include "MyBuilding.h"
#include "MyMessage.h"

extern MyPlayer players[4];
extern MyBank mybank;
extern MyMaps maps;
extern MyMessage mymessage;

extern void SignFunc(int &num);

class MyGovt
{
public:
	//一些属性
public:
	MyGovt();
	bool JudgePlayerHonour(int playerid);//判断玩家封号
	void JudgeWinner();//判定胜者
	void TakesomeAction(int revent);//政府有一些行动
	void ShowEvent();//在执行完政府工作后,显示消息。
private:
	void AdjuBankIR();//调整银行利率
	void AdjuAutoSale();//调整汽车销售
	void AdjuFoodSale();//调整食品销售
	void AdjuTourVisitor();//调整旅游人流量
	void DoNothing();//政府不做什么
};

MyGovt::MyGovt()
{
	
}

bool MyGovt::JudgePlayerHonour(int playerid)
{
	PressKey(VK_RETURN,1);
	switch (players[playerid].level)
	{
	case 0:
		{
			if (players[playerid].contribute>5)
			{
				char* info="恭喜你,你已经完全融入了火星生活";//显示提示信息
				MyMessage::PutMSG(SHOWMSG,info);//放入消息栈
				players[playerid].level+=1;//升一级
				strcpy(players[playerid].honour,"无名小卒");//改变玩家称号
				return true;	
			}
		}
		break;
	case 1:
		{
			if(players[playerid].contribute>12)
			{
				char* info="您为火星建设献出了自己的一点力量。您被授予了更高的荣誉!";//同上
				MyMessage::PutMSG(SHOWMSG,info);
				players[playerid].level+=1;
				strcpy(players[playerid].honour,"建筑小工");
				return true;	
			}
		}
	case 2:
		{
			if(players[playerid].contribute>20)
			{
				char* info="您充分诠释了勇气、自信和成功,祝贺您,杰出的青年!";//同上
				MyMessage::PutMSG(SHOWMSG,info);
				players[playerid].level+=1;
				strcpy(players[playerid].honour,"杰出新人");
				return true;	
			}
		}
		//...如此等等的。
	case 3:
		{
			if(players[playerid].contribute>30)
			{
				char* info="经过长时间默默的努力,您得到了人们的认可,火星的建设者!";//同上
				MyMessage::PutMSG(SHOWMSG,info);
				players[playerid].level+=1;
				strcpy(players[playerid].honour,"建设者");
				return true;	
			}
		}
	case 4:
		{
			if(players[playerid].contribute>42)
			{
				char* info="不懈的努力使您的事业更进一步,杰出的工程师!";//同上
				MyMessage::PutMSG(SHOWMSG,info);
				players[playerid].level+=1;
				strcpy(players[playerid].honour,"工程师");
				return true;	
			}
		}
	case 5:
		{
			if(players[playerid].contribute>56)
			{
				char* info="地球上有许多人带着他们的梦想来到了火星,但无疑您是其中的佼佼者!";//同上
				MyMessage::PutMSG(SHOWMSG,info);
				players[playerid].level+=1;
				strcpy(players[playerid].honour,"投资者");
				return true;	
			}
		}
	case 6:
		{
			if(players[playerid].contribute>80)
			{
				char* info="您为火星作出的贡献是卓越的,地球为您而骄傲!特此授予最高封号!";//同上
				MyMessage::PutMSG(SHOWMSG,info);
				players[playerid].level+=1;
				strcpy(players[playerid].honour,"开拓元勋");
				return true;	
			}
		}
	}
	return false;	
}

void MyGovt::JudgeWinner()
{
	return;
}

void MyGovt::TakesomeAction(int revent)
{
	switch (revent)
	{
	case 1:
		this->AdjuBankIR();
		break;
	case 2:
		this->AdjuAutoSale();
		break;
	case 3:
		this->AdjuFoodSale();
		break;
	case 4:
		this->AdjuTourVisitor();
		break;
	case 5:
		this->DoNothing();
		break;
	default:
		return;
	}
	return;
}

void MyGovt::AdjuBankIR()
{
	int sign=1;
	SignFunc(sign);
	if(sign<0)
	{
		char* info="政府下调了银行利率.";
		MyMessage::PutMSG(SHOWMSG,info);
	}
	else
	{
		char* info="政府上调了银行利率.";
		MyMessage::PutMSG(SHOWMSG,info);
	}
	float temp=(float)(rand()%10)/100;//百分之十的浮动
	mybank.bankrate+=(temp*sign);
	return;
}

void MyGovt::AdjuAutoSale()
{
	int index=0;
	int sign=1;
	SignFunc(sign);
	if(sign<0)
	{
		char* info="请注意!!政府限制了汽车贸易。";
		MyMessage::PutMSG(SHOWMSG,info);
	}
	else
	{
		char* info="好消息,政府加大了汽车生产力度,汽车有望卖个好价!";
		MyMessage::PutMSG(SHOWMSG,info);
	}
	float rate=(float)sign*(rand()%20)/100;//有20%的上下浮动
	int facnum=maps.GetLenofFac();
	if(facnum<1)//没有汽车厂
		return;
	while(index++<=facnum)
	{
		if(maps.SearchKind(index,AUTOFAC))
		{
			MyFactory tempf;
			maps.pfactory.getelem(index,tempf);
			tempf.affe_money+=(long)(rate*tempf.income);
			maps.pfactory.delelem(index);
			maps.pfactory.insert(tempf,index);
		}
	}
	return;
}

void MyGovt::AdjuFoodSale()
{
	char* info="政府扶持食品业.";
	MyMessage::PutMSG(SHOWMSG,info);
	int index=0;
	float rate=(float)(rand()%20)/100;//有20%内的向上浮动,不会下跌
	int facnum=maps.GetLenofFac();
	if(facnum<1)//没有食品厂
		return;
	while(index++<=facnum)
	{
		if(maps.SearchKind(index,FOODFAC))
		{
			MyFactory tempf;
			maps.pfactory.getelem(index,tempf);
			tempf.affe_money+=(long)(rate*tempf.income);
			maps.pfactory.delelem(index);
			maps.pfactory.insert(tempf,index);
		}
	}
	return;
}

void MyGovt::AdjuTourVisitor()
{
	int index=0;
	int sign=1;
	SignFunc(sign);
	if(sign<0)
	{
		char* info="请注意!!政府限制了旅游人口。";
		MyMessage::PutMSG(SHOWMSG,info);
	}
	else
	{
		char* info="好消息,政府放宽旅游人口量!";
		MyMessage::PutMSG(SHOWMSG,info);
	}
	float rate=(float)sign*(rand()%200)/100;//有200%内的上下浮动,所以可能一夜暴富,也可能…
	while(index++<=maps.GetLenofFac())
	{
		if(maps.SearchKind(index,RESTAURANT))
		{
			MyFactory tempf;
			maps.pfactory.getelem(index,tempf);
			tempf.affe_money+=(long)(rate*tempf.income);
			maps.pfactory.delelem(index);
			maps.pfactory.insert(tempf,index);
		}
	}
	return;
}

void MyGovt::DoNothing()
{
	char* info="本月政府无政令。";
	MyMessage::PutMSG(SHOWMSG,info);
	return;
}

void MyGovt::ShowEvent()
{
	mymessage.RunMSG();
	return;
}
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -