如何创建一个始终运行但不会干扰代码运行顺序的while循环?

时间:2017-10-28 12:37:41

标签: python loops

我正在用Python创建一个文本冒险游戏,让我自己开始,因为我还不擅长Python。我试图实施一套健康规则:

while True:
   if health == maxHealth:
       playerAtMaxHealth = True;
   elif health > maxHealth:
       health = maxHealth;
   elif health < 0:
       health = 0
   elif health == 0:
       playerDead = True;

以下是我的其余代码:

def startUp():
  StartPRINT("""╔═══╗
║╔══╝
║╚══╦══╦══╦══╦══╦══╗
║╔══╣══╣╔═╣╔╗║╔╗║║═╣
║╚══╬══║╚═╣╔╗║╚╝║║═╣
╚═══╩══╩══╩╝╚╣╔═╩══╝
─────────────║║
─────────────╚╝ \n""")
  global gold
  global health
  global inventory
  global berryCollected;
  global maxHealth;
  global playerAtMaxHealth;
  global playerDead
  berryCollected = False;
  playerAtMaxHealth = True;
  playerDead = False
  gold = 0
  health = 30
  maxHealth = 30
  inventory = []
  time.sleep(2)
  while True:
    if health == maxHealth:
      playerAtMaxHealth = True;
    elif health > maxHealth:
      health = maxHealth;
    elif health < 0:
      health = 0
    elif health == 0:
      playerDead = True;
  forest()

基本上会发生的事情是它会打印出开始文本,但之后它会卡在while循环中并且不会移动到forest()上。

3 个答案:

答案 0 :(得分:0)

我不知道你是否考虑过这个问题,但是以面向对象的方式做这件事可能会更好。所以,让英雄或玩家作为班级,他的属性是黄金,健康。等等。然后你就可以轻松拥有一个可以在战斗或互动后运行的功能,以检查玩家是否还活着

答案 1 :(得分:0)

请勿使用true来覆盖健康规则。 所以,如果你想检查播放器的健康状况是这样的.. 虽然如此      森林()//也许和怪物打架      //健康检查就在这里......

在森林中采取一些行动后,它会做健康检查.... 如果你写得像你的那样只会陷入健康检查

答案 2 :(得分:0)

您可以简单地将while循环包装在一个线程中。然后启动线程,它不会更改代码的其他结构。 在Python中创建线程非常简单。您需要导入threading 然后,您可以使用threading.Thread()函数创建一个线程 您可以根据需要创建任意数量的线程,只需使用start()函数启动它们即可。它们都会在不干扰您的代码的情况下执行。

有关python线程的更多详细信息,请参阅此threading example of python

相关问题