WagZol / fun-u3eBattleship

0 stars 0 forks source link

StartResponse #6

Open WagZol opened 5 years ago

WagZol commented 5 years ago

Példa egy InitMessage-re amit a klines küld a szerver felé a játék indulásakor:

{
"board":[[" ", " ", " ", " ", " ", " ", " ", " ", " ", " "], 
[" ", " ", " ", " ", " ", " ", " ", " ", " ", " "], 
[" ", " ", " ", " ", " ", " ", " ", " ", " ", " "], 
[" ", " ", " ", " ", " ", " ", " ", " ", " ", " "], 
[" ", " ", " ", " ", " ", " ", " ", " ", " ", " "], 
[" ", " ", " ", " ", " ", " ", " ", " ", " ", " "], 
[" ", " ", " ", " ", " ", " ", " ", " ", " ", " "], 
[" ", " ", " ", " ", " ", " ", " ", " ", " ", " "], 
[" ", " ", " ", " ", " ", " ", " ", " ", " ", " "], 
[" ", " ", " ", " ", " ", " ", " ", " ", " ", " "], 
[" ", " ", " ", " ", " ", " ", " ", " ", " ", " "]],
"ships":{
"De": [[0,1], [0,2]],
"De2": [[0,1], [0,2]],
"De3": [[0,1], [0,2]],
"De4": [[0,1], [0,2]],
"Su1": [[0,1], [0,2], [0,3]],
"Su2": [[0,1], [0,2], [0,3]],
"Su3": [[0,1], [0,2], [0,3]],
"Cr1": [[0,1], [0,2], [0,3], [0,4]],
"Cr2": [[0,1], [0,2], [0,3], [0,4]],
"Ca1": [[0,1], [0,2], [0,3], [0,4], [0,5]]},
"nextPath": "/cursor"}

Magyarázat: De-Destroyer, Su-Submarine, Cr-Cruiser, Ca-Carrier

Kérdés: Érdemes minden hajót elküldenem amit telepíteni kell? Mármint 1 típusból többet is! mert ugye a táblán ezek a pontos jelölések lesznek, Max ha megadom Hogy pl Su és mi a smaple-je akkor tudnod kell hogy "Su*" -ot keress a Submarine-re.

WagZol commented 5 years ago

Mi lenne ha kicsit szembe mennék azzal amit tegnap mondtam és mégis használnánk egy Design Pattern-t?

Vmi azt súgja hogy nem külön külön message-ek kellenénk külön class-okként hanem buildelni kéne őket, hiszen van amikor a táblát küldjük, a nextPath-t mindig. És ugye a Spring Bean-ekkel kommunikál, azaz ahogy mondtam DataClassokkal, és ott minden attribútum konstruktorban kerül átadásra és geterrel van kikérve. És ITT jönnek képbe a teleszkópos konstruktor=>Builder pattern Mit gondolsz?

bimlas commented 5 years ago

Majd még agyalok, de én is feleslegesnek érzem, hogy ugyanazt elküldd többször. Bár akkor meg valami számlálót kell átküldeni azokban az üzenetekben, ahol a hajók listáját küldöd át. Plusz akkor is kell ez a számláló, mikor pl. elsüllyed egy hajó. Asszem a tábla mellett ezt a számlálót is minden körben el kell küldeni, de még fejben lecsupaszítom a dolgot, hogy valamilyen egységesen használható megoldás legyen.

bimlas commented 5 years ago

A build alapjába véve jó ötletnek tűnik, bár nemtom mennyire lenne kihasználva. Ha az üzenetek részeit sűrűn kellene kombinálni egymással, akkor megérné, de nincs olyan sokféle response, hogy build-elni kelljen (szerintem). A build-nek akkor érzem előnyét, ha menet közben kell "egyedi recept" alapján összerakni valamit, de itt nem érzem szükségét.

WagZol commented 5 years ago

Nem mindig kell minden, pl a cursor coordinátái, nem mindig kell a komplett tábla csak minden második response-ban.

Azért is írtam le hogy 3 féle response van amiben van közös és van nem közös vonás is. Mivel nálam Beanekkel van megoldva a message, ezért vagy builder-t használok vagy lesznek olyan tulajdonságok amik null-al kéne hogy visszaérjenek de a json formai leírsba olyasmit olvastam ma hogy null-t érdemes kerülni mert néha eltérhet a jelölés, illetve az csak string "null" (van ahol NULL, van ahol null stb stb)

Például a ships az általam vázolt felállásban a starter response-on kívül mindig null lesz, mert nem kell a későbbiekben csak 1 ship. plusz nem nagyon lehet bezsédes nevet adni neki, mivel egyszer hajótípusok, egyszer telepíteni kívánt hajók stb stb...

Ezek az indokaim a builder mellett. Persze ha van egy jobb konstrukciód a response-ok felépítésére hallgatom, csak annyit kérek hogy a hétvégén döntsd el, mert addig én sem bírok haladni a kóddal(nem akarlak sürgetni, nyugi)