📄 mygovt.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 + -