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>' ...
 
随机推荐
- Http请求头安全策略
			
今天在网上浪了许久,只是为了找一个很简单的配置,却奈何怎么都找不到. 好不容易找到了,我觉得还是记录下来的好,或许省得许多人像我一样浪费时间. 1.X-Frame-Options 如果网站可以嵌入到I ...
 - 图解Go语言的context了解编程语言核心实现源码
			
基础筑基 基于线程的编程语言中的一些设计 ThreadGroup ThreadGroup是基于线程并发的编程语言中常用的一个概念,当一个线程派生出一个子线程后通常会加入父线程的线程组(未指定线程组的情 ...
 - 「CodeForces 546B」Soldier and Badges 解题报告
			
CF546B Soldier and Badges 题意翻译 给 n 个数,每次操作可以将一个数 +1,要使这 n 个数都不相同, 求最少要加多少? \(1 \le n \le 3000\) 感谢@凉 ...
 - 对 Redux 一头雾水?看完这篇就懂了
			
首先,学习 Redux 可能会很困难 当你终于学会了如何使用 React,也有了自己去构建一些应用的信心,那会是一种非常棒的感觉.你学会了管理状态,一切看起来井井有条.但是,很有可能这就到了你该学习 ...
 - 浅谈Go类型转换之间的那些事
			
试着答一答这些问题 s[i]和(for _,v range)的v的区别是什么 var s string = "AB" fmt.Println(reflect.TypeOf(s[0] ...
 - Java项目之家庭收支记账软件
			
模拟实现基于文本界面的家庭记账软件,该软件能够记录家庭的收入支出,并能够打印收支明细表. 项目采用分级菜单方式.主菜单如下: 假设家庭起始的生活基本金为10000元. 每次登记收入(菜单2)后,收入的 ...
 - Spring Boot2 系列教程 (七) | 使用 Spring Data JPA 访问 Mysql
			
前言 如题,今天介绍 Spring Data JPA 的使用. 什么是 Spring Data JPA 在介绍 Spring Data JPA 之前,首先介绍 Hibernate . Hibernat ...
 - APICloud开发者进阶之路 |纯手工编写日程表功能
			
本文出自APICloud官方论坛, 感谢论坛版主 赵永亮 的分享. 最近看论坛内关于极光推送的问题有很多, 本想写一个关于极光的详细教程的,无奈已经有很多大牛分享过了,所以只得纯手工写了一个日程表,可 ...
 - python requests 库 首次使用
			
安装requests库 执行pip3 install requests 使用resquests库获取百度网站首页 打开python idle终端.以python3为例,在终端执行python3并回车. ...
 - javascript DOM练习
			
一.定时器 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset=" ...