📄 myenvcons.h
字号:
//************************************************************
//环境监督法院类
//作者:曾铮
//时间:2004年6月
//说明:游戏存在一个虚拟的环境监督局,可能针对不同的工厂会随机给予奖惩
//*************************************************************
#ifndef MyEnvCons_h_
#define MyEnvCons_h_
extern MyMaps maps;
class MyEnvCons
{
public:
MyEnvCons();
~MyEnvCons();
private:
void Punish(int index);//处罚工厂
void Award(int index);//给予物质奖励
public:
void MakeDecision();//外部调用,决定给予某个工厂奖惩
};
MyEnvCons::MyEnvCons()
{
}
MyEnvCons::~MyEnvCons()
{
}
void MyEnvCons::Punish(int index)
{
MyFactory tempf;
maps.pfactory.getelem(index,tempf);
switch (tempf.kind)
{
case BUILDFACTORY0:
{
char* info="某汽车厂因为不合理处理生产垃圾,环境署现在对其给给予罚款!";
MyMessage::PutMSG(SHOWMSG,info);
}
break;
case BUILDFACTORY1:
{
char* info="某食品厂,其生产方法不得当,对周围环境造成了污染,现由环境署给予处罚!";
MyMessage::PutMSG(SHOWMSG,info);
}
break;
case BUILDFACTORY2:
{
//酒店不会出现在这里
}
break;
case BUILDFACTORY3:
{
char* info="某矿厂因为严重破坏了周围的生态环境,情节恶劣,环境署给予严厉谴责,并予以罚款!";
MyMessage::PutMSG(SHOWMSG,info);
}
break;
case BUILDFACTORY4:
{
char* info="纺织厂的废品处理不合规定,优美环境被破坏,很遗憾,现给予罚款以警告!";
MyMessage::PutMSG(SHOWMSG,info);
}
break;
case BUILDFACTORY5:
{
char* info="某冶炼厂的废气已经给周围的生态造成了严重威胁,火星居民怨声载道,立即处罚!";
MyMessage::PutMSG(SHOWMSG,info);
}
break;
}
float rate=(float)-(rand()%abs(tempf.enviaff))/100;//在环境影响度内的罚款(tempf.enviaff为负)
tempf.affe_money+=(long)(rate*tempf.income);//
maps.pfactory.delelem(index);
maps.pfactory.insert(tempf,index);
return;
}
void MyEnvCons::Award(int index)
{
MyFactory tempf;
maps.pfactory.getelem(index,tempf);
float rate=(float)(rand()%abs(tempf.enviaff))/100;//环境影响度内的奖励
if(tempf.kind==BUILDFACTORY2)
{
char* info="某酒店的经营得体,使周围的环境有了翻天覆地的改变。恭喜您,您得到了环境署的奖励!";
MyMessage::PutMSG(SHOWMSG,info);
}
tempf.affe_money+=(long)(rate*tempf.income);
maps.pfactory.delelem(index);
maps.pfactory.insert(tempf,index);
return;
}
void MyEnvCons::MakeDecision()
{
int randbase=maps.GetLenofFac();
if(randbase<=0)
return;
int possibility=rand()%10+1;
if(possibility<=3)//70%可能性参与到对工厂的影响
return;
else//参与影响
{
int affnum=rand()%3+1;//一次最多影响3个
if(affnum>randbase)
affnum=1;//很可能工厂一共小于三个,则只影响一个
while(affnum>=1)
{
int index=rand()%randbase;//在链长范围内,任意取得一个工厂。
MyFactory tempf;
maps.pfactory.getelem(index,tempf);
if(tempf.enviaff>0)//根据其环境影响度来判断奖惩
this->Award(index);
else
this->Punish(index);
affnum--;
}
}
return;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -