class GameMech:
def __init__(self ,aCharacter):
print("A battle is starting")
def getMP(self, aCharacter):
return aCharacter.mp
def getHP(aCharacter):
return aCharacter.hp
def getAtk(aCharacter):
return aCharacter.atk
def getDef(aCharacter):
return aCharacter.defense
def usePotion(aCharacter):
aCharacter.hp += 100
return aCharacter.hp
def useSpecial(self, aCharacter, target):
if aCharacter.mp >= 100:
target.hp -= 45
def dead(self, aCharacter):
return aCharacter.name +" is now dead"
def attack(self, aCharacter, target):
if target.hp - (aCharacter.atk/aCharacter.defense) <= 0:
dead(target)
else:
target.hp - aCharacter.atk/aCharacter.defense
print(getHP(target))
def guard(self, aCharacter):
print(aCharacter + "was unharmed")
if aCharacter.hp <= 50:
retaliation(aCharacter, target)
def retaliation(self ,aCharacter, target):
target.hp - (aCharacter.atk/10)
print(getHP(target))
def battleMenu(aNumber, self):
if aNumber == 1:
attack(aCharacter, target)
if aNumber == 2:
guard(aCharacter)
print(aCharacter + " was unharmed!")
if aNumber == 3:
useSpecial(aCharacter, target)
print(getHP(target))
if aNumber == 4:
heal = useItem(aCharacter)
print(heal)
def myTurn(self):
print("ATTACK")
print("GUARD")
print("SPECIAL")
print("ITEM")
aNumber = int(input("What would you like to do? "))
battleMenu(aNumber)
def oppTurn(self):
print("It is the opponent's turn")
randomNum = random.randint(1,4)
battleMenu(randomNum)
一些注意事项,显然由于这种格式化,你不能说我的所有方法实际上都在课堂下,但它们是。 你可以忽略前几个部分,我关注的部分是战斗菜单。 因此,我正在创建一个小文本游戏作为我自己的项目,纯粹的休闲没有学术或工作。对我来说,这只是一个小游戏,可以帮助我慢慢记住我对python的记忆。所以这就是我的游戏内容,角色类是另一个文件,没有什么重要的只有角色的属性(hp,mp,atk,def) 这是主要的
import random
import character
import battle
#create a battle menu
#and a character value check menu
#add buttons
def main():
char1 = character.Character("Charlie", 5000, 2000, 1500, 750)
char2 = character.Character("Mark", 2000, 4000, 2000, 900)
newGame = battle.GameMech(char1)
while char1.hp != 0 or char2.hp != 0:
newGame.myTurn()
newGame.oppTurn()
main()的 (不确定为什么它不包括我在代码片段中的main的定义) 任何我如何得到这个错误说“名称'battleMenu'没有定义”。 名称通常适用于变量是否正确?但是战斗菜单是一种方法,我有这个错误的原因吗?
Traceback (most recent call last):
File "E:\PythonGame\mainGame.py", line 22, in <module>
main()
File "E:\PythonGame\mainGame.py", line 20, in main
newGame.myTurn()
File "E:\PythonGame\battle.py", line 55, in myTurn
battleMenu(self,aNumber)
NameError: name 'battleMenu' is not defined
答案 0 :(得分:1)
要调用方法,您需要提及您正在调用它的实例,因此您需要执行self.battleMenu()
。您需要对代码中的所有方法调用进行类似的更改。您还需要为所有方法添加self
参数,以便这些更改可以正常工作。您还需要阅读the Python tutorial以了解Python基础知识。
答案 1 :(得分:0)
self.battleMenu(...) # note the "self" here
答案 2 :(得分:0)
你错误地调用它,def battleMenu(aNumber):
,你的函数没有被定义为实例函数,也没有被定义为静态方法。如果你想要一个静态函数,你应该首先将该方法注释为静态方法,通过使用@staticmethod
注释。
然后将您的函数称为 - GameMech.battleMenu(random)
。
如果您希望它是实例函数,请将定义更改为def battleMenu(self, aNumber):
,然后检查。