import pygame import sys from level_editor import run_level_editor from GAME import run_game pygame.init() # Screen setup SCREEN_WIDTH = 800 SCREEN_HEIGHT = 540 BOTTOM_MARGIN = 100 screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT + BOTTOM_MARGIN)) pygame.display.set_caption('Lifeblood') # Colors WHITE = (255, 255, 255) BLACK = (0, 0, 0) # Clock clock = pygame.time.Clock() # Font font = pygame.font.SysFont('Arial', 48) # Button Class class Button: def __init__(self, text, x, y, w, h): self.text = text self.rect = pygame.Rect(x, y, w, h) self.color = BLACK self.hover_color = (50, 50, 50) self.alpha = 0 self.surf = pygame.Surface((w, h), pygame.SRCALPHA) def draw(self, surface): mouse_pos = pygame.mouse.get_pos() is_hovered = self.rect.collidepoint(mouse_pos) color = self.hover_color if is_hovered else self.color self.surf.fill((255, 255, 255, 0)) pygame.draw.rect(self.surf, (*color, self.alpha), self.surf.get_rect(), border_radius=10) # Text text_surf = font.render(self.text, True, WHITE) text_surf.set_alpha(self.alpha) text_rect = text_surf.get_rect(center=self.rect.center) surface.blit(self.surf, self.rect.topleft) surface.blit(text_surf, text_rect) def fade_in(self, step=5): if self.alpha < 255: self.alpha += step if self.alpha > 255: self.alpha = 255 def is_clicked(self, event): if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1: if self.rect.collidepoint(event.pos): return True return False # Intro Animation def intro_animation(): sprite_width, sprite_height = 40, 40 sprite_x = -sprite_width sprite_y = SCREEN_HEIGHT - sprite_height sprite_speed = 5 trail_surf = pygame.Surface((SCREEN_WIDTH, SCREEN_HEIGHT + BOTTOM_MARGIN), pygame.SRCALPHA) trail_surf.fill((255, 255, 255, 0)) running = True finished = False fade_out_counter = 0 while not finished: screen.fill(WHITE) pygame.draw.rect(screen, BLACK, (0, SCREEN_HEIGHT, SCREEN_WIDTH, BOTTOM_MARGIN)) if running: # Fade trail fade = pygame.Surface((SCREEN_WIDTH, SCREEN_HEIGHT + BOTTOM_MARGIN), pygame.SRCALPHA) fade.fill((255, 255, 255, 10)) trail_surf.blit(fade, (0, 0)) blur_square = pygame.Surface((sprite_width, sprite_height), pygame.SRCALPHA) blur_square.fill((0, 0, 0, 80)) trail_surf.blit(blur_square, (sprite_x, sprite_y)) sprite_x += sprite_speed if sprite_x > SCREEN_WIDTH: running = False else: # Final fade fade = pygame.Surface((SCREEN_WIDTH, SCREEN_HEIGHT + BOTTOM_MARGIN), pygame.SRCALPHA) fade.fill((255, 255, 255, 15)) trail_surf.blit(fade, (0, 0)) fade_out_counter += 1 if fade_out_counter > 60: finished = True screen.blit(trail_surf, (0, 0)) pygame.draw.rect(screen, BLACK, (0, SCREEN_HEIGHT, SCREEN_WIDTH, BOTTOM_MARGIN)) for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() pygame.display.update() clock.tick(60) # Main Menu def main_menu(): begin_button = Button("BEGIN", SCREEN_WIDTH // 2 - 100, SCREEN_HEIGHT // 2 - 100, 200, 80) editor_button = Button("LEVEL EDITOR", SCREEN_WIDTH // 2 - 150, SCREEN_HEIGHT // 2 + 20, 300, 80) fading = True while fading: screen.fill(WHITE) pygame.draw.rect(screen, BLACK, (0, SCREEN_HEIGHT, SCREEN_WIDTH, BOTTOM_MARGIN)) begin_button.fade_in() editor_button.fade_in() begin_button.draw(screen) editor_button.draw(screen) for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if begin_button.is_clicked(event): run_game() fading = False if editor_button.is_clicked(event): run_level_editor() fading = False pygame.display.update() clock.tick(60) # Run Intro and Main Menu intro_animation() main_menu()