Proboj
Programátorský boj

proboj

Deadline je 9.4 21:00

Dôležité linky

Zoznam zmien

Čo je to Proboj a ako funguje?

Proboj, skratka pre programátorský boj, je aktivita z KSP sústredení, kde hráči (vy) programujú vlastného bota, ktorý súťazí v predom pripravenej hre. K hre je taktiež pripravený template bota, ktorý zvláda komunikáciu so serverom a nejaké užitočné funkcie. Taktiež obsahuje veľmi jednoduchý príklad jednoduchého bota, ktorého môžete ďalej upravovať.

Štruktúra/harmonogram

Počas proboja bežia hry (matche), ktoré sa skladajú z niekoľko stovák kôl, v ktorých vaši boti hrajú. Počas tejto hry (matchu) sa nemení mapa, na ktorej hráte a ani ostatní boti, proti ktorým hráte.

Po každej hre (matchy) sa náhodne vygeneruje mapa a boti, ktorí na nej budú hrať a spustí sa hra (match).

Začiatok: 8.4.2025 19:30 Koniec: 9.4.2025 18:00

Ciele

Zabaviť sa a vyskúšať si niečo pekné nakódiť.

A pre tých kompetetívnejších z vás: Počas hry (matchu) bude váš bot získavať body za rôzne úkony (vid. Pravidlá) počas hry. Tieto body sa sčítavajú medzi hrami (matchmi). Kto bude mať na konci najviac bodov, vyhráva.

Pravidlá hry

Krátky opis hry

Každý hráč riadi vlastnú železničnú spoločnosť. Stavia železnice medzi mestami a riadi vlaky. Vlakmi prepravujete suroviny medzi fabrikami (mestami).

Hra sa hrá na "ťahy" - keď na vás príde rad môžete robiť ľubovolne veľa ťahov. Stavať železnice, nakupovať vlaky, riadiť vlaky a podobne.

Ako vyzerá mapa

Mapa má tvar šesťuholníku, ktorý je tvorený šesťuholníkovými políčkami.

Na mape sa na začiatku nachádzajú: + prázdne políčka (EmptyTile) - na tieto políčka môžete stavať koľajnice. + políčka s vodou (WaterTile) - na tieto políčka nie je možné stavať. + políčka s fabrikami (TileFactory) - na týchto políčkach sa nachádzajú fabriky.

Keď začnete stavať budú pribúdať políčka s koľajnicami. O tých sa dočítate viac nižšie.

Práca s šesťuholníkmi

Každé políčko má 3 súradnice: q, r, s. Správajú sa následovne:

img.png

My budeme ešte referovať na svetové strany šesťuholníkov. NE, E, SE, SW, W, NW. Niekedy možno budeme potrebovať pracovať aj s ich indexmi : 0,1,2,3,4,5.

Koľajnice

Po koľajniciach budú samozrejme jazdiť vaše vlaky. Najprv ich treba však postaviť.

Každé políčko je rozdelené do segmentov. Segment si predstavte ako čiaru od stredu políčka kolmú na niektorú z jeho stien (definujeme svetovou stranou).

Aby bolo políčko prejazdným musí mať aspoň dva segmenty. Nie všetky sú však validné koľajnice - nedajú sa ani len postaviť.

Existujú tieto typy koľajníc:

Rovná trať

Koľajnica spájajúca napríklad steny E a W. Môže však ja spájať napríklad E a NW. Nemôže však spájať E a NE alebo SE.

Výhybka

Koľajnica, ktorá dokáže meniť smery.

Má jeden rovný smer a jeden prehodený smer. Teda napríklad máme výhybku, ktorá spája steny E, W a NW, kde teda môžeme medzi W a NW prehadzovať.

vyhybky.png

Križovatka

Koľajnica, kde sa križujú dva smery napr. spája steny NE a SW a zároveň NW a SE. Prechádzať sa však dá len v jednom so smerov. Keďže už vieme, že napr. z NE na NW vlak ísť nedokáže.

krizovatky.png

Depo

Depo je zároveň základňou vašej operácie ale taktiež prechodné políčko. Dá sa cezeň prejsť do akéhokoľvek smeru, akurát možno budete musieť zastaviť vlak a "otočiť" ho.

depo.png

Fabrika

Koľajnica fabriky sa správa ako rovná trať. Akurát ju neviete stavať.

Vlastnosti koľajníc

Kapacita

Po každom políčku s koľajnicou môže jazdiť/stáť len jeden vlak. Výnimkou sú políčka depa a fabriky, tam môže byť dokonca 10^9+7 vlakov.

Ak sa budú dva vlaky snažia dostať na jedno políčko s koľajnicou zrazia sa. Teda sa oba zničia.

Právo výhybky

Právo výhybky, alebo taktiež vlastníctvo políčka, sa udeľuje hráčovi, ktorý na políčku postavý koľajnice ako prvý.

Ako názov napovedá, toto znamená aj, že ak na políčku vznikne výhybka, hráč s právom výhybky má výlučné právo výhybku prehadzovať.

Prejazd po cudzej koľajnici

