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.
 
 

135 lines
5.3 KiB

import time
import os
def vycisti_obrazovku():
"""Vyčistí obrazovku terminálu, aby text nebyl nepřehledný."""
os.system('cls' if os.name == 'nt' else 'clear')
def vypis_pomalu(text, zpozdeni=0.03):
"""
Vypíše text znak po znaku pro lepší herní (RPG) atmosféru.
Parametr 'zpozdeni' určuje, jak rychle se text vypíše.
"""
for znak in text:
# parametr end='' způsobí, že 'print' automaticky neodřádkuje
# flush=True vynutí okamžité vypsání znaku na obrazovku
print(znak, end='', flush=True)
time.sleep(zpozdeni)
print() # Odřádkování na samotném konci
# Definice místností (mapa hry)
# Každá místnost je slovník (dictionary) obsahující popis a cesty do dalších místností.
# Umožňuje to jednoduše tvořit i velmi složitou mapu.
mistnosti = {
'jeskyne': {
'popis': 'Stojíš v temné vlhké jeskyni. Slyšíš kapání vody a cítíš chlad.',
'vychody': {'sever': 'chodba'}, # Klíč je směr, hodnota je ID další místnosti
'predmety': ['klic'] # Seznam předmětů ležících v místnosti
},
'chodba': {
'popis': 'Jsi v dlouhé kamenné chodbě. Na stěnách jsou podivné prastaré malby.',
'vychody': {'jih': 'jeskyne', 'vychod': 'pokladnice'},
'predmety': []
},
'pokladnice': {
'popis': 'Ocitl ses v obrovské místnosti se zlatými dveřmi na konci a podstavcem uprostřed.',
'vychody': {'zapad': 'chodba'},
'predmety': ['mec']
}
}
# Počáteční stav hry (proměnné pro sledování stavu hráče)
aktualni_mistnost = 'jeskyne'
inventar = [] # Prázdný seznam pro předměty
def hraj_hru():
"""Hlavní smyčka hry, která zpracovává příkazy od hráče."""
global aktualni_mistnost # Potřebujeme měnit globální proměnnou
vycisti_obrazovku()
vypis_pomalu("Vítej v textovém dobrodružství!")
vypis_pomalu("K dispozici máš příkazy: 'jdi [smer]', 'vezmi [predmet]', 'inventar', 'pomoc', 'konec'")
print("-" * 50)
time.sleep(1)
# Hlavní herní smyčka (běží do nekonečna, dokud ji neukončíme)
while True:
# Získání dat o aktuální lokaci
mistnost_data = mistnosti[aktualni_mistnost]
print("\n" + "=" * 50)
vypis_pomalu(mistnost_data['popis'])
# Zobrazení dostupných východů
vychody = list(mistnost_data['vychody'].keys())
print(f"Vidíš cesty na: {', '.join(vychody)}")
# Zobrazení předmětů v místnosti
if mistnost_data['predmety']:
print(f"Na zemi leží: {', '.join(mistnost_data['predmety'])}")
# Neustálý výpis inventáře, pokud v něm něco je
if inventar:
print(f"[ Tvůj inventář: {', '.join(inventar)} ]")
# Vstup od hráče, vše převedeme na malá písmena a rozdělíme podle mezer do seznamu
prikaz = input("\nCo chceš udělat? > ").lower().strip().split()
if not prikaz:
continue # Hráč nic nezadal a zmáčkl Enter
akce = prikaz[0] # První slovo je samotná akce
# ==========================================
# Zpracování jednotlivých příkazů
# ==========================================
if akce == 'konec':
print("Díky za hru!")
break # Přeruší smyčku while a ukončí hru
elif akce == 'pomoc':
print("\n--- NÁPOVĚDA ---")
print("Můžeš psát následující příkazy:")
print(" jdi [sever/jih/zapad/vychod] - přesun do jiné místnosti")
print(" vezmi [predmet] - sebereš předmět ze země")
print(" inventar - vypíše, co máš u sebe")
print(" konec - ukončí hru")
print("----------------\n")
elif akce == 'inventar':
# Kontrola, zda seznam inventar není prázdný
if inventar:
print(f"Máš u sebe: {', '.join(inventar)}")
else:
print("Tvůj inventář je prázdný.")
elif akce == 'jdi':
if len(prikaz) < 2:
print("Chyba: Musíš zadat směr (např. 'jdi sever').")
continue
smer = prikaz[1] # Druhé slovo je směr
if smer in mistnost_data['vychody']:
aktualni_mistnost = mistnost_data['vychody'][smer]
vycisti_obrazovku()
vypis_pomalu(f"Jdeš na {smer}...")
else:
print("Tímto směrem nemůžeš jít!")
elif akce == 'vezmi':
if len(prikaz) < 2:
print("Chyba: Musíš zadat, co chceš vzít (např. 'vezmi klic').")
continue
predmet = prikaz[1]
if predmet in mistnost_data['predmety']:
mistnost_data['predmety'].remove(predmet) # Odebere ze země
inventar.append(predmet) # Přidá hráči
print(f"Vzal jsi předmět: {predmet}.")
else:
print(f"Předmět '{predmet}' tady nikde nevidíš.")
else:
print("Neznámý příkaz. Zkus např. 'jdi sever', 'vezmi klic', 'pomoc' nebo 'konec'.")
if __name__ == "__main__":
hraj_hru()