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:;
}