Za každé políčko trate, ktoré prejdete po súperových koľajniciach sa vám strhne TrackPenalty * počet vagónov peňazí.

Herné mechaniky

V každom kole môžete urobiť niekoľko z týchto úkonov.

Stavba

Na vybratom políčku môžete postaviť niekoľko segmentov trate, v súlade s pravidlami koľajníc.

Stavba koľajníc ale nie je zadarmo.. už len začať práce, nachystať okolie stojí WorkCost a potom musíte zaplatiť za každý segment, čo postavíte ďalších SegmentCost.

Stavba depa

Depo môžete stavať na ľubovoľnom voľnom políčku. Stojí vás to DepotCost.

Ničenie

Ak políčko vlastníte môžete zničiť všetko, čo na ňom je. Ak je na políčku vlak nemôžeme ho zničiť.

Ničenie taktiež nie je zadarmo.. bude vás to stáť DestroyCost.

Nákup vlakov

Ak vlastníte depo, môžete kúpiť v depe vlak. Nákup vlaku stojí TrainCost.

Nákup vagónov

Pre existujúce vlaky môžete nakúpiť rozširujúce vagóny. Nákup vagónu stojí WagonCost. Vagóny sa dajú nakupovať len keď vlak stojí v depe.

Nakladanie vlakov

Ak váš vlak stojí vo fabrike môžete ho naložiť. Môže však niesť len jeden druh surovín.

Pre vlak môžeme vykonať len jeden úkon za kolo.

Vykladanie vlakov

Ak váš vlak stojí vo fabrike môžete ho vyložiť.

Pre vlak môžeme vykonať len jeden úkon za kolo.

Pohyb vlaku

Pohyb vlakov funguje veľmi realisticky. Vieme mu povedať, že má ísť. A on potom ide po trati. Ak chceme zatočiť, prirodzene, musíme prehodiť výhybku.

Na začiatku vlaku treba len určiť prvotný smer a tešiť sa ako ide po trati sám! Vlak sa však pohne v jednom kole jen o jedno políčko.

Podľa toho, ako sa "zatáčajú koľajnice" sa automaticky mení smer vlaku.

Ak vlak príde na koniec trate otočí sa a pokračuje naspäť.

Pre vlak môžeme vykonať len jeden úkon za kolo.

Zastavenie vlaku

Vlaku môžete dať príkaz na zastavanie.

Okrem operácií nakladania a vykladania to môže byť užitočné, napríklad ak chcete aby vlak zmenil smer.

Pre vlak môžeme vykonať len jeden úkon za kolo.

Prehadzovanie výhybky

Ak máte právo výhybky môžete zmeniť smer výhybky na danom políčku.

Trúbenie

Váš vlak môže aj trúbiť.

Herné objekty

Okrem mapy v hre interagujete aj s ...

Vlaky

Vlaky.. óó vlaky.. máte ich! Vlaky chodia po tratiach, prenášajú náklady a zarábajú peniaze.

Vlaky sa pohybujú len po koľajniciach.

Fabriky

V hre máme fabriky. Produkujú a/alebo spotrebúvajú nejaké suroviny. Vašou úlohou je prenášať suroviny medzi nimi. Niektoré fabriky vedia zobrať istý typ suroviny a spracovať ho na iný, viac hodnotný, typ suroviny.

Za jedno kolo dokáže každá fabrika vyprodukovať jednu surovinu.

Máme takéto typy fabrík a vzťahy medzi nimi:

tree.svg

Suroviny

Surovina Cena za transport Recept
Iron Ore 1 -
Coal 1 -
Logs 1 -
Grain 1 -
Steel 3 Iron Ore, Coal
Planks 2 Logs
Food 2 Grain
Goods 6 Steel, Planks

Depá

Depá sú vaše základne. Môžete do nich nakupovať vlaky, nakupovať vagóny.

Depá môžete stavať na akomkoľvek voľnom políčku.

Koľajnice

O koľajniciach ste sa všetko dozvedeli... Staviate ich podľa pravidiel, jazdia po nich vaše vlaky.

Zarábanie peňazí

Peniaze zarábate za prevoz surovín medzi fabrikami (mestom).

Keď z fabriky A do fabriky B dopravíte tovar T vaša odmena sa vypočíta podľa tohoto vzorca:

odmena = distance * amount * materialTravelCost * materialCostCoefficient

Hodnotenie

Vaše finálne skóre je zostatok na vašom bankovom konte.

Konštanty

MaxRounds     = 5000
StartingMoney = 10000
TrainCost     = 1000
WagonCost     = 500
WagonCapacity = 10
MaxWagons     = 10
# Cost per travelled tile
MaterialTravelCost = 2
DepotCost          = 2000
# Cost per built segment
SegmentCost = 50
# Setup fee for every build operation
WorkCost    = 100
DestroyCost = 100
# Penalty for using oponent track
TrackPenalty = 50

What's in the box?

Čo odovzdávať?

Stačí zazipovať súbory player.py, proboj.py a weapons.py (nie priečinok!), prípadne ďalšie, ak si si nejaké navyše vytvoril.