Я делаю программу, в которой вы стреляете из бластера, и у меня 5 патронов. Я уничтожаю иностранца, у которого есть 5 единиц здоровья. В конце я создаю экземпляр игрока и заставляю его взорвать 6 раз, чтобы убедиться, что программа работает правильно. Но то, как я это сделал, делает так, чтобы сумма не уменьшалась. Легко ли это исправить, или мне просто нужно придать новый атрибут патронам и здоровью? Вот что у меня есть:
class Player(object):
""" A player in a shooter game. """
def blast(self, enemy, ammo=5):
if ammo>=1:
ammo-=1
print "You have blasted the alien."
print "You have", ammo, "ammunition left."
enemy.die(5)
else:
print "You are out of ammunition!"
class Alien(object):
""" An alien in a shooter game. """
def die(self, health=5):
if health>=1:
health-=1
print "The alien is wounded. He now has", health, "health left."
elif health==0:
health-=1
print "The alien gasps and says, 'Oh, this is it. This is the big one. \n" \
"Yes, it's getting dark now. Tell my 1.6 million larvae that I loved them... \n" \
"Good-bye, cruel universe.'"
else:
print "The alien's corpse sits up momentarily and says, 'No need to blast me, I'm dead already!"
# main
print "\t\tDeath of an Alien\n"
hero = Player()
invader = Alien()
hero.blast(invader)
hero.blast(invader)
hero.blast(invader)
hero.blast(invader)
hero.blast(invader)
hero.blast(invader)
raw_input("\n\nPress the enter key to exit.")