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