class Button(Entity): def __init__(self, x=0, y=0, callback=None, *args, **kwargs): Entity.__init__(self, x, y) self._map = None self._callback = callback self._args = args self._kwargs = kwargs def update(self): if not self.world: return if self.collide_point(self.x - self.world.camera.x, self.y - self.world.camera.y, Input.mouse_x, Input.mouse_y): if Input.mouse_released() and self._callback: self._callback(*self._args, **self._kwargs) elif Input.mouse_down(): self._map.play('down') else: self._map.play('over') else: self._map.play('up') def set_spritemap(self, asset, frame_w, frame_h): self._map = Spritemap(asset, frame_w, frame_h) self._map.add('up', [0]) self._map.add('over', [1]) self._map.add('down', [2]) self.graphic = self._map self.set_hitbox(frame_w, frame_h)
class GameEntity(Entity): def __init__(self): Entity.__init__(self) self._time_interval = 0 self.graphic = Spritemap('EntitySheet.png', 40, 20, self.on_animation_end) self.graphic.add('Stopped', [0]) self.graphic.add('Blinking', list(range(10)), 24) Input.define('UP', Key.W, Key.UP) Input.define('DOWN', Key.S, Key.DOWN) Input.define('LEFT', Key.A, Key.LEFT) Input.define('RIGHT', Key.D, Key.RIGHT) self.type = 'GameEntity' self.graphic.play('Blinking') def on_animation_end(self): self.graphic.play('Stopped') self._time_interval = 0 def update(self): self._time_interval += PP.elapsed if self._time_interval >= 3: self.graphic.play('Blinking') if Input.check('LEFT'): self.x -= 50 * PP.elapsed if Input.check('RIGHT'): self.x += 50 * PP.elapsed if Input.check('UP'): self.y -= 50 * PP.elapsed if Input.check('DOWN'): self.y += 50 * PP.elapsed
def set_spritemap(self, asset, frame_w, frame_h): self._map = Spritemap(asset, frame_w, frame_h) self._map.add('up', [0]) self._map.add('over', [1]) self._map.add('down', [2]) self.graphic = self._map self.set_hitbox(frame_w, frame_h)
def __init__(self): Entity.__init__(self) self._time_interval = 0 self.graphic = Spritemap('EntitySheet.png', 40, 20, self.on_animation_end) self.graphic.add('Stopped', [0]) self.graphic.add('Blinking', list(range(10)), 24) Input.define('UP', Key.W, Key.UP) Input.define('DOWN', Key.S, Key.DOWN) Input.define('LEFT', Key.A, Key.LEFT) Input.define('RIGHT', Key.D, Key.RIGHT) self.type = 'GameEntity' self.graphic.play('Blinking')