class Block(Entity): def __init__(self, x, y): Entity.__init__(self) self.x = x self.y = y self.collides = True self.img = pygame.image.load("res/pics/box.png") self.hitbox = Hitbox(self.x, self.y, self.img.get_width(), self.img.get_height()) def update(self): self.hitbox.update(self.x, self.y) def draw(self): globals.window.blit(self.img, (self.x, self.y)) def getType(self): return "Block" def collide(self, entity): pass
class Bullet(): def __init__(self, x, y, direction, speed=10): self.collides = True self.x = x self.y = y self.x_v = 0 self.y_v = 0 self.img = pygame.image.load("res/pics/bullet.png") self.hitbox = Hitbox(self.x, self.y, self.img.get_width(), self.img.get_height()) if(direction == "up"): self.y_v = -speed elif(direction == "down"): self.y_v = speed elif(direction == "right"): self.x_v = speed elif(direction == "left"): self.x_v = -speed def update(self): self.x += self.x_v self.y += self.y_v self.hitbox.update(self.x, self.y) if(self.x < 0): self.kill() if(self.y < 0): self.kill() if(self.x > globals.width): self.kill() if(self.y > globals.height): self.kill() def draw(self): globals.window.blit(self.img, (self.x, self.y)) def collide(self, entity): pass def kill(self): globals.entities.remove(self)
class Player(Entity): def __init__(self, x, y): Entity.__init__(self) self.x = x self.y = y self.oldx = x self.oldy = y self.collides = True self.img_body = pygame.image.load("res/pics/body.png") self.hitbox = Hitbox(self.x, self.y, self.img_body.get_width(), self.img_body.get_height()) self.up = 0 self.down = 0 self.left = 0 self.right = 0 self.max_direction_accel = 5 self.direction_accel = 0.2 self.cooldown = 30 self.cooldown_timer = 0 self.is_clamp = True def update(self): self.oldx = self.x self.oldy = self.y if(globals.inputs.k_k_down): self.is_clamp = not self.is_clamp if(globals.inputs.isKeyDown("w")): self.up += self.direction_accel else: self.up -= self.direction_accel if(globals.inputs.isKeyDown("a")): self.left += self.direction_accel else: self.left -= self.direction_accel if(globals.inputs.isKeyDown("s")): self.down += self.direction_accel else: self.down -= self.direction_accel if(globals.inputs.isKeyDown("d")): self.right += self.direction_accel else: self.right -= self.direction_accel if(self.up > self.max_direction_accel): self.up = self.max_direction_accel if(self.down > self.max_direction_accel): self.down = self.max_direction_accel if(self.left > self.max_direction_accel): self.left = self.max_direction_accel if(self.right > self.max_direction_accel): self.right = self.max_direction_accel if(self.up < 0): self.up = 0 if(self.down < 0): self.down = 0 if(self.left < 0): self.left = 0 if(self.right < 0): self.right = 0 total_speed = self.up + self.down + self.right + self.left if(total_speed > 0): globals.entities.append(Particle(self.x + (self.img_body.get_width() / 2), self.y + (self.img_body.get_height() / 2))) self.y -= self.up self.y += self.down self.x -= self.left self.x += self.right if(self.is_clamp): self.clamp(self.img_body) self.hitbox.update(self.x, self.y) if(self.cooldown_timer > 0): self.cooldown_timer -= 1 else: if(globals.inputs.isKeyDown("right")): globals.entities.append(Bullet(self.x, self.y, "right")) elif(globals.inputs.isKeyDown("left")): globals.entities.append(Bullet(self.x, self.y, "left")) elif(globals.inputs.isKeyDown("up")): globals.entities.append(Bullet(self.x, self.y, "up")) elif(globals.inputs.isKeyDown("down")): globals.entities.append(Bullet(self.x, self.y, "down")) self.cooldown_timer = self.cooldown def draw(self): globals.window.blit(self.img_body, (self.x, self.y)) def getType(self): return "Player" def collide(self, entity): pass def getCenter(self): x = (self.x - self.hitbox.width) / 2 y = (self.y - self.hitbox.height) / 2 return (x, y)