mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-21 23:00:43 -08:00
185 lines
6.2 KiB
Python
185 lines
6.2 KiB
Python
MAX_UNITS = 72000
|
|
planeCrashWin = False
|
|
usrArmy = 0
|
|
usrNavy = 0
|
|
usrAir = 0
|
|
cpuArmy = 30000
|
|
cpuNavy = 20000
|
|
cpuAir = 22000
|
|
|
|
|
|
def showIntro():
|
|
global MAX_UNITS
|
|
|
|
print(" " * 32 + "COMBAT")
|
|
print(" " * 14 + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY")
|
|
print("\n\n")
|
|
print("I AM AT WAR WITH YOU.")
|
|
print("WE HAVE " + str(MAX_UNITS) + " SOLDIERS APIECE.")
|
|
|
|
|
|
def getForces():
|
|
global usrArmy, usrNavy, usrAir
|
|
|
|
while True:
|
|
print("DISTRIBUTE YOUR FORCES.")
|
|
print(" ME YOU")
|
|
print("ARMY " + str(cpuArmy) + " ? ", end="")
|
|
usrArmy = int(input())
|
|
print("NAVY " + str(cpuNavy) + " ? ", end="")
|
|
usrNavy = int(input())
|
|
print("A. F. " + str(cpuAir) + " ? ", end="")
|
|
usrAir = int(input())
|
|
if not ((usrArmy + usrNavy + usrAir) > MAX_UNITS):
|
|
break
|
|
|
|
|
|
def attackFirst():
|
|
global usrArmy, usrNavy, usrAir
|
|
global cpuArmy, cpuNavy, cpuAir
|
|
|
|
numUnits = 0
|
|
unitType = 0
|
|
|
|
while True:
|
|
print("YOU ATTACK FIRST. TYPE (1) FOR ARMY; (2) FOR NAVY;")
|
|
print("AND (3) FOR AIR FORCE.")
|
|
print("?", end=' ')
|
|
unitType = int(input())
|
|
if not (unitType < 1 or unitType > 3):
|
|
break
|
|
|
|
while True:
|
|
print("HOW MANY MEN")
|
|
print("?", end=' ')
|
|
numUnits = int(input())
|
|
if not ((numUnits < 0) or ((unitType == 1) and (numUnits > usrArmy)) or (
|
|
(unitType == 2) and (numUnits > usrNavy)) or ((unitType == 3) and (numUnits > usrAir))):
|
|
break
|
|
|
|
if unitType == 1:
|
|
if numUnits < (usrArmy / 3):
|
|
print("YOU LOST " + str(numUnits) + " MEN FROM YOUR ARMY.")
|
|
usrArmy = usrArmy - numUnits
|
|
elif numUnits < (2 * usrArmy / 3):
|
|
print("YOU LOST " + str(int(numUnits / 3)) + " MEN, BUT I LOST " + str(int(2 * cpuArmy / 3)))
|
|
usrArmy = int(usrArmy - (numUnits / 3))
|
|
cpuArmy = 0
|
|
else:
|
|
print("YOU SUNK ONE OF MY PATROL BOATS, BUT I WIPED OUT TWO")
|
|
print("OF YOUR AIR FORCE BASES AND 3 ARMY BASES.")
|
|
usrArmy = int(usrArmy / 3)
|
|
usrAir = int(usrAir / 3)
|
|
cpuNavy = int(2 * cpuNavy / 3)
|
|
elif unitType == 2:
|
|
if numUnits < cpuNavy / 3:
|
|
print("YOUR ATTACK WAS STOPPED!")
|
|
usrNavy = usrNavy - numUnits
|
|
elif numUnits < 2 * cpuNavy / 3:
|
|
print("YOU DESTROYED " + str(int(2 * cpuNavy / 3)) + " OF MY ARMY.")
|
|
cpuNavy = int(cpuNavy / 3)
|
|
else:
|
|
print("YOU SUNK ONE OF MY PATROL BOATS, BUT I WIPED OUT TWO")
|
|
print("OF YOUR AIR FORCE BASES AND 3 ARMY BASES.")
|
|
usrArmy = int(usrArmy / 3)
|
|
usrAir = int(usrAir / 3)
|
|
cpuNavy = int(2 * cpuNavy / 3)
|
|
elif unitType == 3:
|
|
if numUnits < usrAir / 3:
|
|
print("YOUR ATTACK WAS WIPED OUT.")
|
|
usrAir = usrAir - numUnits
|
|
elif numUnits < 2 * usrAir / 3:
|
|
print("WE HAD A DOGFIGHT. YOU WON - AND FINISHED YOUR MISSION.")
|
|
cpuArmy = int(2 * cpuArmy / 3)
|
|
cpuNavy = int(cpuNavy / 3)
|
|
cpuAir = int(cpuAir / 3)
|
|
else:
|
|
print("YOU WIPED OUT ONE OF MY ARMY PATROLS, BUT I DESTROYED")
|
|
print("TWO NAVY BASES AND BOMBED THREE ARMY BASES.")
|
|
usrArmy = int(usrArmy / 4)
|
|
usrNavy = int(usrNavy / 3)
|
|
cpuArmy = int(2 * cpuArmy / 3)
|
|
|
|
|
|
def attackSecond():
|
|
global usrArmy, usrNavy, usrAir, cpuArmy, cpuNavy, cpuAir
|
|
global planeCrashWin
|
|
numUnits = 0
|
|
unitType = 0
|
|
|
|
print("")
|
|
print(" YOU ME")
|
|
print("ARMY ", end="")
|
|
print("%-14s%s\n" % (usrArmy, cpuArmy), end="")
|
|
print("NAVY ", end="")
|
|
print("%-14s%s\n" % (usrNavy, cpuNavy), end="")
|
|
print("A. F. ", end="")
|
|
print("%-14s%s\n" % (usrAir, cpuAir), end="")
|
|
|
|
while True:
|
|
print("WHAT IS YOUR NEXT MOVE?")
|
|
print("ARMY=1 NAVY=2 AIR FORCE=3")
|
|
print("? ", end="")
|
|
unitType = int(input())
|
|
if not ((unitType < 1) or (unitType > 3)):
|
|
break
|
|
|
|
while True:
|
|
print("HOW MANY MEN")
|
|
print("? ", end="")
|
|
numUnits = int(input())
|
|
if not((numUnits < 0) or ((unitType == 1) and (numUnits > usrArmy)) or ((unitType == 2) and (numUnits > usrNavy)) or ((unitType == 3) and (numUnits > usrAir))):
|
|
break
|
|
|
|
if unitType == 1:
|
|
if numUnits < (cpuArmy/2):
|
|
print("I WIPED OUT YOUR ATTACK!")
|
|
usrArmy = usrArmy - numUnits
|
|
else:
|
|
print("YOU DESTROYED MY ARMY!")
|
|
cpuArmy = 0
|
|
elif unitType == 2:
|
|
if numUnits < (cpuNavy/2):
|
|
print("I SUNK TWO OF YOUR BATTLESHIPS, AND MY AIR FORCE")
|
|
print("WIPED OUT YOUR UNGUARDED CAPITOL.")
|
|
usrArmy = int(usrArmy/4)
|
|
usrNavy = int(usrNavy/2)
|
|
else:
|
|
print("YOUR NAVY SHOT DOWN THREE OF MY XIII PLANES,")
|
|
print("AND SUNK THREE BATTLESHIPS.")
|
|
cpuAir = int(2*cpuAir/3)
|
|
cpuNavy = int(cpuNavy/2)
|
|
elif unitType == 3:
|
|
if numUnits > (cpuAir/2):
|
|
print("MY NAVY AND AIR FORCE IN A COMBINED ATTACK LEFT")
|
|
print("YOUR COUNTRY IN SHAMBLES.")
|
|
usrArmy = int(usrArmy/3)
|
|
usrNavy = int(usrNavy/3)
|
|
usrAir = int(usrAir/3)
|
|
else:
|
|
print("ONE OF YOUR PLANES CRASHED INTO MY HOUSE. I AM DEAD.")
|
|
print("MY COUNTRY FELL APART.")
|
|
planeCrashWin = True
|
|
|
|
if planeCrashWin == False:
|
|
print("")
|
|
print("FROM THE RESULTS OF BOTH OF YOUR ATTACKS,")
|
|
|
|
if (planeCrashWin == True) or ((usrArmy + usrNavy + usrAir) > (int(3/2*(cpuArmy + cpuNavy + cpuAir)))):
|
|
print("YOU WON, OH! SHUCKS!!!!")
|
|
elif (usrArmy + usrNavy + usrAir) < int(2/3*(cpuArmy + cpuNavy + cpuAir)):
|
|
print("YOU LOST-I CONQUERED YOUR COUNTRY. IT SERVES YOU")
|
|
print("RIGHT FOR PLAYING THIS STUPID GAME!!!")
|
|
else:
|
|
print("THE TREATY OF PARIS CONCLUDED THAT WE TAKE OUR")
|
|
print("RESPECTIVE COUNTRIES AND LIVE IN PEACE.")
|
|
|
|
|
|
def main():
|
|
showIntro()
|
|
getForces()
|
|
attackFirst()
|
|
attackSecond()
|
|
|
|
if __name__ == '__main__':
|
|
main() |