'Is it have any transformation class and abject in python?
It look weird when its transform.
What I did wrong on tk.canvas? Or tkinter object or my logic wrong?
The base enemy class just a enemy that can do anything.
class TransformEnemy(Enemy):
"""This Enemy can transform into other Enemy evey 3 seconds"""
SPEED = 6
now_enemy = None
__borntime = perf_counter()
def __init__(self, game: "turtle_adventure.TurtleAdventureGame", size: int, color: str):
super().__init__(game, size, color)
# self.__borntime = perf_counter()
self.enemy_list = [RandomWalkEnemy(game, size=20, color='red'), ChasingEnemy(
game, size=15, color='green'), FencingEnemy(game, size=10, color='brown'), None]
@classmethod
def get_enemy(cls):
return cls.now_enemy
@classmethod
def set_enemy(cls, enemy):
if not isinstance(enemy, (Enemy, type(None))):
raise TypeError("enemy must be an instance of Enemy")
cls.now_enemy = enemy
@classmethod
@property
def elasped_time(cls) -> float:
return perf_counter() - cls.__borntime
def create(self) -> None:
for enemy in self.enemy_list:
if enemy is not None:
enemy.create()
else:
super().create()
def spawn(self) -> None:
for enemy in self.enemy_list:
if enemy is not None:
enemy.spawn()
else:
super().spawn()
def delete(self) -> None:
for enemy in self.enemy_list:
if enemy is not None:
enemy.delete()
else:
super().delete()
def render(self) -> None:
now_enemy = TransformEnemy.get_enemy()
for enemy in self.enemy_list:
enemy_id = self._id if enemy is None else enemy._id
if enemy is now_enemy:
self.canvas.itemconfigure(enemy_id, state='normal')
else:
self.canvas.itemconfigure(enemy_id, state='hidden')
if enemy is not None:
enemy.render()
else:
super().render()
def motion(self):
if not TransformEnemy.now_enemy:
super().motion()
else:
TransformEnemy.now_enemy.motion()
self.transform()
def transform(self):
self.canvas.itemconfigure(self._id, state='hidden')
if not floor(self.elasped_time) % 5:
TransformEnemy.set_enemy(random.choice(self.enemy_list))
now_enemy = TransformEnemy.get_enemy()
now_enemy_id = self._id if now_enemy is None else now_enemy._id
self.canvas.itemconfigure(now_enemy_id, state='normal')
When it transform it should be a smooth transform not like this
this when transform it just a other Enemy fill with a canvas.
It not a smooth transform...
This unimportant
I write this paragraph more because stackoverflow not lets me to ask the question I will write and write more untill its lets me ask now Im going to ask some bug that I found please lets me ask
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|

