3.6 KiB
🎮 Návod pro studenty: Jak připravit hru pro GameGlass Portál
Ahoj! Abys mohl/a svou hru nahrát na náš školní GameGlass portál a ukázat ji všem ostatním přímo ve webovém prohlížeči, stačí dodržet několik jednoduchých pravidel.
1. Pravidla pro Pygame (Grafické hry)
Aby tvoje Pygame hra mohla běžet uvnitř internetového prohlížeče, musí být strukturována tzv. "asynchronně" (aby nezamrzla prohlížeč).
Musíš udělat přesně tyto 3 kroky ve svém kódu:
-
Importuj
asyncio: Na úplný začátek souboru, hned kimport pygame, přidej:import pygame import asyncio -
Zabal hru do asynchronní funkce: Celý kód tvé hry (nebo alespoň tvoji hlavní herní smyčku) musíš zabalit do asynchronní funkce (např.
async def main():). A na úplný konec souboru pak hru spustit pomocíasyncio.run(main()). -
Přidej odpočinkovou pauzu do smyčky: Do tvé hlavní smyčky
while True:musíš (ideálně nakonec smyčky) přidat magické zaříkávadlo:await asyncio.sleep(0)Tento příkaz řekne prohlížeči: "Teď si můžeš na milisekundu odpočinout a vykreslit obrazovku". Bez tohoto příkazu hra okamžitě zamrzne a spadne!
Ukázková kostra správné Pygame hry:
import pygame
import asyncio
# --- Zde dej své funkce a nastavení ---
async def main():
pygame.init()
screen = pygame.display.set_mode((800, 600))
clock = pygame.time.Clock()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Zde se děje logika hry a vykreslování...
screen.fill((0, 0, 0))
pygame.display.flip()
# Omezení FPS
clock.tick(60)
# MAGICKÝ PŘÍKAZ (NUTNÉ PRO WEB!)
await asyncio.sleep(0)
pygame.quit()
# Spuštění asynchronní hry
if __name__ == "__main__":
asyncio.run(main())
2. Pravidla pro terminálové hry (Čistý Python textovky)
Pokud děláš obyčejnou textovou hru (pouze příkazy print a input), je to velmi jednoduché:
- Nemusíš používat
asynciovůbec. - Můžeš normálně používat
input("Zadej volbu: "). Portál sám vytvoří interaktivní textové pole. - Pokud chceš "vyčistit obrazovku" terminálu, můžeš použít klasický příkaz:
import os os.system('cls') # nebo os.system('clear')
3. Pravidla pro Ren'Py (Vizuální Novely)
- Tvoje hra bude spuštěna přes Web Assembly engine Ren'Py.
- Krok navíc: Před zabalením do ZIPu jdi do složky své hry a zazipuj POUZE obsah složky
game/(tedy soubory.rpya složku s obrázkyimages/). Portál nepotřebuje zbytek enginu (soubory.exe,.sh), engine už v portálu je.
⚠️ DŮLEŽITÉ UPOZORNĚNÍ K CESTÁM V KÓDU (Pro všechny hry)
NIKDY ve svém kódu nepoužívejte tzv. "natvrdo zadrátované cesty" k obrázkům nebo k vašemu disku! (Tzv. Absolutní cesty).
❌ ŠPATNĚ (Na webu to spadne):
os.chdir(r"C:\Users\Student\Plocha\MojeHra") # NIKDY!
image = pygame.image.load(r"C:\Users\Student\Plocha\MojeHra\assets\hrdina.png")
✅ SPRÁVNĚ (Relativní cesty): Aplikace běží v paměti na internetu (kde disk C:\ vůbec neexistuje). Používejte relativní cesty:
image = pygame.image.load("assets/hrdina.png")
Až budeš mít hotovo, všechny své soubory a složky označ a zabal přímo do archivu .ZIP a nahraj do formuláře na portálu!