2017-12-31 49 views
0

は私のコードが正常に動作していない、それは私がそれを定義したとき、敵が定義されていないことを言う:名「敵定義されていません - Pythonの

class Gnome: 
    def __init__(enemy, name): 
     enemy.name = name 
     enemy.health2 = 50 
     enemy.health = enemy.health2 
     enemy.attack = 7 
     enemy.goldgain = 6 
GnomeIG = Gnome("Gnome") 

class Goblin: 
    def __init__(enemy, name): 
     enemy.name = name 
     enemy.health2 = 38 
     enemy.health = enemy.health2 
     enemy.attack = 5 
     enemy.goldgain = 3 
GoblinIG = Goblin("Goblin") 

class Wolf: 
    def __init__(enemy, name): 
     enemy.name = name 
     enemy.health2 = 20 
     enemy.health = enemy.health2 
     enemy.attack = 3 
     enemy.goldgain = 1 
WolfIG = Wolf("Wolf") 

これはゲームである:

def prefight(): 
    global enemy 
    enemynum = random.randint(1, 3) 
    if enemynum == "1": 
     enemy = GnomeIG 
    elif enemynum == "2": 
     enemy = GoblinIG 
    elif enemynum == "3": 
     enemy = WolfIG 
    fight() 

'enemy.something'の行はすべて、定義されていないというエラーを出します。

def fight(): 
    print("You have encountered a %s!" % enemy.name) 
    print("Player Life: %d/%d | Enemy Life: %i/%i" % (PlayerIG.health, 
      PlayerIG.health2, enemy.health, enemy.health2)) 
    print("Potions: %i\n" % PlayerIG.potions) 
    print("1. Attack") 
    print("2. Drink Potion") 
    print("3. Run") 
    option = input("> ") 
    if option == "1": 
     attack() 
    elif option == "2": 
     drinkpotion() 
    elif option == "3": 
     run() 
    else: 
     fight() 

エラー:

ファイル "C:/ユーザー/レオ/ PycharmProjects/RPGメニュープロジェクト/ rpg.py"、行231、

メイン

(中)

ファイル「C :/ユーザー/レオ/ PycharmProjects/RPGメニュープロジェクト/ rpg.py "51行、メイン

開始()

ファイルで" C:/ユーザーS /レオ/ PycharmProjects/RPGメニュープロジェクト/ rpg.py」、ライン65、スタートで

START1()

ファイル "C:/ユーザー/レオ/ PycharmProjects/RPGメニュープロジェクト/ rpg.py"、ライン84、START1

野生()

ファイル "C:/ユーザー/レオ/ PycharmProjects/RPGメニュープロジェクトは/ rpg.py" 野生

戦いで、ライン104、()

ファイル "C:/ Users/Leo/PycharmProjects/RPG Proj /rpg.py」戦いでは、ライン118、

印刷( "あなたが遭遇している%sの" %のenemy.name!)NameErrorが

:名 '敵' が定義されていない

+1

それ。 – wwii

+0

@wwiiiどうすればいいですか?私はPythonの初心者です。これは私の知識の大部分です。どんな助けも素晴らしいでしょう、ありがとう。 – coolleo63

+0

[チュートリアル](https://docs.python.org/3/tutorial/index.html)にアクセスして、Pythonが提供している問題の解決に役立つツールの概要を確認してください。残念ながら、これは練習やディスカッションフォーラムではありません。 – wwii

答えて

1

この行コードの整数

enemynum = random.randint(1, 3) 

1〜3あなたの条件文を生成し、文字列に対してしかしながら、試験。

if enemynum == "1": 

これは文字列を整数に同一視することはありませんので、あなたの場合またはのelif文のどれもがこれまでに入力されませんので、敵が定義されないことを意味します。例えば、この問題を解決enemynumが1に等しいかどうかを確認するあなたの場合とELIFステートメントを変更する、2、又は整数として3 する

あなたは(https://docs.python.org/3/tutorial/controlflow.html#defining-functions)[ `enemy`パラメータで` fight`を定義]と通話敵を渡すことができ

if enemynum == 1: 
    enemy = GnomeIG 
+0

正しい。私は[random.choice](https://docs.python.org/3/library/random.html#random.choice)を使用して条件を完全に削除することを検討します: 'enemy = random.choice([GnomeIG、GoblinIG、WolfIG ]) ' –

+0

@ YannVernierこれは少し助けたかもしれませんが、まだ定義されていないことを示しています。 – coolleo63

関連する問題