Python战斗序列

2024-05-16 05:16:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图建立一个简单的战斗序列,用户选择他们的“类”(战士,弓箭手,法师),以及他们想战斗的怪物(妖精,巨魔,兽人)。在

到目前为止,我掌握的代码是:

import random 

def choosePlayerClass():

    class Warrior:
        health = 100
        attack = 10
        defense = 10

    class Archer:
        health = 75
        attack = 15
        defense = 7

    class Mage:
        health = 50
        attack = 20
        defense = 5


    playerChoice = input("What class do you want to be? (Warrior, Archer, Mage)? ")
    if playerChoice == "Warrior":
        Player = Warrior()
    elif playerChoice == "Archer":
        Player = Archer()
    elif playerChoice == "Mage":
        Player = Mage()

    return Player

def chooseMonsterClass():

    class Goblin:
        health = 25
        attack = 10
        defense = 5
        description = "Goblin"

    class Troll:
        health = 50
        attack = 13
        defense = 7
        description = "Troll"

    class Orc:
        health = 75
        attack = 15
        defense = 10
        description = "Orc"  

    monsterChoice = input("What kind of monster do you want to fight? (Goblin, Troll, Orc)? ")

    if monsterChoice == "Goblin":
        Monster = Goblin()
    elif monsterChoice == "Troll":
        Monster = Troll()
    elif monsterChoice == "Orc":
        Monster = Orc

    return Monster

def fightSequence():
    Player = choosePlayerClass()
    Monster = chooseMonsterClass()
    encounter = 1
    turn = 'player'
    while encounter == 1:
        if turn == 'player':
            action = input("What would you like to do (Attack)? ")
            if action == 'Attack':
                encounter = humanAttack(Player)
                turn = 'monster'
        elif turn == 'monster':
            encounter = monsterAttack(Monster)
            turn = 'player'


fightSequence()

我得到一个错误:

回溯(最近一次呼叫): 文件“C:\Program Files(x86)\Wing IDE 101 4.1\src\debug\t服务器_沙盒.py“,第109行,in 文件“C:\Program Files(x86)\Wing IDE 101 4.1\src\debug\t服务器_沙盒.py“,102号线,按战斗顺序排列 文件“C:\Program Files(x86)\Wing IDE 101 4.1\src\debug\t服务器_沙盒.py“,第63行,在人肉攻击 builtins.name错误:未定义全局名称“怪物”

谢谢!在


Tags: turnclassplayerhealthelifdefenseattackarcher
2条回答

在这里初始化怪物变量:

if monsterChoice == "Goblin":
    Monster = Goblin()
elif monsterChoice == "Troll":
    Monster = Troll()
elif monsterChoice == "Orc":
    Monster = Orc()

但是,如果这些都不是真的,也没有输入if语句呢?您应该在if语句之前使用默认值设置变量,以便处理用户输入一些无意义的内容:

^{pr2}$

最好还是把整个事情放在一个循环中,当给出一个无意义的竞争时,让用户输入一个有效的比赛。在

while True:
    monsterChoice = input("What kind of monster do you want to fight? (Goblin, Troll, Orc)? ")
    if monsterChoice in ["Goblin","Troll","Orc"]:
        break
    else:
        print "Unrecognized race requested, please select one of Goblin, Troll, Orc."

您希望在函数chooseMonsterClassfightSequence中的开头使用一个全局声明global Monster。两个都试试(同时)。所以应该是:

import random 

def choosePlayerClass():

    class Warrior:
        health = 100
        attack = 10
        defense = 10

    class Archer:
        health = 75
        attack = 15
        defense = 7

    class Mage:
        health = 50
        attack = 20
        defense = 5


    playerChoice = input("What class do you want to be? (Warrior, Archer, Mage)? ")
    if playerChoice == "Warrior":
        Player = Warrior()
    elif playerChoice == "Archer":
        Player = Archer()
    elif playerChoice == "Mage":
        Player = Mage()

    return Player

def chooseMonsterClass():
    global Monster
    class Goblin:
        health = 25
        attack = 10
        defense = 5
        description = "Goblin"

    class Troll:
        health = 50
        attack = 13
        defense = 7
        description = "Troll"

    class Orc:
        health = 75
        attack = 15
        defense = 10
        description = "Orc"  

    monsterChoice = input("What kind of monster do you want to fight? (Goblin, Troll, Orc)? ")

    if monsterChoice == "Goblin":
        Monster = Goblin()
    elif monsterChoice == "Troll":
        Monster = Troll()
    elif monsterChoice == "Orc":
        Monster = Orc

    return Monster

def fightSequence():
    global Monster
    Player = choosePlayerClass()
    Monster = chooseMonsterClass()
    encounter = 1
    turn = 'player'
    while encounter == 1:
        if turn == 'player':
            action = input("What would you like to do (Attack)? ")
            if action == 'Attack':
                encounter = humanAttack(Player)
                turn = 'monster'
        elif turn == 'monster':
            encounter = monsterAttack(Monster)
            turn = 'player'


fightSequence()

相关问题 更多 >