Úvod
Co je to had?
Had je klasická počítačová hra, kde hráč ovládá hada, který se pohybuje po herním poli a sbírá jídlo. Cílem hry je dosáhnout co nejdelšího hada, aniž by se srazil se stěnami nebo sám se sebou.
Proč programovat hada v Pythonu?
Python je skvělý jazyk pro začátečníky, protože je snadno čitelný a má jednoduchou syntaxi. Navíc existuje široká škála knihoven, které usnadňují vývoj her. Programování hry Had v Pythonu je skvělý způsob, jak se naučit základní principy programování a užít si zábavu.
Cíl tohoto tutoriálu
V tomto tutoriálu se naučíme, jak vytvořit hru Had v Pythonu od základů. Naučíme se základní koncepty programování, jako je definice proměnných, podmíněné příkazy a cykly. Seznámíme se s knihovnou
turtle
, která nám umožní graficky zobrazit hru. Nakonec si vytvoříme plně funkční hru Had s některými pokročilými funkcemi, jako je systém pro skóre a různé úrovně obtížnosti.
Příprava
Instalace Pythonu
Stáhněte a nainstalujte Python z oficiálního webu.
Python je dostupný zdarma pro všechny platformy, jako je Windows, macOS a Linux. Navštivte oficiální web Pythonu
https://www.python.org/downloads/ a stáhněte si nejnovější verzi Pythonu pro váš operační systém. Důležité je stáhnout verzi Pythonu s podporou "pip" (Package Installer for Python), který vám pomůže s instalací dalších knihoven.
Pokud se vám nedaří Python správně nainstalovat, zkontrolujte, zda jste zvolili správnou verzi pro váš systém.
Ověřte instalaci spuštěním příkazu python --version v terminálu.
Po instalaci Pythonu otevřete terminál (příkazový řádek) a zadejte příkaz `python --version`. Pokud je Python správně nainstalován, terminál by měl zobrazit verzi Pythonu, kterou jste nainstalovali.
Pokud terminál vyhodí chybu, Python pravděpodobně není správně nainstalován. Pokuste se Python znovu nainstalovat nebo vyhledat řešení online.
Vývojové prostředí
Použijte textový editor, například Notepad++, Sublime Text, nebo IDE jako PyCharm.
Textový editor nebo IDE (Integrated Development Environment) je software, který budete používat k psaní kódu v Pythonu. K dispozici je mnoho bezplatných a placených možností. Některé populární volby zahrnují:
- Notepad++: Bezplatný a lehký textový editor pro Windows.
- Sublime Text: Populární editor s bohatou sadou funkcí a podporou široké škály programovacích jazyků.
- PyCharm: Robustní IDE od JetBrains s pokročilými funkcemi pro vývoj Pythonu.
Zvolte editor, který vám vyhovuje a s kterým se cítíte nejlépe. Pro začátečníky je Notepad++ nebo Sublime Text skvělou volbou.
Uložte své kódy do souboru s příponou .py.
Vytvořte nový soubor ve svém editoru a uložte jej s příponou ".py". Například `had.py`. Python rozpozná soubory s touto příponou jako programové kódy.
Nezapomeňte ukládat soubory s kódem, abyste se vyhnuli ztrátě práce.
Základní koncepty
Proměnné a datové typy
Jak definovat proměnné a přiřadit jim hodnoty.
Proměnná je název, který se váže k určité hodnotě. V Pythonu definujeme proměnnou jednoduše zadáním jména proměnné, symbolu `=`, a hodnoty, kterou chceme proměnné přiřadit. Například:
jmeno = "Jan"
vek = 25
V tomto kódu jsme definovali proměnnou `jmeno` s hodnotou "Jan" a proměnnou `vek` s hodnotou 25. Můžeme si ověřit, co je v proměnných uloženo, pomocí funkce `print()`, například:
print(jmeno)
print(vek)
To zobrazí v konzoli:
Jan
25
Použití různých datových typů, jako jsou čísla, text a seznamy.
Datový typ určuje, jakého druhu data jsou v proměnné uložena. Mezi nejběžnější datové typy v Pythonu patří:
-
Integer
(celé číslo): vek = 25
-
Float
(desetinné číslo): vaha = 75.5
-
String
(text): jmeno = "Jan"
-
List
(seznam): barvy = ["červená", "modrá", "zelená"]
Pro zjištění datového typu proměnné můžeme použít funkci `type()`, například:
print(type(jmeno))
print(type(vek))
print(type(vaha))
print(type(barvy))
Výstup v konzoli bude:
Pokud se vám nedaří definovat proměnné, zkontrolujte, zda nepoužíváte rezervovaná slova Pythonu (například if, else, for) jako názvy proměnných.
V názvech proměnných rozlišujeme malá a velká písmena (například `vek` a `Vek` jsou různé proměnné).
Podmíněné příkazy
Použití if, elif, else pro kontrolu toku programu.
Podmíněné příkazy nám umožňují řídit tok programu v závislosti na splnění určité podmínky. V Pythonu používáme klíčová slova `if`, `elif` (elif = else if) a `else`. Základní syntaxe vypadá takto:
if podminka:
# Kód, který se provede, pokud je podminka splněna
elif dalsi_podminka:
# Kód, který se provede, pokud je splněna další podminka
else:
# Kód, který se provede, pokud nejsou splněny žádné předchozí podmínky
Například:
vek = 18
if vek >= 18:
print("Jsi plnoletý.")
else:
print("Ještě nejsi plnoletý.")
V tomto případě je `vek` 18, takže se splní podmínka `vek >= 18` a program zobrazí v konzoli "Jsi plnoletý.". Pokud by `vek` byl menší než 18, splnil by se blok kódu v `else` a program by zobrazil "Ještě nejsi plnoletý."
Vytvoření jednoduchých rozhodnutí v programu.
Podmíněné příkazy nám umožňují vytvářet v programu jednoduché rozhodnutí. Například:
pocasi = "slunečno"
if pocasi == "slunečno":
print("Jdeme na pláž!")
elif pocasi == "deštivo":
print("Zůstaneme doma.")
else:
print("Nevíme, co dělat.")
V tomto případě je `pocasi` "slunečno", takže program zobrazí "Jdeme na pláž!".
Dbejte na správné použití srovnávacích operátorů (==, !=, >, <, >=, <=), aby se podmínky správně vyhodnocovaly.
Pokud máte více podmínek, dbejte na pořadí bloků `if`, `elif` a `else`, aby se prováděl správný kód.
Cykly
Použití for a while cyklů pro opakování kódu.
Cykly nám umožňují opakovat určitý kód vícekrát. V Pythonu existují dva hlavní typy cyklů: `for` a `while`. Cyklus `for` se používá pro iterování přes sekvenci (například seznam), zatímco cyklus `while` se používá pro opakování kódu tak dlouho, dokud je splněna určitá podmínka.
Cyklus for
Základní syntaxe cyklu `for` vypadá takto:
for promenna in sekvence:
# Kód, který se provede pro každý prvek v sekvenci
Například:
barvy = ["červená", "modrá", "zelená"]
for barva in barvy:
print(barva)
Tento cyklus se bude opakovat pro každý prvek v seznamu `barvy` a zobrazí v konzoli:
červená
modrá
zelená
Cyklus while
Základní syntaxe cyklu `while` vypadá takto:
while podminka:
# Kód, který se provede, pokud je podminka splněna
Například:
i = 0
while i < 5:
print(i)
i = i + 1
Tento cyklus se bude opakovat tak dlouho, dokud bude `i` menší než 5. V konzoli zobrazí:
0
1
2
3
4
Vytvoření smyček pro provádění akcí vícekrát.
Cykly nám umožňují vytvářet smyčky pro provádění akcí vícekrát. Například:
pocet_opakovani = 3
for i in range(pocet_opakovani):
print("Ahoj!")
Tento kód zobrazí v konzoli třikrát "Ahoj!":
Ahoj!
Sestavení hada
Základní struktura
Vytvoření herního pole a reprezentace hada.
Začneme s vytvořením herního pole, které bude reprezentovat prostor, kde se had bude pohybovat. V Pythonu můžeme herní pole reprezentovat pomocí seznamu. Každý prvek seznamu bude odpovídat jednomu políčku v herním poli. Například pro herní pole o rozměrech 10x10 políček bude seznam obsahovat 100 prvků. Pro reprezentaci hada použijeme seznam souřadnic. Každá souřadnice bude reprezentovat pozici jednoho segmentu hada.
import random
# Definice velikosti herního pole
sirka = 10
vyska = 10
# Vytvoření seznamu pro herní pole
herni_pole = [[' ' for _ in range(sirka)] for _ in range(vyska)]
# Inicializace pozice hada
had = [(sirka // 2, vyska // 2)]
# Inicializace pozice jídla
jidlo = (random.randint(0, sirka - 1), random.randint(0, vyska - 1))
V tomto kódu jsme definovali proměnné `sirka` a `vyska` pro určení rozměrů herního pole. Poté jsme vytvořili seznam `herni_pole`, který obsahuje prvky `' '`, které představují prázdná políčka. Proměnná `had` je seznam souřadnic, který zpočátku obsahuje pouze jednu souřadnici – počáteční pozici hada. Nakonec jsme náhodně vygenerovali souřadnice pro `jidlo`.
Ujistěte se, že jste `import`ovali modul `random` pro generování náhodných čísel. Pokud tento modul neimportujete, program se nezkompiluje.
Inicializace počáteční pozice hada a jídla.
V předchozím kroku jsme již inicializovali pozice hada a jídla v herním poli. Můžeme si v kódu zkontrolovat, zda jsou inicializovány správně. Také můžeme upravit počáteční pozici hada a jídla v závislosti na vašich vlastních nastaveních.
# Zkontrolujte pozici hada a jídla
print("Had:", had)
print("Jídlo:", jidlo)
# Změňte počáteční pozici hada a jídla
had = [(2, 5)]
jidlo = (7, 1)
Pokročilé funkce
Skóre a herní statistiky
Implementace systému pro sledování skóre.
Chcete-li sledovat skóre ve hře Had, budete potřebovat proměnnou, která bude držet aktuální skóre. Každá sebraná potrava by pak měla zvýšit skóre o jeden bod. Navíc byste měli skóre zobrazit na obrazovce hry, aby hráč věděl, kolik bodů získal. Toho lze docílit přidáním proměnné `score` a její inkrementací v `sběr_jidla` funkci. Pro zobrazení skóre na obrazovce hry můžete použít knihovnu `turtle` a vytvořit nový objekt želvy, který bude zobrazovat aktuální skóre.
score = 0
# Zobrazení skóre na obrazovce
score_display = turtle.Turtle()
score_display.hideturtle()
score_display.penup()
score_display.goto(-250, 250)
score_display.pendown()
score_display.write(f"Skóre: {score}", align="left", font=("Arial", 24, "normal"))
# Funkce pro sběr jídla
def sber_jidla():
global score
score += 1
score_display.clear()
score_display.write(f"Skóre: {score}", align="left", font=("Arial", 24, "normal"))
# ... další kód pro generování nového jídla ...
Ujistěte se, že jste importovali knihovnu `turtle` před použitím funkcí `turtle.Turtle()` a `turtle.write()`.
Funkce `turtle.clear()` vymaže všechny objekty želvy na obrazovce, proto ji použijte před zapsáním nového skóre.
Vytvoření statistik o hře, jako je délka hry a počet sebraných jídla.
Pro zaznamenávání statistik, jako je délka hry a počet sebraných jídla, budete potřebovat proměnné, které budou uchovávat tyto údaje. Tyto proměnné by se měly aktualizovat během hry. Délku hry lze zaznamenat v sekundách pomocí funkce `time.time()`. Počet sebraných jídla lze zaznamenat v proměnné `jidlo_sbrano` a inkrementovat ji v `sběr_jidla` funkci. Nakonec tyto statistiky můžete zobrazit na obrazovce po skončení hry.
import time
# Inicializace statistik
start_time = time.time()
jidlo_sbrano = 0
# Funkce pro sběr jídla
def sber_jidla():
global jidlo_sbrano
jidlo_sbrano += 1
# ... další kód pro generování nového jídla ...
# Zobrazení statistik po skončení hry
def konec_hry():
game_duration = time.time() - start_time
print(f"Délka hry: {game_duration:.2f} sekund")
print(f"Počet sebraných jídla: {jidlo_sbrano}")
Různé úrovně obtížnosti
Změna rychlosti hada a generování jídla podle úrovně obtížnosti.
Vytvoření více úrovní obtížnosti umožňuje přizpůsobit hru hráčům s různými úrovněmi dovedností. Různé úrovně obtížnosti lze implementovat změnou rychlosti hada a frekvence, s jakou se generuje nové jídlo. Pro změnu rychlosti hada můžete upravit interval mezi aktualizacemi pozice hada. Pro změnu frekvence generování jídla můžete upravit interval mezi generováním nového jídla.
# Definice úrovní obtížnosti
levels = {
"snadná": 0.5,
"střední": 0.2,
"těžká": 0.1
}
# Nastavení obtížnosti
obtiznost = "střední"
rychlost = levels[obtiznost]
# Funkce pro aktualizaci pozice hada
def aktualizuj_hada():
global had
# ... logika pro aktualizaci pozice hada ...
time.sleep(rychlost)
# Funkce pro generování jídla
def generuj_jidlo():
global jidlo
# ... logika pro generování jídla ...
time.sleep(rychlost)
Ujistěte se, že proměnná `rychlost` je definována před použitím v `aktualizuj_hada` a `generuj_jidlo` funkcích.
Hodnoty v `levels` slovníku představují intervaly v sekundách, takže nižší hodnoty znamenají rychlejší hru.
Vytvoření více variant hry.
Kromě změny rychlosti a generování jídla můžete hru dále upravovat přidáním variant. Například můžete zavést různé typy jídla, které dávají různé bonusy, nebo můžete přidat překážky do hry.
**Příklad: Různé typy jídla**
# Definice typů jídla
jidla = {
"jablko": 1,
"banán": 2,
"jahoda": 3
}
# Funkce pro sběr jídla
def sber_jidla():
global score
# ... logika pro sběr jídla ...
score += jidla[jidlo_typ]
# ... další kód pro generování nového jídla ...
Zvukové efekty
Využití knihoven pro přehrávání zvuků.
Pro přehrávání zvukových efektů ve hře Had můžete použít knihovnu `pygame`. Knihovna `pygame` nabízí širokou škálu funkcí pro práci se zvukem, včetně přehrávání zvukových souborů.
import pygame
# Inicializace zvuku
pygame.mixer.init()
# Načtení zvukových efektů
sound_sběr = pygame.mixer.Sound("sběr_jidla.wav")
sound_kolize = pygame.mixer.Sound("kolize.wav")
# Přehrávání zvukových efektů
def sber_jidla():
# ... kód pro sběr jídla ...
sound_sběr.play()
def konec_hry():
# ... kód pro konec hry ...
sound_kolize.play()
Ujistěte se, že jste importovali knihovnu `pygame` před použitím funkcí `pygame.mixer.init()`, `pygame.mixer.Sound()` a `sound.play()`.
Ujistěte se, že máte ve stejném adresáři, kde je váš kód, zvukové soubory s názvy "sběr_jidla.wav" a "kolize.wav".
Přidání zvukových efektů pro různé události v hře.
Zvukové efekty mohou hru Had obohatit a udělat ji poutavější. Můžete přidat zvukové efekty pro různé události, jako je sběr jídla, kolize s překážkou a konec hry.
Například:
import pygame
# ... další kód ...
# Načtení zvukových efektů
sound_sběr = pygame.
Závěr
Shrnutí naučených konceptů.
V tomto tutoriálu jsme se naučili základy programování v Pythonu, včetně definování proměnných, použití datových typů, práce s podmíněnými příkazy a cykly. Dále jsme se seznámili s knihovnou `turtle` pro grafické zobrazení a sestrojili jsme základní hru Had. Naučili jsme se implementovat pokročilé funkce, jako je skóre, statistiky, různé úrovně obtížnosti a zvukové efekty. Také jsme si ukázali, jak hru Had dále rozšiřovat a vylepšovat pomocí dalších funkcí a herních mechanismů.
Další možnosti rozvoje hry.
Hru Had lze dále rozvíjet mnoha způsoby. Mezi další možnosti patří:
- Přidání více typů jídla s různými bonusy.
- Vytvoření více úrovní s různými překážkami a soupeři.
- Implementace multiplayer módu pro hru dvou a více hráčů.
- Využití pokročilejší grafiky a animací pro vylepšení vizuálního vzhledu hry.
- Přidání herní hudby a dalších zvukových efektů.
Možnosti uplatnění získaných znalostí v jiných projektech.
Znalosti získané v tomto tutoriálu lze uplatnit v mnoha dalších projektech. Například můžete:
- Vytvořit další jednoduché hry v Pythonu, jako je Tetris, Space Invaders nebo Pong.
- Programovat jednoduché aplikace pro zpracování dat a automatizaci úkolů.
- Naučit se používat další knihovny a frameworky pro vývoj webových aplikací a mobilních aplikací.
Věřím, že znalosti a dovednosti, které jste získali v tomto tutoriálu, vám pomohou s dalším rozvojem ve světě programování a tvorby her. Přeji vám hodně štěstí s vaším dalším programováním!