Toto je malý repozitář na ukázku malých her pro Python Game Jam a tento repozitář šlouží jako odrazový můstek pro vaše hry, které budete tvořit v pythonu
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.
 
 
skrabanek c70f28e9f2 Přidání kompletních výukových materiálů pro Game Jam (Pygame, Ren'Py, Pure Python) a dokumentace 2 weeks ago
..
01_obesenec.py Přidání kompletních výukových materiálů pro Game Jam (Pygame, Ren'Py, Pure Python) a dokumentace 2 weeks ago
02_textova_hra.py Přidání kompletních výukových materiálů pro Game Jam (Pygame, Ren'Py, Pure Python) a dokumentace 2 weeks ago
README.md Přidání kompletních výukových materiálů pro Game Jam (Pygame, Ren'Py, Pure Python) a dokumentace 2 weeks ago

README.md

Pure Python Hry v Terminálu 🐍🎮

Tato složka obsahuje ukázky jednoduchých her, které běží přímo v příkazovém řádku (terminálu) a k jejichž vytvoření není potřeba žádná externí knihovna typu Pygame. Jsou ideální pro seznámení se se základy programovací logiky (cykly, podmínky, slovníky, seznamy).

Užitečné tipy a triky pro terminálové hry

Zde je několik zajímavých technik, které můžete ve svých hrách využít:

1. Čištění obrazovky

Pro iluzi animace nebo zobrazení nové "scény" je užitečné vymazat obsah terminálu, aby se starý text nehromadil nahoře.

import os

def vycisti_obrazovku():
    # 'cls' funguje na Windows, 'clear' na Linux/Mac
    os.system('cls' if os.name == 'nt' else 'clear')

# Příklad použití:
print("Stará scéna")
vycisti_obrazovku()
print("Nová scéna (to předchozí zmizelo)")

2. Pomalé vypisování textu (RPG efekt)

V adventurách vypadá skvěle, když se text nevypíše najednou v jedné milisekundě, ale znak po znaku (jako na psacím stroji). Hra má hned lepší atmosféru.

import time
import sys

def vypis_pomalu(text, zpozdeni=0.05):
    for znak in text:
        print(znak, end='', flush=True) # flush=True je nutné, aby se znak ihned zobrazil
        time.sleep(zpozdeni) # Uspí program na zadaný počet sekund
    print() # Na konci odřádkujeme pro další text

vypis_pomalu("Probouzíš se v temném lese a nic si nepamatuješ...")

3. Barevný text v terminálu (ANSI escape kódy)

Do terminálu můžete psát barevně pomocí speciálních znakových sekvencí. (Poznámka: Ve starších Windows cmd to nemusí fungovat bez zapnutí podpory, ale v moderních terminálech to funguje spolehlivě.)

# Definice barev pomocí ANSI kódů
CERVENA = '\033[91m'
ZELENA = '\033[92m'
ZLUTA = '\033[93m'
MODRA = '\033[94m'
RESET = '\033[0m' # Resetuje barvu zpět na normální (VELMI DŮLEŽITÉ)

print(f"Tohle je normální text.")
print(f"{CERVENA}Pozor, nepřítel útočí!{RESET}")
print(f"{ZELENA}Úspěšně jsi otevřel truhlu a našel jsi {ZLUTA}zlato{ZELENA}.{RESET}")

4. Náhodnost

Bez náhody by hry byly předvídatelné a nudné. Modul random je váš nejlepší přítel!

import random

# Hod kostkou (náhodné celé číslo od 1 do 6)
kostka = random.randint(1, 6)
print(f"Hodil jsi: {kostka}")

# Náhodný výběr položky ze seznamu
nepratele = ["Skřet", "Kostlivec", "Drak", "Sliz"]
nahodny_nepritel = random.choice(nepratele)
print(f"Objevil se divoký {nahodny_nepritel}!")

5. Slovníky pro tvorbu herního světa (Mapy)

Jak je ukázáno ve skriptu 02_textova_hra.py, nejlepší způsob jak uchovávat data o místnostech a předmětech v nich, je použití struktury dat zvané dictionary (slovník). Můžete tak jednoduše propojovat místnosti pomocí směrů a ukládat do nich seznamy věcí.

Nebojte se experimentovat a zkusit si ukázkový kód upravit! Co takhle přidat do textové hry zdraví postavy, bojový systém, nebo zamčené dveře, které vyžadují klíč z jiné místnosti?