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

📄 myenvcons.h

📁 gamecode 很不错的小游戏源代码
💻 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 + -