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>' ...
随机推荐
- llinux重启、用户切换、注销命令
一.指令 shutdown命令 shutdown -h now //立即关机 shutdown -h 2 //分钟后关机 shutdown -r now //立即重启 shutdown -r 1 // ...
- centos7+docker+elasticsearch 安装记录+踩坑
版本: cenos7 :3.10.0-957.21.3.el7.x86_64 (内核需>=3.10 才可以安装) docker: yum安装版本为1.13.1 elasticsearch: 6 ...
- windebug(转载别人的节选)
问题一:WinDBG分X86和X64两个版本 如果你用的是32位的WinDBG,那直接打开就行:你如果用的是64位的版本,那么如果调试64位代码也直接打开,如果调试x86的代码,要使用Wow64下的W ...
- asp.net core系列 74 Exceptionless服务端安装
一. Docker安装 Docker 要求版本Docker 18.09.0+以上 安装地址:https://www.runoob.com/docker/windows-docker-insta ...
- Vuex入门实践(中)-多module中的state、mutations、actions和getters
一.前言 上一篇文章<Vuex入门实践(上)>,我们一共实践了vuex的这些内容: 1.在state中定义共享属性,在组件中可使用[$store.state.属性名]访问共享属性 2.在m ...
- OpenStack Identity API v3
Table Of Contents OpenStack Identity API v3 What’s New in Version 3.7 What’s New in Version 3.6 What ...
- 快到极致的Android模拟器——Genymotion
转载声明:Ryan的博客文章欢迎您的转载,但在转载的同时,请注明文章的来源出处,不胜感激! :-)http://my.oschina.net/ryanhoo/blog/141824 还在用Androi ...
- MongoDB DBA 实践8-----Linux系统Mongodb分片集群部署
在Linux系统中,主要是使用命令行进行mongodb的分片集群部署 一.先决条件 mongodb安装成功,明确路径, MongoDB的几个路径: /var/lib/mongodb /var/log/ ...
- The command '/bin/sh -c unzip -o php-7.2.23-src.zip' returned a non-zero code: 1
Dockerfile 内容 #centos7 nginx php redis inotify FROM centos:7 MAINTAINER INFOBIRD RUN yum -y update & ...
- ELK学习实验018:filebeat收集docker日志
Filebeat收集Docker日志 1 安装docker [root@node4 ~]# yum install -y yum-utils device-mapper-persistent-data ...