2016-01-19 103 views
0

我正在編寫一個遊戲,而鬥爭功能似乎讓我絆倒了。這裏是我的代碼的作戰片段:Python time.sleep()沒有睡覺

def combat(player, enemy, dun): 
    print("\n"*100 + "A " + enemy.name + " has attacked you!") 
    while player.health > 0 and enemy.health > 0: 
    print(enemy.name[:1].upper() + enemy.name[1:], "health:", enemy.health) 
    print("Your health:", player.health) 
    cmd = input(">") 
    if cmd == "attack": 
     enemy.health -= player.atk(enemy) 
    if cmd == "run": 
     coin = random.choice(["heads", "tails"]) 
     if coin == "heads": 
     break 
     else: 
     print("You couldn't escape.") 
    if cmd == "equip": 
     target = input("Which item?\n>") 
     print(player.equip(target)) 
    player.health -= enemy.atk(player) 

    if enemy.health <= 0: 
    print("You defeated the", enemy.name + "!") 
    if enemy.drop != None: 
     return "Enemy defeated.\nThe " + enemy.name + " dropped a " + enemy.drop + "!" 
     dun.data[dun.pos][2].append(enemy.drop) 
    else: 
     return "Enemy defeated." 
    time.sleep(1.5) 
    out = 1 
    elif player.health <= 0: 
    print("You died fighting %s..." % enemy.name) 
    dun.pos == (0, 0) 
    player.inventory == [] 
    return "You reawaken in the same room you started in, pack empty..." 
    time.sleep(3) 

我已經導入隨機模塊和時間模塊,它只是不在片段中。

當序列結束時,它不會休眠並立即進入主遊戲循環(如果需要,我可以給它)。

除了混亂,我做錯了什麼?

+1

因爲你之前返回'睡眠函數調用? – thefourtheye

+0

這裏的裝飾器會很有用,例如@sleep_when_done(3) – nehz

回答

3

return語句立即退出您的功能。任何後面的代碼將不會運行。您可以sleep之前你return

例如:

time.sleep(1.5) 
return "Enemy defeated." 

但它可能使很多更有意義,你打電話給你的功能後,正好眠:

combat(...) 
time.sleep(5) 
+0

這個工程,我沒有意識到,回報立即結束。非常感謝你。 –