Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Validace mapy #83

Open
encukou opened this issue Nov 20, 2018 · 16 comments
Open

Validace mapy #83

encukou opened this issue Nov 20, 2018 · 16 comments
Labels
Projects

Comments

@encukou
Copy link
Member

@encukou encukou commented Nov 20, 2018

Řešte až po #82.

@encukou encukou added the blocked label Nov 20, 2018
@vahalova vahalova self-assigned this Nov 22, 2018
@befeleme befeleme removed the blocked label Nov 29, 2018
@vahalova
Copy link
Member

@vahalova vahalova commented Nov 29, 2018

Jsem si říkala, jak to pojmout... je ok udělat na to zvlášť program map_validator.py a pak ho pouštět nějak $ python map_validator.py map4.json prostě jen když si někdo udělá novou mapu.
Výstup:
OK!
nebo Nooo, your map is wrong! error: [3, 11],[3, 12]
nebo na to napsat test nebo podmínku přímo do programu, když vytváříme ty seznamy políček a nekomplikovat si život? Já nevím.

@encukou
Copy link
Member Author

@encukou encukou commented Nov 29, 2018

Jaké vidíš výhoday a nevýhody těchto řešení?
Které bude příjemnější na použití?
Jak se budou testovat?
Napadají tě i jiné varianty?

@vahalova
Copy link
Member

@vahalova vahalova commented Nov 29, 2018

Program speciál: zavařím si mozek, ale budu šťastná
Test: pustí se při každém přidání mapy na GH, ale i u každého PR :-/
Přímo do programu: Při tom by se dalo vyřešit i to případné přeházení vrstev, ale to je asi zbytečný.

Nemyslím, že by se toto dělo tak často a byl to tak zásadní problem. Když na to bude extra program, tak ho pustíme 10x, když to bude v testech, tak se to pustí při každém PR a bude to znovu a znovu kontrolovat, to by u 10 map mohlo trvat(?) (Dá se nastavit Travis, aby pouštěl test, jen když přidáváš určitý typ souboru?). Když na to bude extra program, tak se na to pak třeba nesmí zapomenout.

Ten extra program by mohl po kontrole přidat do jsonu "razítko" a do programu pak dopsat, když nenajdeš při načítání na mapě razítko tak ji nepouštěj => není zkontrolovaná, ale to asi úplně neřeší, když se ta mapa pak změní.
Jako asi fakt nevím, jaké je na to ideální řešení.

@encukou
Copy link
Member Author

@encukou encukou commented Nov 29, 2018

když to bude v testech, tak se to pustí při každém PR a bude to znovu a znovu kontrolovat, to by u 10 map mohlo trvat(?)

Tak kontrola by neměla být tak náročná. Jestli to u 10 map bude trvat víc než vteřinu, je něco špatně.

@encukou
Copy link
Member Author

@encukou encukou commented Nov 29, 2018

Jako asi fakt nevím, jaké je na to ideální řešení.

Nehledej teď ideální řešení, ale dostatečné řešení. Nebo líp, nejlepší co tě napadne :)
Řekni pak pro co se rozhodneš.

@vahalova
Copy link
Member

@vahalova vahalova commented Nov 29, 2018

Tak já tam dodělám test "Projdi všechny mapy ve složce a zkontroluj"

@encukou
Copy link
Member Author

@encukou encukou commented Nov 29, 2018

OK! To zní dobře.
Napiš ale i test "tahle špatná mapa neprojde validací", aby se ověřilo že ta validace fakt funguje.

@vahalova
Copy link
Member

@vahalova vahalova commented Dec 10, 2018

Ne všechny mapy jsou teď dobře pro validator. Až budeme zakládat složku s opravdu herníma mapama, tak tam dodělám automatickou kontrolu všech map ve složce.
Jinak zatím nefunguje kontrola:

  • směr laseru navazuje na další políčka

  • laser správně začíná a končí

  • není nad sebou 2x stejný laser, který se pohledově kryje

to nebudeme kontrolovat: jestli je na mapě 8 startů

@vahalova
Copy link
Member

