Rieccomi qui,
come vi anticipavo ormai un po' di tempo fa, tra una cosa e l'altra ho guardato anche il codice "vecchio" e ho fatto un po' di pulizia dove mi sembrava opportuno.
Come al solito vi riporto in breve le modifiche che ho fatto:
tl;dr Nella classe Board ho trovato un modo, secondo me più elegante, per fare il pickUpTiles (e conseguentemente anche il check).
Se vi interessano i dettagli: Il principio dietro l'algoritmo è essenzialmente rimasto inalterato, l'unica differenza è che, invece di avere diversi if per gestire le 4 situazioni, ho riordinato il tutto in modo che si potesse fare iterativamente. L'algoritmo gioca sul fatto che, se il range è valido, solo 2 delle 4 coordinate differiscono tra di loro, pertanto può essere vista come un'iterazione o "in colonna" o "in riga" (es: se le righe sono uguali, il for che itera sulle righe rimane fermo e si itera solo sulle colonne) .
Nella classe Bag ho implementato il Flyweight pattern sulle istanze delle tile, non era necessario, ma non costava nulla e ora al posto di avere 122 istanze di Tile, ce ne sono solo 6.
Ho uniformato i test su Board al resto della suite in modo da avere uno stile pressochè coerente con il resto. Ho aggiunto alcuni guard statement e alcune asserzioni dove mancavano, ma di fatto quello che viene testato è rimansto lo stesso a meno del nome e dei raggruppamenti.
⚠ ho risolto un bug nella deserializzazione per cui deserializzando Game, i player non avevano le personal card. Il motivo dietro il bug era essenzialmente legato alla mancanza di un pezzo di logica che mi è sfuggito anche in fase di testing, quindi bravo me per aver scritto dei test che non testavano🙃.
Rieccomi qui, come vi anticipavo ormai un po' di tempo fa, tra una cosa e l'altra ho guardato anche il codice "vecchio" e ho fatto un po' di pulizia dove mi sembrava opportuno. Come al solito vi riporto in breve le modifiche che ho fatto:
Board
ho trovato un modo, secondo me più elegante, per fare ilpickUpTiles
(e conseguentemente anche il check).Bag
ho implementato ilFlyweight pattern
sulle istanze delle tile, non era necessario, ma non costava nulla e ora al posto di avere 122 istanze diTile
, ce ne sono solo 6.FileIOManager
.