def __init__(self, game): super().__init__(game) self.sprite = Sprite(3, colorkey=c.BLACK) self.halberd = Sprite(3, colorkey=c.BLACK) idle = SpriteSheet(c.image_path("warden.png"), (1, 1), 1) self.sprite.add_animation({"Idle": idle}) self.sprite.start_animation("Idle") idle = SpriteSheet(c.image_path("halberd.png"), (1, 1), 1) self.halberd.add_animation({"Idle": idle}) self.halberd.start_animation("Idle") self.x = c.WINDOW_WIDTH // 2 self.y = 125 self.age = 0 self.alpha = -200 self.target_alpha = 255 self.name = "Warden" self.slashing = False self.slash_timer = 0 self.left = pygame.image.load(c.image_path("warden_left.png")).convert() self.left.set_colorkey(c.BLACK) self.left.set_alpha(255) self.right = pygame.image.load(c.image_path("warden_right.png")).convert() self.right.set_colorkey(c.BLACK) self.right.set_alpha(255)
def main(self): inst = SpriteSheet("images/controls.png", (2, 1), 2) sprite = Sprite(4) sprite.add_animation({"Idle": inst}) sprite.start_animation("Idle") clock = pygame.time.Clock() age = 0 shade = pygame.Surface(c.WINDOW_SIZE) shade.fill(c.BLACK) shade.set_alpha(255) while True: end = 4 if age < 0.25: shade.set_alpha((0.25 - age) * 255 / 0.25) elif age > end - 0.25: shade.set_alpha((age - end + 0.25) * 255 / 0.25) else: shade.set_alpha(0) sprite.set_position((c.WINDOW_WIDTH // 2, c.WINDOW_HEIGHT // 2)) dt = clock.tick(60) / 1000 age += dt events = self.game.update_globals() sprite.update(dt) sprite.draw(self.game.screen) self.game.screen.blit(shade, (0, 0)) pygame.display.flip() if age >= end: self.game.bus_ride.fadeout(500) break
def get_sprite_from_plant(self): plant = self.plant sprite = Sprite(4) if plant.name == "Empty": key = plant.name elif plant.state == c.SEED: key = "Seed" else: key = plant.name + str(plant.state) sheet = SpriteSheet(self.scene.load_image(key), (1, 1), 1) sprite.add_animation({"idle": sheet}) sprite.start_animation("idle") return sprite
def __init__(self, game): super().__init__(game) self.sprite = Sprite(3, colorkey=c.BLACK) idle = SpriteSheet(c.image_path("evil_guy_placeholder.png"), (1, 1), 1) self.sprite.add_animation({"Idle": idle}) self.sprite.start_animation("Idle") self.name = "Parity" self.x = c.WINDOW_WIDTH//2 self.y = 125 self.yoff = 0 self.age = 0 self.alpha = 0 self.target_alpha = 255
def __init__(self, game, position=(0, 0)): super().__init__(game, None, position=position) self.sprite = Sprite(16) anim = SpriteSheet(c.image_path("bullet_hit.png"), (8, 1), 8) self.sprite.add_animation({"Default": anim}) self.sprite.start_animation("Default") self.game.top_particles.add(self) surface = pygame.Surface((100, 100)) surface.fill((0, 0, 0)) pygame.draw.circle(surface, (255, 255, 255), (50, 50), 50) self.boom = surface self.boom.set_colorkey((0, 0, 0)) self.boom_alpha = 200 self.boom_size = 40
def __init__(self, scene, pos=(3, 3)): super().__init__(scene) self.priority = 3 self.blocking = True self.interactive = True self.dialogue = None tag_dict = {"Player": "player", "Emilia": "captain", None: "player"} tag = tag_dict[self.name] down = SpriteSheet(scene.load_image(f"{tag}_walk_down"), (6, 1), 6) up = SpriteSheet(scene.load_image(f"{tag}_walk_up"), (6, 1), 6) down_idle = SpriteSheet(scene.load_image(f"{tag}_idle_down"), (4, 1), 4) up_idle = SpriteSheet(scene.load_image(f"{tag}_idle_up"), (4, 1), 4) right = SpriteSheet(scene.load_image(f"{tag}_walk_right"), (6, 1), 6) left = SpriteSheet(scene.load_image(f"{tag}_walk_right"), (6, 1), 6) left.reverse(1, 0) right_idle = SpriteSheet(scene.load_image(f"{tag}_idle_right"), (4, 1), 4) left_idle = SpriteSheet(scene.load_image(f"{tag}_idle_right"), (4, 1), 4) left_idle.reverse(1, 0) self.sprite = Sprite(8) self.sprite.add_animation({ "down": down, "up": up, "down_idle": down_idle, "up_idle": up_idle, "right": right, "left": left, "right_idle": right_idle, "left_idle": left_idle }) self.sprite.start_animation("down_idle") self.idles = { c.DOWN: "down_idle", c.UP: "up_idle", c.RIGHT: "right_idle", c.LEFT: "left_idle" } self.idle_playing = True self.x = pos[0] self.y = pos[1] self.scene.map.add_to_cell(self, self.x, self.y) self.draw_x = self.x self.draw_y = self.y self.prev_x = self.x self.prev_y = self.y self.shadow = CharacterShadow(scene, self) self.scene.map.add_to_cell(self.shadow, self.x, self.y) self.since_move = 0 self.move_speed = 3 self.in_motion = False self.next_direction = c.NO_DIRECTION self.face_direction = c.DOWN self.last_face_direction = c.DOWN self.since_arrive = 999 self.shadow_surf = pygame.Surface(c.TILE_SIZE) self.shadow_surf.fill(c.WHITE) width = int(c.TILE_WIDTH * 0.7) height = int(c.TILE_HEIGHT * 0.5) pygame.draw.ellipse( self.shadow_surf, c.BLACK, (c.TILE_WIDTH // 2 - width // 2, 3.2 * c.TILE_HEIGHT // 5 - height // 2, width, height)) self.shadow_surf.set_alpha(30) self.shadow_surf.set_colorkey(c.WHITE)
import pygame import constants as c from bullet import Bullet from sprite_tools import SpriteSheet, Sprite import math from particle import Shell player_running = SpriteSheet("images/player.png", (1, 1), 1, scale=2) player_dead = SpriteSheet("images/player_dead.png", (1, 1), 1, scale=2) player_hit = SpriteSheet("images/player_hit.png", (1, 1), 1, scale=2) class Player: def __init__(self, game): self.game = game self.width = 64 self.height = 64 self.x = c.WINDOW_WIDTH / 3 self.y = c.WINDOW_HEIGHT // 2 + self.game.corridor.width // 2 - self.height // 2 self.y_velocity = 0 self.x_velocity = 0 self.extra_jumps = 1 self.bullets = set() self.bullet_cooldown = 0 self.bullet_period = 0.10
import pygame import constants as c import random import math from sprite_tools import SpriteSheet, Sprite from pickup import Cash from particle import DasherSmoke, DasherSmokeRed crawler_running = SpriteSheet("images/crawler.png", (4, 1), 4, scale=2) crawler_running_ceiling = SpriteSheet("images/crawler.png", (4, 1), 4, scale=2) crawler_running_ceiling.reverse(0, 1) crawler_jump = SpriteSheet("images/crawler_jump.png", (1, 1), 1, scale=2) crawler_hurt = SpriteSheet("images/crawler_hurt.png", (1, 1), 1, scale=2) crawler_hurt_ceiling = SpriteSheet("images/crawler_hurt.png", (1, 1), 1, scale=2) crawler_hurt_ceiling.reverse(0, 1) crawler_dead = SpriteSheet("images/crawler_dead.png", (1, 1), 1, scale=2) dasher_hovering = SpriteSheet("images/dasher.png", (1, 1), 1, scale=2) dasher_dashing = SpriteSheet("images/dasher_dashing.png", (1, 1), 1, scale=2) dasher_damage = SpriteSheet("images/dasher_damage.png", (1, 1), 1, scale=2) dasher_dashing_damage = SpriteSheet("images/dasher_dashing_damage.png", (1, 1), 1, scale=2) blocker = SpriteSheet("images/blocker.png", (4, 1), 4, scale=2) blocker_hurt = SpriteSheet("images/blocker_hurt.png", (1, 1), 1, scale=2) blocker_dead = SpriteSheet("images/blocker_dead.png", (1, 1), 1, scale=2) class Enemy: def __init__(self, game, x, y, radius=60): self.game = game