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()
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)