TypeError:Can't instantiate abstract class Ultraman with abstract methods sttack 报错
报错Can't instantiate abstract class Ultraman with abstract methods sttack
通过非常仔细的排查,发现错误如下:
1、单词拼写错误是诱发这个报错的直接原因
from abc import ABCMeta,abstractmethod
from random import randint,randrange class Fighter(object,metaclass=ABCMeta):
"""战斗者""" #通过__slots__魔法限定对象可以绑定的成员变量
__slots__ = ('_name','_hp') def __init__(self,name,hp):
"""
初始化方法
:param name: 名字
:param hp: 战斗值
"""
self._name = name
self._hp = hp @property
def name(self):
return self._name @property
def hp(self):
return self._hp @hp.setter
def hp(self,hp):
self._hp = hp if hp >= 0 else 0 @property
def alive(self):
return self._hp > 0 @abstractmethod
def sttack(self,other):
"""
攻击
:param other: 被攻击的对象
:return:
"""
pass class Ultraman(Fighter):
"""奥特曼"""
__slots__ = ('_name',"_hp","_mp") def __init__(self,name,hp,mp):
"""
初始化名字
:param name: 名字
:param hp: 生命值
:param mp: 魔术值
"""
super().__init__(name,hp)
self._mp = mp def attack(self,other):
other.hp -= randint(15,25) def huge_attack(self,other):
"""
穷极必杀技(打掉对方至少50点或3/4的血)
:param other: 被攻击对象
:return: 使用成功返回True否则返回False
""" if self._mp >= 50:
self._mp -= 50
injury = other.hp * 3//4
injury = injury if injury >= 50 else 50
other.hp -= injury
return True
else:
self.attack(other)
return False def magic_attack(self,others):
"""
魔法攻击
:param others: 被攻击的群体
:return: 使用魔法成功返回TRUE否则返回False """
if self._mp >= 20:
self._mp -= 20
for temp in others:
if temp.alive:
temp.hp -= randint(10,15)
return True
else:
return False def resume(self):
"""恢复魔法值"""
incr_point = randint(1,10)
self._mp += incr_point
return incr_point def __str__(self):
return '~~~%s奥特曼~~~\n'%self._name + \
'生命值:%d\n'%self._hp + \
'魔法值:%d\n'%self._mp class Monster(Fighter):
"""小怪兽""" __slots__ = ('_name','_hp') def attack(self,other):
other.hp -= randint(10,20) def __str__(self):
return '~~~%s小怪兽~~~\n' % self._name + \
'生命值:%d\n'%self._hp def is_any_alive(monsters):
"""判断有没有活着的小怪兽"""
for monster in monsters:
if monster.alive > 0:
return True
return False def select_alive_one(monsters):
"""选中一只活着的小怪兽"""
monsters_len = len(monsters)
while True:
index = randrange(monsters_len)
monster = monsters[index]
if monster.alive > 0:
return monster def display_info(ultraman,monsters):
"""显示奥特曼和小怪兽的信息"""
print(ultraman)
for monster in monsters:
print(monster,end = '') def main():
u = Ultraman('骆昊',1000,120)
m1 = Monster('狄仁杰',250)
m2 = Monster('白元芳',500)
m3 = Monster('张大头',750)
ms = [m1,m2,m3]
fight_round = 1
while u.alive and is_any_alive(ms):
print('=======第%02d回合======='%fight_round)
m = select_alive_one(ms) #选中一个小怪兽
skill = randint(1,10) #通过随机数选择使用哪种技能
if skill <= 6:#60%的概率使用普通攻击
print('%s使用普通攻击打了%s'%(u.name,m.nama))
u.attack(m)
print('%s的魔法值恢复了%d点'%(u.name,u.resume()))
elif skill <= 9:
if u.magic_attack(ms):
print('%s使用了魔法攻击.'%u.name)
else:
print('%s使用魔法失败.'%u.name)
else:
if u.huge_attack(m):
print('%s使用究极必杀技虐了%s'%(u.name,m.name))
else:
print('%s使用普通攻击必杀虐了%s'%(u.name,m.name))
print('%s的魔法值恢复了%d点.'%(u.name,u.resume())) if m.alive >0: #如果选中的小该收没有死就回寄奥特曼
print('%s回击了%s'%(m.name,u.name))
m.attack(u)
display_info(u,ms) #每个回合结束收显示奥特曼和小怪兽的信息
fight_round += 1
print('\n========战斗结束!========\n')
if u.alive >0:
print('%s奥特曼胜利!'%u.name) else:
print('小怪兽胜利!')
if __name__ == '__main__':
main()
2、还有一些缩进错误,导致运行时不符合预期效果。
修改后的代码如下:
from abc import ABCMeta,abstractmethod
from random import randint,randrange class Fighter(object,metaclass=ABCMeta):
"""战斗者""" #通过__slots__魔法限定对象可以绑定的成员变量
__slots__ = ('_name','_hp') def __init__(self,name,hp):
"""
初始化方法
:param name: 名字
:param hp: 战斗值
"""
self._name = name
self._hp = hp @property
def name(self):
return self._name @property
def hp(self):
return self._hp @hp.setter
def hp(self,hp):
self._hp = hp if hp >= 0 else 0 @property
def alive(self):
return self._hp > 0 @abstractmethod
# def sttack(self,other):
def attack(self, other):
"""
攻击
:param other: 被攻击的对象
:return:
"""
pass class Ultraman(Fighter):
"""奥特曼"""
__slots__ = ('_name',"_hp","_mp") def __init__(self,name,hp,mp):
"""
初始化名字
:param name: 名字
:param hp: 生命值
:param mp: 魔术值
"""
super().__init__(name,hp)
self._mp = mp def attack(self,other):
other.hp -= randint(15,25) def huge_attack(self,other):
"""
穷极必杀技(打掉对方至少50点或3/4的血)
:param other: 被攻击对象
:return: 使用成功返回True否则返回False
""" if self._mp >= 50:
self._mp -= 50
injury = other.hp * 3//4
injury = injury if injury >= 50 else 50
other.hp -= injury
return True
else:
self.attack(other)
return False def magic_attack(self,others):
"""
魔法攻击
:param others: 被攻击的群体
:return: 使用魔法成功返回TRUE否则返回False """
if self._mp >= 20:
self._mp -= 20
for temp in others:
#之前是这样写的
# if temp.alive:
# temp.hp -= randint(10,15)
if temp.alive:
temp.hp -= randint(10,15)
return True
else:
return False def resume(self):
"""恢复魔法值"""
incr_point = randint(1,10)
self._mp += incr_point
return incr_point def __str__(self):
return '~~~%s奥特曼~~~\n'%self._name + \
'生命值:%d\n' % self._hp + \
'魔法值:%d\n' % self._mp class Monster(Fighter):
"""小怪兽""" __slots__ = ('_name','_hp') def attack(self,other):
other.hp -= randint(10,20) def __str__(self):
return '~~~%s小怪兽~~~\n' % self._name + \
'生命值:%d\n'%self._hp def is_any_alive(monsters):
"""判断有没有活着的小怪兽"""
for monster in monsters:
if monster.alive > 0:
return True
return False def select_alive_one(monsters):
"""选中一只活着的小怪兽"""
monsters_len = len(monsters)
while True:
index = randrange(monsters_len)
monster = monsters[index]
if monster.alive > 0:
return monster def display_info(ultraman,monsters):
"""显示奥特曼和小怪兽的信息"""
print(ultraman)
for monster in monsters:
print(monster,end = '') def main():
u = Ultraman('骆昊',1000,120)
m1 = Monster('狄仁杰',250)
m2 = Monster('白元芳',500)
m3 = Monster('张大头',750)
ms = [m1,m2,m3]
fight_round = 1
while u.alive and is_any_alive(ms):
print('=======第%02d回合======='%fight_round)
m = select_alive_one(ms) #选中一个小怪兽
skill = randint(1,10) #通过随机数选择使用哪种技能
if skill <= 6:#60%的概率使用普通攻击
print('%s使用普通攻击打了%s'%(u.name,m.name))
u.attack(m)
print('%s的魔法值恢复了%d点'%(u.name,u.resume()))
elif skill <= 9:
if u.magic_attack(ms):
print('%s使用了魔法攻击.' % u.name)
else:
print('%s使用魔法失败.'% u.name)
else:
if u.huge_attack(m):
print('%s使用究极必杀技虐了%s' % (u.name,m.name))
else:
print('%s使用普通攻击必杀虐了%s' % (u.name,m.name))
print('%s的魔法值恢复了%d点.'%(u.name,u.resume())) if m.alive >0: #如果选中的小该收没有死就回寄奥特曼
print('%s回击了%s'%(m.name,u.name))
m.attack(u)
display_info(u,ms) #每个回合结束收显示奥特曼和小怪兽的信息
fight_round += 1
print('\n========战斗结束!========\n')
if u.alive >0:
print('%s奥特曼胜利!'%u.name) else:
print('小怪兽胜利!')
if __name__ == '__main__':
main()
运行结果:
=======第01回合=======
骆昊使用普通攻击打了狄仁杰
骆昊的魔法值恢复了10点
狄仁杰回击了骆昊
~~~骆昊奥特曼~~~
生命值:986
魔法值:130 ~~~狄仁杰小怪兽~~~
生命值:231
~~~白元芳小怪兽~~~
生命值:500
~~~张大头小怪兽~~~
生命值:750
=======第02回合=======
骆昊使用了魔法攻击.
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:968
魔法值:110 ~~~狄仁杰小怪兽~~~
生命值:220
~~~白元芳小怪兽~~~
生命值:486
~~~张大头小怪兽~~~
生命值:740
=======第03回合=======
骆昊使用了魔法攻击.
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:949
魔法值:90 ~~~狄仁杰小怪兽~~~
生命值:205
~~~白元芳小怪兽~~~
生命值:473
~~~张大头小怪兽~~~
生命值:729
=======第04回合=======
骆昊使用普通攻击打了白元芳
骆昊的魔法值恢复了7点
白元芳回击了骆昊
~~~骆昊奥特曼~~~
生命值:934
魔法值:97 ~~~狄仁杰小怪兽~~~
生命值:205
~~~白元芳小怪兽~~~
生命值:448
~~~张大头小怪兽~~~
生命值:729
=======第05回合=======
骆昊使用普通攻击打了白元芳
骆昊的魔法值恢复了6点
白元芳回击了骆昊
~~~骆昊奥特曼~~~
生命值:924
魔法值:103 ~~~狄仁杰小怪兽~~~
生命值:205
~~~白元芳小怪兽~~~
生命值:426
~~~张大头小怪兽~~~
生命值:729
=======第06回合=======
骆昊使用普通攻击打了白元芳
骆昊的魔法值恢复了4点
白元芳回击了骆昊
~~~骆昊奥特曼~~~
生命值:906
魔法值:107 ~~~狄仁杰小怪兽~~~
生命值:205
~~~白元芳小怪兽~~~
生命值:410
~~~张大头小怪兽~~~
生命值:729
=======第07回合=======
骆昊使用普通攻击打了白元芳
骆昊的魔法值恢复了10点
白元芳回击了骆昊
~~~骆昊奥特曼~~~
生命值:895
魔法值:117 ~~~狄仁杰小怪兽~~~
生命值:205
~~~白元芳小怪兽~~~
生命值:390
~~~张大头小怪兽~~~
生命值:729
=======第08回合=======
骆昊使用普通攻击打了狄仁杰
骆昊的魔法值恢复了3点
狄仁杰回击了骆昊
~~~骆昊奥特曼~~~
生命值:881
魔法值:120 ~~~狄仁杰小怪兽~~~
生命值:186
~~~白元芳小怪兽~~~
生命值:390
~~~张大头小怪兽~~~
生命值:729
=======第09回合=======
骆昊使用究极必杀技虐了狄仁杰
狄仁杰回击了骆昊
~~~骆昊奥特曼~~~
生命值:868
魔法值:70 ~~~狄仁杰小怪兽~~~
生命值:47
~~~白元芳小怪兽~~~
生命值:390
~~~张大头小怪兽~~~
生命值:729
=======第10回合=======
骆昊使用普通攻击打了狄仁杰
骆昊的魔法值恢复了4点
狄仁杰回击了骆昊
~~~骆昊奥特曼~~~
生命值:851
魔法值:74 ~~~狄仁杰小怪兽~~~
生命值:32
~~~白元芳小怪兽~~~
生命值:390
~~~张大头小怪兽~~~
生命值:729
=======第11回合=======
骆昊使用了魔法攻击.
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:838
魔法值:54 ~~~狄仁杰小怪兽~~~
生命值:20
~~~白元芳小怪兽~~~
生命值:375
~~~张大头小怪兽~~~
生命值:716
=======第12回合=======
骆昊使用普通攻击打了张大头
骆昊的魔法值恢复了6点
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:824
魔法值:60 ~~~狄仁杰小怪兽~~~
生命值:20
~~~白元芳小怪兽~~~
生命值:375
~~~张大头小怪兽~~~
生命值:701
=======第13回合=======
骆昊使用普通攻击打了狄仁杰
骆昊的魔法值恢复了4点
~~~骆昊奥特曼~~~
生命值:824
魔法值:64 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:375
~~~张大头小怪兽~~~
生命值:701
=======第14回合=======
骆昊使用究极必杀技虐了白元芳
白元芳回击了骆昊
~~~骆昊奥特曼~~~
生命值:805
魔法值:14 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:94
~~~张大头小怪兽~~~
生命值:701
=======第15回合=======
骆昊使用普通攻击打了张大头
骆昊的魔法值恢复了7点
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:787
魔法值:21 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:94
~~~张大头小怪兽~~~
生命值:678
=======第16回合=======
骆昊使用普通攻击必杀虐了白元芳
骆昊的魔法值恢复了4点.
白元芳回击了骆昊
~~~骆昊奥特曼~~~
生命值:777
魔法值:25 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:78
~~~张大头小怪兽~~~
生命值:678
=======第17回合=======
骆昊使用普通攻击必杀虐了白元芳
骆昊的魔法值恢复了5点.
白元芳回击了骆昊
~~~骆昊奥特曼~~~
生命值:766
魔法值:30 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:63
~~~张大头小怪兽~~~
生命值:678
=======第18回合=======
骆昊使用普通攻击打了张大头
骆昊的魔法值恢复了5点
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:748
魔法值:35 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:63
~~~张大头小怪兽~~~
生命值:656
=======第19回合=======
骆昊使用普通攻击打了张大头
骆昊的魔法值恢复了2点
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:732
魔法值:37 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:63
~~~张大头小怪兽~~~
生命值:631
=======第20回合=======
骆昊使用了魔法攻击.
白元芳回击了骆昊
~~~骆昊奥特曼~~~
生命值:718
魔法值:17 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:53
~~~张大头小怪兽~~~
生命值:617
=======第21回合=======
骆昊使用普通攻击打了白元芳
骆昊的魔法值恢复了3点
白元芳回击了骆昊
~~~骆昊奥特曼~~~
生命值:702
魔法值:20 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:35
~~~张大头小怪兽~~~
生命值:617
=======第22回合=======
骆昊使用普通攻击打了张大头
骆昊的魔法值恢复了8点
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:683
魔法值:28 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:35
~~~张大头小怪兽~~~
生命值:602
=======第23回合=======
骆昊使用普通攻击打了张大头
骆昊的魔法值恢复了6点
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:671
魔法值:34 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:35
~~~张大头小怪兽~~~
生命值:584
=======第24回合=======
骆昊使用了魔法攻击.
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:652
魔法值:14 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:20
~~~张大头小怪兽~~~
生命值:570
=======第25回合=======
骆昊使用魔法失败.
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:635
魔法值:14 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:20
~~~张大头小怪兽~~~
生命值:570
=======第26回合=======
骆昊使用普通攻击必杀虐了张大头
骆昊的魔法值恢复了1点.
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:615
魔法值:15 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:20
~~~张大头小怪兽~~~
生命值:555
=======第27回合=======
骆昊使用普通攻击打了张大头
骆昊的魔法值恢复了10点
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:600
魔法值:25 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:20
~~~张大头小怪兽~~~
生命值:540
=======第28回合=======
骆昊使用普通攻击打了张大头
骆昊的魔法值恢复了3点
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:589
魔法值:28 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:20
~~~张大头小怪兽~~~
生命值:521
=======第29回合=======
骆昊使用普通攻击打了白元芳
骆昊的魔法值恢复了3点
白元芳回击了骆昊
~~~骆昊奥特曼~~~
生命值:575
魔法值:31 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:2
~~~张大头小怪兽~~~
生命值:521
=======第30回合=======
骆昊使用普通攻击打了张大头
骆昊的魔法值恢复了10点
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:559
魔法值:41 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:2
~~~张大头小怪兽~~~
生命值:506
=======第31回合=======
骆昊使用普通攻击打了白元芳
骆昊的魔法值恢复了6点
~~~骆昊奥特曼~~~
生命值:559
魔法值:47 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:506
=======第32回合=======
骆昊使用了魔法攻击.
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:546
魔法值:27 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:494
=======第33回合=======
骆昊使用了魔法攻击.
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:529
魔法值:7 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:482
=======第34回合=======
骆昊使用普通攻击打了张大头
骆昊的魔法值恢复了1点
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:511
魔法值:8 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:463
=======第35回合=======
骆昊使用普通攻击打了张大头
骆昊的魔法值恢复了2点
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:495
魔法值:10 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:442
=======第36回合=======
骆昊使用普通攻击打了张大头
骆昊的魔法值恢复了9点
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:485
魔法值:19 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:417
=======第37回合=======
骆昊使用普通攻击打了张大头
骆昊的魔法值恢复了2点
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:471
魔法值:21 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:396
=======第38回合=======
骆昊使用普通攻击打了张大头
骆昊的魔法值恢复了9点
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:459
魔法值:30 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:381
=======第39回合=======
骆昊使用普通攻击打了张大头
骆昊的魔法值恢复了10点
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:439
魔法值:40 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:365
=======第40回合=======
骆昊使用普通攻击打了张大头
骆昊的魔法值恢复了2点
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:419
魔法值:42 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:349
=======第41回合=======
骆昊使用普通攻击打了张大头
骆昊的魔法值恢复了8点
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:404
魔法值:50 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:324
=======第42回合=======
骆昊使用了魔法攻击.
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:390
魔法值:30 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:313
=======第43回合=======
骆昊使用普通攻击打了张大头
骆昊的魔法值恢复了3点
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:375
魔法值:33 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:290
=======第44回合=======
骆昊使用普通攻击打了张大头
骆昊的魔法值恢复了4点
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:358
魔法值:37 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:273
=======第45回合=======
骆昊使用了魔法攻击.
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:341
魔法值:17 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:263
=======第46回合=======
骆昊使用魔法失败.
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:326
魔法值:17 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:263
=======第47回合=======
骆昊使用普通攻击打了张大头
骆昊的魔法值恢复了3点
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:316
魔法值:20 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:244
=======第48回合=======
骆昊使用普通攻击打了张大头
骆昊的魔法值恢复了4点
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:297
魔法值:24 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:229
=======第49回合=======
骆昊使用普通攻击打了张大头
骆昊的魔法值恢复了7点
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:285
魔法值:31 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:209
=======第50回合=======
骆昊使用了魔法攻击.
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:267
魔法值:11 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:195
=======第51回合=======
骆昊使用魔法失败.
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:257
魔法值:11 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:195
=======第52回合=======
骆昊使用普通攻击必杀虐了张大头
骆昊的魔法值恢复了2点.
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:242
魔法值:13 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:180
=======第53回合=======
骆昊使用魔法失败.
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:224
魔法值:13 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:180
=======第54回合=======
骆昊使用普通攻击打了张大头
骆昊的魔法值恢复了1点
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:214
魔法值:14 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:157
=======第55回合=======
骆昊使用普通攻击必杀虐了张大头
骆昊的魔法值恢复了3点.
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:202
魔法值:17 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:133
=======第56回合=======
骆昊使用普通攻击打了张大头
骆昊的魔法值恢复了2点
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:190
魔法值:19 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:113
=======第57回合=======
骆昊使用魔法失败.
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:173
魔法值:19 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:113
=======第58回合=======
骆昊使用普通攻击打了张大头
骆昊的魔法值恢复了4点
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:161
魔法值:23 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:96
=======第59回合=======
骆昊使用了魔法攻击.
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:149
魔法值:3 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:83
=======第60回合=======
骆昊使用普通攻击打了张大头
骆昊的魔法值恢复了6点
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:138
魔法值:9 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:58
=======第61回合=======
骆昊使用普通攻击打了张大头
骆昊的魔法值恢复了1点
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:120
魔法值:10 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:37
=======第62回合=======
骆昊使用普通攻击打了张大头
骆昊的魔法值恢复了10点
张大头回击了骆昊
~~~骆昊奥特曼~~~
生命值:101
魔法值:20 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:14
=======第63回合=======
骆昊使用普通攻击必杀虐了张大头
骆昊的魔法值恢复了2点.
~~~骆昊奥特曼~~~
生命值:101
魔法值:22 ~~~狄仁杰小怪兽~~~
生命值:0
~~~白元芳小怪兽~~~
生命值:0
~~~张大头小怪兽~~~
生命值:0 ========战斗结束!======== 骆昊奥特曼胜利!
TypeError:Can't instantiate abstract class Ultraman with abstract methods sttack 报错的更多相关文章
- Module build failed: TypeError: this.getResolve is not a function at Object.loader sass报错!(亲测有效!~~)
vue安装node-sass编译报错 在搭建vue脚手架 或者是在vue项目中,想使用sass的功能,需先安装如下 npm install node-sass --save-dev //安装node- ...
- Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient报错,问题排查
背景 最近在整合pyspark与hive,新安装spark-2.3.3以客户端的方式访问hive数据,运行方式使用spark on yarn,但是在配置spark读取hive数据的时候,这里直接把hi ...
- “TypeError: list indices must be integers or slices, not str”有关报错解决方案
- Bootstap datetimepicker报错TypeError: intermediate value
Bootstrap datetimepicker有多个版本,官方的链接中,只是datepicker,没有时间的选择,原版的datetimepicker也不再更新,不能用新版的jquery.现在http ...
- [java报错]Could not instantiate listener XXXXXX
写在开头的话: 兜兜转转,辞去了深圳的工作,回到了武汉,从事的居然一度是我最不想学的语言-java,曾经以为自己并不会java,但是上手之后,发现语言都是相通的,自己一度排斥学习java真的是不能再傻 ...
- Jquery报错:Uncaught TypeError: ((m.event.special[e.origType] || (intermediate value)).handle || e.handler).apply is not a function
页面中出现了Jquery报错:Uncaught TypeError: ((m.event.special[e.origType] || (intermediate value)).handle || ...
- Bootstap datetimepicker报错TypeError: intermediate value(转)
原文转自:http://blog.chinaunix.net/uid-20332519-id-5733546.html Bootstrap datetimepicker有多个版本,官方的链接中,只是d ...
- [转载]UEditor报错TypeError: me.body is undefined
本文转载来自:UEditor报错TypeError: me.body is undefined 今天在使用UEditor的setContent的时候报错,报错代码如下 TypeError: me.bo ...
- Vue的报错:Uncaught TypeError: Cannot assign to read only property 'exports' of object '#<Object>'
Vue的报错:Uncaught TypeError: Cannot assign to read only property 'exports' of object '#<Object>' ...
随机推荐
- 为什么大家都说Java中只有值传递?
最近跟Java中的值传递和引用传递杠上了,一度怀疑人生.查了很多资料,加上自己的理解,终于搞清楚了,什么是值传递和引用传递.也搞明白了,为什么大家都说Java只有值传递,没有引用传递.原来,我一直以来 ...
- Qt5学习(2)
1.学习了qt quick application 这是一种跟application不同的设计方式.主要就是靠“拖拖拽拽”,然后设置属性(颜色,大小),布局(margins等),然后要注意控件的从属关 ...
- FlashFXP 5.0.0官方中文破解版,附文件下载地址和破解码
FlashFXP 5.0.0官方中文破解版是一个功能强大的 FXP/FTP 软件,融合了一些其他优秀 FTP 软件的优点,如像 CuteFTP 一样可以比较文件夹,支持彩色文字显示:像 BpFTP 支 ...
- php5.6.39 源码安装
1 安装依赖库 yum install -y autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel li ...
- Scala 学习(3)之「类——基本概念1」
类 小提示:可以通过:paste进入 Scala 的多行模式,输入对应的代码块之后,按ctrl + D退出多行模式,然后再调用刚才输入的函数或者方法进行测试 //定义类,包含 field 以及方法 c ...
- 使用Merkle树检测数据不一致(翻译)
背景 Cassandra的逆熵功能使用Merkle树来检测副本之间的数据不一致. 定义 Merkle树是一种哈希树,其中的叶子包含各个数据块的哈希值,父节点包含其各自的子节点的哈希值.它提供了一种有效 ...
- cogs 186. [USACO Oct08] 牧场旅行 树链剖分 LCA
186. [USACO Oct08] 牧场旅行 ★★☆ 输入文件:pwalk.in 输出文件:pwalk.out 逐字节对比时间限制:1 s 内存限制:128 MB n个被自然地编号为 ...
- 2019 ICCV、CVPR、ICLR之视频预测读书笔记
2019 ICCV.CVPR.ICLR之视频预测读书笔记 作者 | 文永亮 学校 | 哈尔滨工业大学(深圳) 研究方向 | 视频预测.时空序列预测 ICCV 2019 CVP github地址:htt ...
- WingIDE注册破解方法 CalcActivationCode.py
1) 安装WingIDE成功后启动,激活时输入license id CN123-12345-12345-12345 2) 点击Continue后弹框,拷贝框中的request code 3) 修改Py ...
- 13.系统总结static
static修饰属性和方法: package com.oop.demo08; //static :被static修饰的变量或者方法随类加载,从属于类,当然对象也可以调用 public class St ...