ということで、テキストアドベンチャーゲームを作っていて、現在敵を作っています。私のクラス random_enemies は、キャラクターが戦うためのトラッシュモブを作成します。その中には、弱い、通常、強いなどと呼ばれる関数があり、それがどれであるかに応じてキャラクターに合わせてスケーリングされます。random_enemies.weak を呼び出すと、(名前エラー: グローバル変数 "p" が定義されていません) と表示されます。
import random
from character import *
from player import *
class random_enemies(character):
def __init__(self,name,hp,maxhp,attack_damage,ability_power,exp):
super(random_enemies,self).__init__(name,hp,maxhp)
self.attack_damage = attack_damage
self.ability_power = ability_power
self.exp = exp
def weak():
self.hp = random.randint(p.maxhp/10, p.maxhp/5)
self.attack_damage = None
self.ability_power = None
self.exp = None
from character import*
class player(character):
def __init__(self,name,hp,maxhp,attack_damage,ability_power):
super(player,self).__init__(name, hp, maxhp)
self.attack_damage = attack_damage
self.ability_power = ability_power
これは私のプレーヤー クラスで、以下はプレーヤーが「maxhp」を取得するクラスです。
class character(object):
def __init__(self,name,hp,maxhp):
self.name = name
self.hp = hp
self.maxhp = maxhp
def attack(self,other):
pass
p=player(Players_name, 100, 100, 10, 5,)
while (p.hp>0):
a=input("What do you want to do?")
if a=="Instructions":
Instructions()
elif a=="Commands":
Commands()
elif a=="Fight":
print("Level",wave,"Wave Begins")
if wave < 6:
b = random_enemies.weak()
print("A",b,"Appeared!")
print("Stats of",b, ": \n Health=", b.hp,"Attack Damage=",b.attack_damage)
continue
エラーが発生するまで、すべてが機能しているかどうかをテストするために、これを非常に迅速に作成しました。これは、random_enemies.weak() が呼び出された場所でもあります。また、ここで「p」とは何かを定義しました。