You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

90 lines
2.9 KiB

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()