# This file is part of ROBOTGAME # # ROBOTGAME is free software: you can redistribute it and/or modify it under the # terms of the GNU General Public License as published by the Free Software # Foundation, either version 3 of the License, or (at your option) any later # version. # # ROBOTGAME is distributed in the hope that it will be useful, but WITHOUT ANY # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR # A PARTICULAR PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along with # ROBOTGAME. If not, see . # # ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' # # player.py # -------------------- # date created : Tue Aug 7 2012 # copyright : (C) 2012 Sakse Dalum # maintained by : Sakse Dalum """ A generic level. """ import pygame import worldobject class Player(worldobject.WorldObject): def __init__(self, level, x, y, z=1, movable=True): self.__dict__.update(locals()) worldobject.WorldObject.__init__(self, level, x, y, z=z, movable=movable) def touch(self, touch_x, touch_y): for obj in self.level.objects: if (obj.x == self.x + touch_x * self.tile_x and obj.y == self.y + touch_y * self.tile_y and obj != self): obj.use(self) def update(self, e, t, dt): worldobject.WorldObject.update(self, e, t, dt) for event in e: if event.type == pygame.KEYDOWN: if event.key == pygame.K_UP: if not self.holding: self.direction = (0, -1) self.move(0, -1) if event.key == pygame.K_DOWN: if not self.holding: self.direction = (0, 1) self.move(0, 1) if event.key == pygame.K_RIGHT: if not self.holding: self.direction = (1, 0) self.move(1, 0) if event.key == pygame.K_LEFT: if not self.holding: self.direction = (-1, 0) self.move(-1, 0) if event.key == pygame.K_SPACE: self.touch(*self.direction) def draw(self, window): pygame.draw.circle(window, (255, 0, 255), (self.x + self.tile_x / 2, self.y - self.tile_y / 2), 20) pygame.draw.circle(window, (255, 255, 0), (self.x + self.tile_x / 2 + self.direction[0]*10, self.y - self.tile_y / 2 + self.direction[1]*10), 5)