Skip to content

Hra se simulací kovbojů pomocí Blockly programů z Jarního KSP 2024

Notifications You must be signed in to change notification settings

ksp/jksp2024-blockly-kovbojove

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Blockly hra na JKSP2024

Hra, ve které jednotlivé týmy tvoří pomocí Blockly syntaxe programy pro kovboje (a jejich střely), kteří se poté všichni utkávají na společné mapě tvořené čtvercovou sítí (na toroidu, tedy lze přecházet přes hrany dokola).

Celá hra běží v krocích, vždy krok kovbojů následovaný několika kroky střel, poté opět kovbojové a tak stále dokola. Program pro každého kovboje/střelu vždy dostane aktuální kontext (může zjišťovat pozice ostatních kovbojů, zlata, …) a jeho úkolem je vydat jednu instrukci pro aktuální tah. Tím jeho výpočet končí. Mezi jednotlivými koly není dostupná žádná paměť a program tak počítá každý krok samostatně – v podstatě je to jen reakční agent, vybírá následující krok na základě stavu okolí.

Pokud má daný tým více kovbojů nebo střel, tak se stejný program používá pro každého z nich.

Spuštění (ve venv)

  1. Vytvoření venv (stačí jednou):

    python3 -m venv venv
    . venv/bin/activate
    pip3 install -r requirements.txt
  2. Spuštění:

    . venv/bin/activate
    ./run.py

Poté je web dostupný na URL (loginy a hesla se definují v souboru run.py):

Soubory

Hra ukládá několik souborů:

  • data/team_X.json - soubor odkazující na všechny programy týmu X a určující, který je z nich je aktivní
  • data/cowboy_X_1234.xml - soubor s XML zápisem programu pro kovboje týmu X tak, jak přišel z editoru na frontendu
  • data/bullet_X_1234.xml - totéž, ale pro střelu týmu X
  • save/save_000042_0.json - uložená hra po vykonání kola daného čísla (první číslo je číslem tahu kovbojů, druhé číslo je číslo tahu střel v rámci tohoto tahu kovbojů, 0 je tah kovbojů a další čísla jsou tahy střel)

Architektura

Program je napsaný v Pythonu využívají Flask jako frontend pro web. Hlavní části jsou:

Celý program je napsaný tak, že využívá sdílené paměti mezi vlákny. Musí tedy běžet v rámci jednoho procesu (pozor při spuštění jinak než přes run.py).

About

Hra se simulací kovbojů pomocí Blockly programů z Jarního KSP 2024

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published