我正在为我目前出于娱乐目的而开发的游戏开发一个遭遇系统。为了在完成游戏之前构建系统,统计信息和medkit只是占位符,除此问题外,它的功能还不错。我希望在循环内访问medkits变量,然后再说(如果有第二次遭遇),以便将该变量更改为正确的数字。例如,如果我在第一次接触中使用medkit,则在下一次接触中应该少用一个。不知道该怎么做,因为这是我制作正版游戏的第一次尝试。任何功能性解决方案都很棒!
我还要补充一点,我知道第3个选项不起作用并且敌人还没有反击,但这对我来说没有问题。我只想要这个特定问题的答案。
charisma = int(60)
strength = int(25)
endurance = int(40)
intelligence = int(70)
capacity = int(50)
from random import randint
medkits = 2
def encounter(enemy):
print("Engaging "+enemy+"!")
print()
y = 10 + (strength*.10)
enhealth = int(100)
enhealth = int(enhealth-y)
health = int(100)
med = int(medkits)
while True:
print("Pick your move!")
print("1. Smack with shovel")
print("2. Use a medkit (you have "+str(med)+" medkits)")
print("3. Attempt escape")
enc = input("I will try to (put a #): ")
if "1" in enc:
x = randint(0, 100)
if x < 80:
enhealth = int(enhealth-y)
print()
print("You hit "+enemy+" for "+str(y)+" damage!")
print()
else:
print()
print("Miss!")
print()
elif "2" in enc:
if med > 0:
print()
print("You used a medkit!")
print()
health = health+30
med = med-1
print("Health is at "+str(health))
print()
else:
print("You're out of medkits!")
if enhealth <= int(0):
print(enemy+" has been defeated! Well done!")
break
encounter("Cornelius")
答案 0 :(得分:0)
每次调用遇到函数时,您的变量med都会设置为medkits。 例如,如果您调用遭遇(“ Cornelius”)并使用1 medkit,然后调用遭遇(“ Cornelius”),则med将再次设置为int(medkits)。当前,每个函数调用的med设置为2。我修复了您的代码,现在它可以实现您想要的功能。很棒的游戏,并保持编码!
charisma = int(60)
strength = int(25)
endurance = int(40)
intelligence = int(70)
capacity = int(50)
from random import randint
med = 2
def encounter(enemy):
print("Engaging "+enemy+"!")
print()
y = 10 + (strength*.10)
enhealth = int(100)
enhealth = int(enhealth-y)
health = int(100)
global med
while True:
print("Pick your move!")
print("1. Smack with shovel")
print("2. Use a medkit (you have "+str(med)+" medkits)")
print("3. Attempt escape")
enc = input("I will try to (put a #): ")
if "1" in enc:
x = randint(0, 100)
if x < 80:
enhealth = int(enhealth-y)
print()
print("You hit "+enemy+" for "+str(y)+" damage!")
print()
else:
print()
print("Miss!")
print()
elif "2" in enc:
if med > 0:
print()
print("You used a medkit!")
print()
health = health+30
med = med-1
print("Health is at "+str(health))
print()
else:
print("You're out of medkits!")
if enhealth <= int(0):
print(enemy+" has been defeated! Well done!")
break
encounter("Cornelius")
encounter("Cornelius")
答案 1 :(得分:0)
解决此问题的一种方法是在函数外部定义所有初始值(已经完成),然后将它们作为函数的其他变量传递,并使函数递归。在每次运行结束时使用return
语句。如果敌人还活着并且您想再次运行该函数,则return encounter(enemy, y, enhealth, health, med)
命令只需再次调用该函数,并传递之前更新的值即可。当敌人死亡时,一个简单的return
一起退出该功能。
from random import randint
def encounter(enemy, y, enhealth, health, med):
print("Engaging "+enemy+"!\n")
print("Pick your move!")
print("1. Smack with shovel")
print("2. Use a medkit (you have "+str(med)+" medkits)")
print("3. Attempt escape")
enc = input("I will try to (put a #): ")
if enc == '1':
if randint(0,100) < 80:
enhealth = int(enhealth - y)
print("\nYou hit "+enemy+" for "+str(y)+" damage!\n")
else:
print("\nMiss!\n")
elif enc == '2':
if med > 0:
print("\nYou used a medkit!\n")
health += 30
med -= 1
print("\nHealth is at " + str(health) + "\n")
else:
print("\nYou're out of medkits!\n")
if enhealth <= 0:
print(enemy + " has been defeated! Well done!")
return
return encounter(enemy, y, enhealth, health, med)
strength = int(25)
y = 10 + (strength*.10)
enhealth = int(100 - y)
health = int(100)
med = 2
enemy = "Cornelius"
encounter(enemy, y, enhealth, health, med)
不过,您可能不想考虑跟踪所有这些变量,而是要考虑将所有统计信息存储在Python字典中以传入和传出函数。这样,如果您已经完成return
,但您希望保留相同的结果统计信息以传递到新函数中,则也可以encounter()
字典。