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