This repository has been archived on 2026-05-18. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
multipong/actor.py

62 lines
1.7 KiB
Python
Raw Normal View History

from common import *
import event
import display
import uuid
import registry
import dpath.util
import logging
logger = logging.getLogger()
class Actor(event.EventHandler, registry.Registerable):
def __init__(self, *args, **kwargs):
registry.Registerable.__init__(self, *args, **kwargs)
event.EventHandler.__init__(self, *args, **kwargs)
self.width = 0
self.height = 0
self.x = 0
self.y = 0
self.vx = 0
self.vy = 0
dpath.util.merge(
self.__eventHandlers__,
{
'moveUp': self._event_moveUp,
'moveDown': self._event_moveDown
}
)
def _event_moveUp(self, evt):
self.y -= 1
def _event_moveDown(self, evt):
self.y += 1
def frame(self, display):
return getattr(
self,
"frameFor{}".format(display.__class__.__name__)
)()
class Text(Actor):
def __init__(self, *args, **kwargs):
Actor.__init__(self, *args, **kwargs)
self.setText(kwargs.get('text', ""))
def setText(self, text):
self.__text__ = text
widths = []
for line in self.__text__.split('\n'):
widths.append(len(line))
self.width = max(widths)
self.height = len(self.__text__.split("\n"))
def frameForCursesDisplay(self):
def drawForCurses(disp):
disp.__screen__.addstr(self.y, self.x, self.__text__)
return drawForCurses
class Paddle(Text):
def __init__(self, *args, **kwargs):
Text.__init__(self, *args, **kwargs)
self.__text__ = "|"