2011-06-14 68 views
-1

每當我調用我的start()函數時,在聲明它之後,我收到一個錯誤,說它不存在。我的完整代碼如下。爲什麼我的Python函數在被調用時啓動?

import random 
import time 
global monsters 
monsters = ['Goblin','Orc','Knight','Unicorn','Black Bear','White Dragon','Black Dragon','Dark Knight','Undead Corpse'] 
global player_level 
player_level = 1 
global player_exp 
global monster_level 
monster_level = monster_determ_easy 
player_exp = 0 
player_exp_n = 10 
global monster_attack 
global player_attack 
player_attack = random.randint(1,4) + player_level 
global monster_levels 
global monster_determ_easy 
global monster_determ_medium 
global monster_determ_hard 
global monster_determ_epic 
global attacks 
global gold 
gold = 0 
attacks = ['Punch','Fireball'] 
monster_determ_easy = random.randint(1,3) 
monster_levels_easy = player_level - monster_determ_easy 

monster_determ_medium = random.randint(1,3) 
monster_levels_medium = player_level + monster_determ_medium 

monster_determ_hard = random.randint(3,5) 
monster_levels_hard = player_level + monster_determ_hard 

monster_determ_epic = random.randint(5,10) 
monster_levels_epic = player_level + monster_determ_epic 

monster_attack = monsters_levels + random.randint(1,3) 

def start(): 
    if player_exp>=player_exp_n: 
      player_level=player_level+1 
      print "You've reached level ",player_level 
      gold=gold+random.randint(1,15) + player_level 
      print 'You were awared ',' gold!' 
      start() 
      command = raw_input(">") 
    if command == "fight": 
      player_attack = random.randint(1,4) + player_level 
      monster_attack = monsters_levels + random.randint(1,3) 
      choose_monster = random.choose(monsters) 
      print 'You encounter a level ',monster_determ_easy,choose_monster,'.' 
      time.sleep(1) 
      print 'Prepare to fight!' 
      strike = random.random() 
      if strike>=0.5: 
       if player_attack >= monster_attack: 
        print 'You slained the ',choose_monster,'!' 
        exp_choose = random.randint(1,5) + player_level 
        player_exp = player_exp + exp_choose 
        print 'You were awarded ',exp_choose,' XP!' 
        start() 

start() 
# This was just added 
+13

O h m y .. – 2011-06-14 20:42:37

+0

請參閱下面的評論。 – user578697 2011-06-14 20:43:44

+0

我想我們都開始了某個地方。 – 2011-06-14 20:44:04

回答

1

因爲它只是從內部調用。

+0

是的,我知道。但是嘗試將start()放在外部代碼的底部。它不起作用./ – user578697 2011-06-14 20:43:27

+0

也許告訴我們你怎麼稱呼它會有幫助。你說過你的完整代碼被粘貼了,所以我認爲這是你的問題。 – 2011-06-14 20:45:41

+0

如果上面的代碼位於一個模塊中並且導入它,則在調用它時需要包含模塊名稱:'game.start()'。 – 2011-06-14 20:46:22

2

因爲第一個if語句的計算結果爲false,所以您從來沒有機會設置命令變量。

+0

我不敢相信我錯過了。絕對正確。 – Covar 2011-06-14 21:24:09

相關問題