All pastes #259916 Raw Edit

Miscellany

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

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

building:
		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 'h':
				while(i<ShipyardLevel)
				{
					a*=2;
					i++;
				}
				if(ShipyardLevel>=0)
				{
					Smetal=400*a;
					Scrystal=200*a;
					Sdeuterium=100*a;
					time=3600*(Smetal+Scrystal)/(2500*(1+RoboticsFactoryLevel));
				}
				break;
			case 'l':
				while(i<ResearchLabLevel)
				{
					a*=2;
					i++;
				}
				if(ResearchLabLevel>=0)
				{
					Smetal=200*a;
					Scrystal=400*a;
					Sdeuterium=200*a;
					time=3600*(Smetal+Scrystal)/(2500*(1+RoboticsFactoryLevel));
				}
			case'0':
				goto end;
				break;
		}
		i=0;
		a=1;
		while(i<MetalMineLevel)
			{
				a*=1.1;
				i++;
			}
		metalS=30*MetalMineLevel*a/3600;
		metal=time*metalS;
		maxMEnergy=10*MetalMineLevel*a;
		i=0;
		a=1;
		while(i<CrystalMineLevel)
			{
				a*=1.1;
				i++;
			}
		crystalS=20*CrystalMineLevel*a/3600;
		crystal=time*crystalS;
		maxCEnergy=10*CrystalMineLevel*a;
		i=0;
		a=1;
		while(i<DeuteriumSynthesizerLevel)
			{
				a*=1.1;
				i++;
			}
		deuteriumS=10*DeuteriumSynthesizerLevel*a/3600;
		deuterium=time*deuteriumS;
		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;

			metalS=metalS*MEnergy/maxMEnergy;
			crystalS=crystalS*CEnergy/maxCEnergy;
			deuteriumS=deuteriumS*DEnergy/maxDEnergy;
		}
		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;
		C=C+crystal;
		D=D+deuterium;
		if(time==Rtime)
			goto building;

		M=M-Smetal;
		C=C-Scrystal;
		D=D-Sdeuterium;

		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 = %.2f\ncrystal = %.2f\ndeuterium = %.2f\ntime = h%d m%d s%d SumTime = h%d m%d s%d\n", M, C, D, 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;
			case 'h':
				ShipyardLevel=ShipyardLevel+1;
				break;
			case 'l':
				ResearchLabLevel=ResearchLabLevel+1;
				break;
		}
		goto start;

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:
		RMtime=Ametal/(metalS+0.005555555555555555555556);
		RCtime=Acrystal/(crystalS+0.002777777777777777777778);
		if(deuteriumS!=0)
		RDtime=Adeuterium/deuteriumS;

		if(RMtime<RCtime)
			if(RCtime<RDtime)
				Rtime=RDtime;
				else
				Rtime=RCtime;
			else
			if(RMtime<RDtime)
				Rtime=RDtime;
				else
				Rtime=RMtime;
		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);
		time=Rtime;
		T=T+time;
		goto resources;
end:;
}