コード例 #1
0
ファイル: menu.py プロジェクト: sirmar/tetris
class Menu(Composite):
    def __init__(self, factory):
        Composite.__init__(self)
        self._factory = factory
        self._cursor_position = Position(10, 10)

    @recreate_surface
    def add_header(self, text):
        header = self._factory.create_header()
        self._add_row(header, text)

    @recreate_surface
    def add_choice(self, text):
        choice = self._factory.create_menu_row()
        self._add_row(choice, text)

    @recreate_surface
    def add_space(self):
        self._cursor_position = self._cursor_position.down(10)

    def surface(self):
        size = Size(300, self._cursor_position.y + 10)
        surface = Surface.create(size)
        surface.fill(MenuBackgroundColor())
        return surface

    def _move_cursor_by_font_size(self, text):
        font_size = text.get_font_size()
        self._cursor_position = self._cursor_position.down(font_size)

    def _add_row(self, element, text):
        element.set_position(self._cursor_position)
        element.set_text(text)
        self._move_cursor_by_font_size(element)
        self.add_child(element)
コード例 #2
0
ファイル: test_menu.py プロジェクト: sirmar/tetris
 def text_positions(self):
     self.when_adding_row("Row")
     self.then_row_was_put_on(Position(10, 10))
     self.when_setting_header("Header")
     self.then_header_was_set_to(Position(10, 30))
     self.when_adding_row("Row")
     self.then_row_was_put_on(Position(10, 60))
     self.when_adding_space()
     self.when_adding_row("Row")
     self.then_row_was_put_on(Position(10, 90))
コード例 #3
0
ファイル: test_position.py プロジェクト: sirmar/tetris
    def check_types_to_be_equal(self):
        class Pos(object):
            def __init__(self, x, y):
                self.x = x
                self.y = y

        ok_(Position(0, 0) != Pos(0, 0))
コード例 #4
0
 def visibles(self):
     menu = self._visible_factory.create_menu()
     menu.set_position(Position(200, 100))
     menu.add_header(self.header())
     for choice in self.choices():
         if choice:
             menu.add_choice(choice)
         else:
             menu.add_space()
     return menu
コード例 #5
0
ファイル: menu.py プロジェクト: sirmar/tetris
 def __init__(self, factory):
     Composite.__init__(self)
     self._factory = factory
     self._cursor_position = Position(10, 10)
コード例 #6
0
ファイル: test_position.py プロジェクト: sirmar/tetris
 def access_parts(self):
     p = Position(1, 5)
     eq_(p.x, 1)
     eq_(p.y, 5)
コード例 #7
0
ファイル: test_position.py プロジェクト: sirmar/tetris
 def get_tuple(self):
     eq_(Position(0, 0).tuple(), (0, 0))
コード例 #8
0
ファイル: test_position.py プロジェクト: sirmar/tetris
 def move_up(self):
     eq_(Position(0, 0), Position(0, 2).up(2))
     eq_(Position(0, 0), Position(0, 1).up())
コード例 #9
0
ファイル: test_position.py プロジェクト: sirmar/tetris
 def move_down(self):
     eq_(Position(0, 2), Position(0, 0).down(2))
     eq_(Position(0, 1), Position(0, 0).down())
コード例 #10
0
ファイル: test_position.py プロジェクト: sirmar/tetris
 def move_left(self):
     eq_(Position(0, 0), Position(2, 0).left(2))
     eq_(Position(0, 0), Position(1, 0).left())
コード例 #11
0
ファイル: test_position.py プロジェクト: sirmar/tetris
 def move_right(self):
     eq_(Position(2, 0), Position(0, 0).right(2))
     eq_(Position(1, 0), Position(0, 0).right())
コード例 #12
0
ファイル: test_position.py プロジェクト: sirmar/tetris
 def move(self):
     eq_(Position(2, 3), Position(0, 0).move(2, 3))
コード例 #13
0
ファイル: test_position.py プロジェクト: sirmar/tetris
 def add(self):
     eq_(Position(1, 1), Position(0, 0) + Position(1, 1))
コード例 #14
0
ファイル: test_position.py プロジェクト: sirmar/tetris
 def same_point_is_equal(self):
     eq_(Position(0, 0), Position(0, 0))