Example #1
0
 def OnKeyDown(self, event: wx.Event):
     """Left/right/up/down key for move and rotate, space for drop, d for one
     line down, p for pause, all other ignore (pass on to next handler)
     """
     if not self.board.started or self.board.this_piece.shape == Tetrominoes.NoShape:
         logging.debug("not started - ignore input")
         event.Skip()
         return
     keycode = event.GetKeyCode()
     logging.debug("OnKeyDown: keycode=%d", keycode)
     if keycode in [ord("P"), ord("p")]:
         self.pause()
         return
     if self.board.paused:
         return
     if keycode == wx.WXK_LEFT:
         self.try_move(self.board.this_piece, -1)
     elif keycode == wx.WXK_RIGHT:
         self.try_move(self.board.this_piece, +1)
     elif keycode == wx.WXK_DOWN:
         self.try_move(self.board.this_piece.rotate_ccw(), 0)
     elif keycode == wx.WXK_UP:
         self.try_move(self.board.this_piece.rotate_cw(), 0)
     elif keycode == wx.WXK_SPACE:
         self.drop_down()
     elif keycode == ord("D") or keycode == ord("d"):
         self.move_down()
     else:
         event.Skip()
Example #2
0
            def onSpace(event: wx.Event):
                """ Restart the current or generate a new game. """
                # Check if the key is the spacebar
                if not event.GetKeyCode() == wx.WXK_SPACE:
                    return

                # Reset cells to restart
                if self.lives == 0:
                    self.cells = [[[value, False] for value, _ in line] for line in self.cells]
                # Generate new cells
                else:
                    self.generate()

                # Reset lives
                self.lives = 3

                # Unbind spacebar event
                self.Unbind(wx.EVT_CHAR_HOOK)

                # Refresh panel
                self.Refresh()
    def increment_index(self, evt: wx.Event = None, increment: int = None):
        """Increment the ListCtrl selection with an event or fixed increment

        Parameters
        ----------
        evt : wx.Event
            An event with a ``GetKeyCode`` method
        increment : int
            If no event is passed, use a fixed index increment

        """
        if self.has_data:
            if hasattr(evt, "GetKeyCode"):
                keycode = evt.GetKeyCode()

                if keycode == wx.WXK_UP:
                    evt.Skip()
                    increment = -1

                elif keycode == wx.WXK_DOWN:
                    evt.Skip()
                    increment = 1

                else:
                    return

            if increment is None:
                increment = 1

            current_index = self.selected_row_index
            if len(current_index):
                new_index = current_index[0] + increment
                if new_index > self.row_count - 1:
                    new_index = 0
            else:
                new_index = -1 + increment if increment > 0 else -increment
            self.layout.Select(new_index)