+ self.add_widget(self.player_tile)
+
+ def _closed(self):
+ self.keyboard.unbind(on_key_down=self._on_key_down)
+
+ def _on_key_down(self, keyboard, keycode, text, modifiers):
+ # FIXME - likely portablity issues
+ direction = None
+ if keycode[0] == pygame.K_UP:
+ direction = (0, 1)
+ elif keycode[0] == pygame.K_DOWN:
+ direction = (0, -1)
+ elif keycode[0] == pygame.K_LEFT:
+ direction = (-1, 0)
+ elif keycode[0] == pygame.K_RIGHT:
+ direction = (1, 0)
+ if direction:
+ if self.player.can_move(direction, self.level_obj):
+ self.player.move(direction)
+ self.draw_player()
+ if self.level_obj.at_exit(self.player.pos):
+ self.level_obj = self.level_list.advance_to_next_level()
+ if self.level_obj:
+ self.level_obj.load_tiles()
+ self.player.pos = self.level_obj.enter_pos
+ self.remove_widget(self.player_tile)
+ self.build()
+ else:
+ print 'You won!'
+ sys.exit(1)