All pastes #261137 Raw Edit

Someone

public text v1 · immutable
#261137 ·published 2006-11-28 23:08 UTC
rendered paste body
#include <stdio.h>
main()
{
	int MetalMineLevel=0, CrystalMineLevel=0, DeuteriumSynthesizerLevel=0, SolarPlantLevel=0, RoboticsFactoryLevel=0, maxMEnergy, maxCEnergy, maxDEnergy, MEnergy, CEnergy, DEnergy, Energy, EnergyD, MCDEnergy, hours, minutes, seconds, Rhours, Rminutes, Rseconds, T=0, i, j;
	float M=500, C=500, D=0, metal, crystal, deuterium, Smetal, Scrystal, Sdeuterium=0, metalS, crystalS, deuteriumS, Ametal, Acrystal, Adeuterium, time, RMtime, RCtime, RDtime, Rtime, temp=0, a;
	char building;

	printf("Metal %d, Crystal %d, Deuterium %d, Solar %d, Robotics %d\n\n", MetalMineLevel, CrystalMineLevel, DeuteriumSynthesizerLevel, SolarPlantLevel, RoboticsFactoryLevel);

start:
		printf("What building's level do you increase now?\n");
		scanf("%s", &building);

		a=1;
		i=0;
		switch (building)
		{
			case 'm':
				while(i<MetalMineLevel)
					{
					a*=1.5;
					i++;
					}
				if(MetalMineLevel>=0)
				{
					Smetal=60*a;
					Scrystal=15*a;
					time=3600*(Smetal+Scrystal)/(2500*(1+RoboticsFactoryLevel));
				}
				break;
			case 'c':
				while(i<CrystalMineLevel)
				{
					a*=1.6;
					i++;
				}
				if(CrystalMineLevel>=0)
				{
					Smetal=48*a;
					Scrystal=24*a;
					time=3600*(Smetal+Scrystal)/(2500*(1+RoboticsFactoryLevel));
				}
				break;
			case 'd':
				while(i<DeuteriumSynthesizerLevel)
				{
					a*=1.5;
					i++;
				}
				if(DeuteriumSynthesizerLevel>=0)
				{
					Smetal=225*a;
					Scrystal=75*a;
					time=3600*(Smetal+Scrystal)/(2500*(1+RoboticsFactoryLevel));
				}
				break;
			case 's':
				while(i<SolarPlantLevel)
				{
					a*=1.5;
					i++;
				}
				if(SolarPlantLevel>=0)
				{
					Smetal=75*a;
					Scrystal=30*a;
					time=3600*(Smetal+Scrystal)/(2500*(1+RoboticsFactoryLevel));
				}
				break;
			case 'r':
				while(i<RoboticsFactoryLevel)
				{
					a*=2;
					i++;
				}
				if(RoboticsFactoryLevel>=0)
				{
					Smetal=400*a;
					Scrystal=120*a;
					Sdeuterium=200*a;
					time=3600*(Smetal+Scrystal)/(2500*(1+RoboticsFactoryLevel));
				}
				break;
			case'0':
				Ametal=7600-M;
				Acrystal=7000-C;
				Adeuterium=5100-D;
				goto keepon;
				break;
		}
again:
		i=0;
		a=1;
		while(i<MetalMineLevel)
			{
				a*=1.1;
				i++;
			}
		metalS=30*MetalMineLevel*a/3600;
		maxMEnergy=10*MetalMineLevel*a;
		i=0;
		a=1;
		while(i<CrystalMineLevel)
			{
				a*=1.1;
				i++;
			}
		crystalS=20*CrystalMineLevel*a/3600;
		maxCEnergy=10*CrystalMineLevel*a;
		i=0;
		a=1;
		while(i<DeuteriumSynthesizerLevel)
			{
				a*=1.1;
				i++;
			}
		deuteriumS=10*DeuteriumSynthesizerLevel*a/3600;
		maxDEnergy=20*DeuteriumSynthesizerLevel*a;
		i=0;
		a=1;
		while(i<SolarPlantLevel)
			{
				a*=1.1;
				i++;
			}
		Energy=20*SolarPlantLevel*a;

		MCDEnergy=maxMEnergy+maxCEnergy+maxDEnergy;
		EnergyD=Energy-MCDEnergy;

		if(EnergyD<0)
		{
			EnergyD=-EnergyD;
			MEnergy=maxMEnergy*EnergyD/MCDEnergy;
			MEnergy=maxMEnergy-MEnergy;
			CEnergy=maxCEnergy*EnergyD/MCDEnergy;
			CEnergy=maxCEnergy-CEnergy;
			DEnergy=maxDEnergy*EnergyD/MCDEnergy;
			DEnergy=maxDEnergy-DEnergy;
			if(maxMEnergy>0)
			metalS=metalS*MEnergy/maxMEnergy;
			if(maxCEnergy>0)
			crystalS=crystalS*CEnergy/maxCEnergy;
			if(maxDEnergy>0)
			deuteriumS=deuteriumS*DEnergy/maxDEnergy;
			EnergyD=-EnergyD;
		}
		if(j==1)
		{
			printf("metal/h = %.0f, crystal/h = %.0f, deuterium/h = %.0f, energy = %d\n", metalS*3600+20, crystalS*3600+10, deuteriumS*3600, EnergyD);
			printf("Metal %d, Crystal %d, Deuterium %d, Solar %d, Robotics %d\n\n", MetalMineLevel, CrystalMineLevel, DeuteriumSynthesizerLevel, SolarPlantLevel, RoboticsFactoryLevel);
			temp=0;
			j=0;
		goto start;
		}
		if((Smetal>M)||(Scrystal>C)||(Sdeuterium>D))
			goto againm;

resources:
		metal=time*metalS+time*20/3600;
		crystal=time*crystalS+time*10/3600;
		deuterium=time*deuteriumS;

		M=M+metal-Smetal;
		C=C+crystal-Scrystal;
		D=D+deuterium-Sdeuterium;

		if(temp!=0)
		time=temp;

		T=T+time;

		hours=time/3600;
		minutes=time/60-hours*60;
		seconds=time-hours*3600-minutes*60;
		Rhours=T/3600;
		Rminutes=T/60-Rhours*60;
		Rseconds=T-Rhours*3600-Rminutes*60;

		printf("metal = %.0f, crystal = %.0f, deuterium = %.0f\n", M, C, D);
		printf("time = h%d m%d s%d SumTime = h%d m%d s%d\n", hours, minutes, seconds, Rhours, Rminutes, Rseconds);
		switch (building)
		{
			case 'm':
				MetalMineLevel=MetalMineLevel+1;
				break;
			case 'c':
				CrystalMineLevel=CrystalMineLevel+1;
				break;
			case 'd':
				DeuteriumSynthesizerLevel=DeuteriumSynthesizerLevel+1;
				break;
			case 's':
				SolarPlantLevel=SolarPlantLevel+1;
				break;
			case 'r':
				RoboticsFactoryLevel=RoboticsFactoryLevel+1;
				break;
		}
		j=1;
		goto again;

againm:
		if(Smetal>M)
		Ametal=Smetal-M;
		if(Scrystal>C)
			goto againc;
		else
			if(Sdeuterium>D)
				goto againd;
		else
			goto keepon;
againc:
		Acrystal=Scrystal-C;
		if(Sdeuterium>D)
			goto againd;
			else
			goto keepon;
againd:
		Adeuterium=Sdeuterium-D;
keepon:
		if(Ametal>0)
			RMtime=Ametal/(metalS+0.005555555555555555555556);
		else
			RMtime=0;
		if(Acrystal>0)
			RCtime=Acrystal/(crystalS+0.002777777777777777777778);
		else
			RCtime=0;
		if((Adeuterium>0)&&(deuteriumS!=0))
			RDtime=Adeuterium/deuteriumS;
		else
			RDtime=0;

		if(RMtime<RCtime)
			if(RCtime<RDtime)
				Rtime=RDtime;
			else
				Rtime=RCtime;
		else
			if(RMtime<RDtime)
				Rtime=RDtime;
			else
				Rtime=RMtime;
		if(building=='0')
		{
			Rhours=Rtime/3600;
			Rminutes=Rtime/60-Rhours*60;
			Rseconds=Rtime-Rhours*3600-Rminutes*60;
			printf("Time remaining to have the resources for the rest is: h%d m%d s%d\n",Rhours, Rminutes, Rseconds);
			T=T+Rtime;
			Rhours=T/3600;
			Rminutes=T/60-Rhours*60;
			Rseconds=T-Rhours*3600-Rminutes*60;
			printf("The whole proccess will last for: h%d m%d s%d\n",Rhours, Rminutes, Rseconds);
			goto end;
		}
		Rhours=Rtime/3600;
		Rminutes=Rtime/60-Rhours*60;
		Rseconds=Rtime-Rhours*3600-Rminutes*60;
		printf("The requested idle time is: h%d m%d s%d\n",Rhours, Rminutes, Rseconds);
		temp=time;
		T=T+Rtime;
		time=Rtime+time;
		goto resources;
end:;
}