我有一个错误,我似乎无法修复我的microbit(第55行类型错误'没有类型'对象不可订阅)

时间:2018-03-12 12:12:33

标签: python bbc-microbit

我的代码是针对我试图创建的游戏,但代码的底部不断出现错误。我在这里留下了一份代码,请你帮忙吗?错误在第55行[display.scroll("你被杀......")]

from microbit import* 
import random
Character = []
Enemy = []
def RollDice():
    Diceroll1 = random.randint(1,6)
    Diceroll2 = random.randint(1,6)
    Total = Diceroll1 + Diceroll2
    return Total
def NewCharacter():
    Health = 100
    Strength = random.randint(30,80)
    Defence = random.randint(20,60)
    Character.append(Health)
    Character.append(Strength)
    Character.append(Defence)
    #display.scroll("You have 100 health, your strength is" + str(Strength) + " and you have" + str(Defence) + "defence.")
def NewEnemy():
    sleep(1000)
    MonsterTypes = ["Basilisk","Banshee","Behemoth"]
    Names = ["Ben","Bethany","Bobby", "Bella"]
    Enemy = []
    n1 = (random.choice(Names))
    n2 = (random.choice(MonsterTypes))
    Enemy.append(n1+ " the " +n2)
    Enemy.append(random.randint(30,70))
    Enemy.append(random.randint(35,70))
    Enemy.append(random.randint(25,70))
    return Enemy
def fight():
    Character = NewCharacter()
    while int(Character[0])>0:
        Enemy = NewEnemy()
        display.scroll (str(Enemy[0]) + "is here to fight!")
        while int(Enemy[1]>0) and int(Character[0])>0:
            display.scroll("A(Attack) or B(Block)")
            if button_a.is_pressed():
                Total = RollDice() + int(Character[1]) - int(Enemy[3])
                if Total < 1:
                    Total = 1
                Enemy[1] -= Total
                if int(Enemy[1]) < 0:
                    Enemy[1] = 0
                display.scroll (str(Enemy[0]) + "'s health is" + str(Enemy[1]) + ".")
                if int(Enemy[1]) < 1:
                    display.scroll ("You have slain" + str(Enemy[0]) + "!")
                else:
                    display.scroll (str(Enemy[0]) + "is attacking you!")
                    Total = RollDice() + int(Enemy[2]) - int(Character[2])
                    Character[0] -= Total
                    if int(Character[0]) < 0:
                        Character[0] = 0
                    display.scroll ("Your health is" + str(Character[0]) + ".")
                    if int(Character[0]) < 1:
                        display.scroll ("You were slain...")                       
fight()

1 个答案:

答案 0 :(得分:0)

问题出在您fight()函数的乞讨位置:

def fight():
    Character = NewCharacter()
    while int(Character[0])>0:

NewCharacter是一个不返回任何内容的函数,因此与执行相同:

def fight():
    Character = None
    while int(Character[0])>0:

您可以在不保存返回值的情况下调用函数NewCharacter(),然后检查字符全局。