定义要在已定义的PYTHON中运行的全局变量

2024-06-23 18:24:48 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我正在为学校作业编写一个基于RPG文本的游戏,尽管我在为玩家健康创建一个全局变量方面遇到了困难,因为我已经在一个定义的函数中编写了战斗逻辑。目前,每次通过函数播放时,它都会将playerHealth设置为100,尽管我希望它使playerHealth等于上次修改时的值。例如:如果我在一场战斗中失去了10点生命值,使我的生命值达到90,那么下次我战斗时它将被设置为90点生命值

def battle():
  playerHealth = 100
  enemyHealth = 20


  while enemyHealth > 0:

  attack = input('Melee or Ranged Attack?\n> ').lower()
  if attack[0] == 'm':
      chance = random.randint(0,2)
      if chance == 0:
          print('***********')
          print('You missed!')
          print('***********')
          print('You receive 4 damage')
          playerHealth -= 4
          print('')
          print('Player Health = ' + str(playerHealth))

      else:
          print('You hit the enemy, also causing damage to yourself')
          print('Enemy receives 3 damage')
          print('Player receives 1 damage')
          enemyHealth -= 4
          playerHealth -= 1
          print('')
          print('Enemy Health = ' + str(enemyHealth))
          print('Player Health = ' + str(playerHealth))

  elif attack[0] == 'r':
      chance = random.randint(0,2)
      if chance == 0:
          print('***********')
          print('You missed!')
          print('***********')
          print('The enemy attacks you causing 3 damage')
          playerHealth -= 3
          print('')
          print('Player Health = ' + str(playerHealth))

      else:
          print('-----------')
          print('Direct hit!')
          print('-----------')
          print('Enemy receives 2 damage')
          enemyHealth -= 2
          print('')
          print('Enemy Health = ' + str(enemyHealth))

print('---------------------')           
print('You killed the enemy!') 
print('---------------------')

所以后来我会用:

if "enemy" in deadZone[currentArea1]:
  battle()

Tags: 函数youifplayerprinthealthdamageattack
2条回答

在函数外部初始化它,将它传递给函数,并让函数返回它

def battle(playerHealth):
    ...
    return playerHealth

...

if "enemy" in deadZone[currentArea1]:
    playerHealth = battle(playerHealth)
def battle(player_health, enemy_health):
    ...
    ...
    return player_health, enemy_health


player_health, enemy_health = battle(100, 20)

相关问题 更多 >

    热门问题