import pygame import sys import os pygame.init() pygame.mixer.init() # DŮLEŽITÉ: Inicializace zvukového modulu okno = pygame.display.set_mode((800, 600)) pygame.display.set_caption("Lekce 5: Práce s obrázky a zvuky (Assety)") # ===================================================================== # 1. NAČÍTÁNÍ OBRÁZKŮ # ===================================================================== # Pro správné načtení je nejlepší mít obrázky ve stejné složce jako skript. # Doporučujeme formát .png (podporuje průhledné pozadí) nebo .jpg. cesta_k_obrazku = "hrac.png" try: # Načteme obrázek z disku obrazek_hrace = pygame.image.load(cesta_k_obrazku) # DŮLEŽITÉ: convert_alpha() výrazně zrychlí vykreslování v Pygame # a zachová průhlednost u PNG obrázků. obrazek_hrace = obrazek_hrace.convert_alpha() # Pokud je obrázek moc velký, můžeme ho zmenšit (např. na 50x50 pixelů) obrazek_hrace = pygame.transform.scale(obrazek_hrace, (50, 50)) obrazek_nacten = True except FileNotFoundError: print(f"POZOR: Obrázek '{cesta_k_obrazku}' nebyl nalezen! Nakreslím místo něj čtverec.") obrazek_nacten = False # ===================================================================== # 2. NAČÍTÁNÍ ZVUKŮ # ===================================================================== # Zvuky (.wav nebo .ogg - mp3 někdy v Pygame zlobí) cesta_ke_zvuku = "skok.wav" try: zvuk_skoku = pygame.mixer.Sound(cesta_ke_zvuku) # Zvuku můžeme nastavit hlasitost (0.0 až 1.0) zvuk_skoku.set_volume(0.5) zvuk_nacten = True except FileNotFoundError: print(f"POZOR: Zvuk '{cesta_ke_zvuku}' nebyl nalezen! Hra poběží potichu.") zvuk_nacten = False # Pozice a barvy x, y = 350, 250 CERNA = (0, 0, 0) MODRA = (0, 0, 255) BILA = (255, 255, 255) font = pygame.font.SysFont("Arial", 24) bezime = True while bezime: for udalost in pygame.event.get(): if udalost.type == pygame.QUIT: bezime = False # Zvuk přehrajeme např. při stisku mezerníku if udalost.type == pygame.KEYDOWN: if udalost.key == pygame.K_SPACE: if zvuk_nacten: zvuk_skoku.play() # Přehraje zvuk else: print("PÍÍÍP! (Tady by hrál zvuk)") # Vykreslování okno.fill(CERNA) text = font.render("Stiskni MEZERNÍK pro přehrání zvuku.", True, BILA) okno.blit(text, (10, 10)) if obrazek_nacten: # Místo pygame.draw.rect() použijeme okno.blit() pro vykreslení obrázku okno.blit(obrazek_hrace, (x, y)) else: # Nouzové řešení, pokud obrázek chybí pygame.draw.rect(okno, MODRA, (x, y, 50, 50)) text_chyba = font.render(f"Chybí soubor {cesta_k_obrazku}", True, (255, 0, 0)) okno.blit(text_chyba, (x, y - 30)) pygame.display.flip() pygame.quit() sys.exit()