@vahalova vahalova commented Dec 10, 2018

Správné pořadí políček je:

  • zem
  • díra, start, oprava, pás, otočka -> jen jedno z nich
  • vlajka
  • pusher, laser, zeď -> jedno kolik z nich
@anezkamll
Copy link
Contributor

@anezkamll anezkamll commented Dec 10, 2018

Ten poslední bod pořadí políček je pro mě matoucí s poznámkou jedno, kolik z nich. Chápu, že na jednom políčku může být jak zeď, tak pusher, tak laser, ale myslím, že jsi říkala, že víc laserů přes sebe být nemůže, víc pusherů taky nedává smysl, naopak více zdí se určitě využívat bude. Jak to tedy funguje?

@encukou
Copy link
Member Author

@encukou encukou commented Dec 10, 2018

nekontroluje jestli je na mapě 8 startů

Teoreticky můžou být i mapy pro míň robotů. Starty pak fungují podobně jako vlajky:

  • Vlajky/starty musí být číslované od jedné do N, pro každé číslo musí být na mapě jen jedna vlajka/start

A ještě chybí:

  • Není nad sebou 2× stejný pusher
  • Není nad sebou 2× stejná zeď
@vahalova
Copy link
Member

@vahalova vahalova commented Dec 10, 2018

Jo zatím to bere, že třeba nemáš schovaný laser pod pásem, nebo 2 vlajky na sobě a takový ty věci, co nejsou vidět.
Tu vrstvu pusher/laser/zeď zkusím pořešit líp.
Ještě mě napadlo:

  • vlajka nemůže být na díře a startu (na pásu a otočce, by to mohlo být zajímavý)
@encukou encukou added this to Backlog in Projekt Mar 19, 2019
@befeleme befeleme self-assigned this Aug 7, 2019
@befeleme
Copy link
Contributor

@befeleme befeleme commented Aug 27, 2019

Správné pořadí políček je:
zem
díra, start, oprava, pás, otočka -> jen jedno z nich
vlajka
pusher, laser, zeď -> jedno kolik z nich

Jestli by to nemělo být trochu víc rozepsané:

  • earth
  • one of the following: hole, start, repair, belt, gear
  • flag
  • laser
    • horizontal
    • vertical
  • wall
    • (North)
    • (West)
    • (South)
    • (East)
  • pusher
  • stop (pouze pro testy)

Může být na jednom políčku zem, pas, laser a ještě z jedné strany ohraničení stěnou. Stejně tak pusher by měl asi být u zdi. Laser bud nekončí, nebo končí na zdi - musí byt na dvou vrstvách. Obecně se přiklaním ke kreslení podle pravidla: 1 typ políčka == 1 vrstva mapy.
Ještě se prolouskám validatorem a ověřím své myšlenkové pochody :)

@befeleme
Copy link
Contributor

@befeleme befeleme commented Aug 28, 2019

Po validaci v kodu vidim to tak:

* earth
* one of the following: start, hole, 
* one of the following:  repair, belt, gear
* flag
* laser, wall, pusher
* _stop (pouze pro testy)_

Posunula jsem start na samostatny radek kvuli testum, ktere obcas stavi start robota na divna mista (ale nikdy na diru).
V kodu se resi smer policek, takze neni treba rozepisovat lasery a zdi.

@befeleme
Copy link
Contributor

@befeleme befeleme commented Aug 29, 2019

* [ ]  laser správně začíná a končí

Je začátek laseru vždy na zdi?
Je konec laser vždy na zdi nebo na konci hrací plochy?
@vahalova může znát odpověď.

@befeleme befeleme moved this from Backlog to Rozdělané in Projekt Aug 29, 2019
@encukou
Copy link
Member Author

@encukou encukou commented Aug 29, 2019

V původní hře je začátek i konec vždy na zdi. I na konci hrací plochy je vždycky zeď, když tam končí laser.

@befeleme befeleme removed their assignment Sep 18, 2019
@befeleme befeleme moved this from Rozdělané to Todo in Projekt Oct 29, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Projekt
  
Todo
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
4 participants