最近我的任务是创建一种游戏,其中有两个对象(例如,plane1、plane2),它们是“Airplanes”类的一部分
Airplanes 类应该有一个名为“shoot”的方法,该方法应该接受该类的对象作为其参数。该方法会从敌人身上夺走随机数量的生命值,并从射手身上夺走双倍随机生命值,这种情况应该会发生,直到其中一架飞机的生命值为零。我一切都井井有条,除了 while 循环在所有 10 个实例中保持打印相同数量的弹药和生命值,而且它永远不会降到 0,因为它始终保留第一个实例的值。
import random
class Airplane:
def __init__(self, name, maxHp, maxAmmo,):
self.name = name
self.maxHp = maxHp
self.hp = maxHp
self.maxAmmo = maxAmmo
self.ammo = maxAmmo
def shoot(self, target):
randomAmt = random.randrange(10, 25)
damage = randomAmt
target.hp = target.maxHp - damage
self.ammo = self.maxAmmo - damage * 2
counter = 1
while counter <= 10:
print(f"{counter} {self.name} │ {self.maxAmmo}/{self.ammo} │ {self.maxHp}/{self.hp} : {target.name} │ {target.maxAmmo}/{target.ammo} │ {target.maxHp}/{target.hp}")
counter+=1
plane1 = Airplane(input("Enter name: "), 100, 250)
plane2 = Airplane(input("Enter name: "), 100, 250)
print(plane1.shoot(plane2))
最佳答案
您已在代码中调用了一次shoot
方法。
shoot
方法中的循环每次仅打印相同的信息,因为这就是编写代码的目的。您的循环不会重新触发拍摄。
两种选择:
- 将 while 循环移到类外部以多次调用
shoot
方法。 - 或者,在循环中的 print 语句之后,调用
self.shoot
重新触发拍摄。
关于python - 当我希望它随每个实例而改变时,我的循环不断重复相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74784788/