Bones,
Estic tinguent molts problemes per entendre i fer funcionar els enrocs generics.
He pensat i he començat a desenvolupar el següent:
Al fer checkMovement(comprobar un moviment) miro si es un possible enroc. Si no ho es, farem el check com sempre. En el cas que ho sigui, per estalviar feina he pensat que podem retornar el mateix (Pair<List moveActions,List Positions>) usant la segona llista per guardar les posicions a les que han d'anar la peça que fa l'enroc en primer lloc i la peça amb la que enroca en segon.
Un cop retornem aixo, el consoleGame rebria aquest pair, i si en la List moveActions li arriva "Enroc" sabrà que la segona llista conté les dues posicions que han de rebre les peces de les caselles llegides (origen i desti llegits per consola). Aixi dons la peça origen anirà a la primera posicio de la segona llista i la peça desti anira a la segona.
Per implementar aixó faré un nou applyCastling que rebrà per parametre origen i desti llegits per pantalla i la llista que retorna el checkMovement. Dins d'aquesta funcio posaré cada peça al seu lloc.
El problema principal que m'estic trobant es a l'hora de pensar i construir tota la logica, no exagero si dic que porto 6 hores canviant el codi.
L'enroc ens el poden entrar amb l'ordre de peces que el jugador vulgui, pero sempre s'ha de moure la primera peça de l'enroc a la casella centre i l'altre una mes enllà. Pero clar, si ens movem d'esquerra a dreta les posicions a les que van les nostres peces son mig i mig+1 si la peça que està en primer lloc de l'enroc està a l'esquerra, pero si aquesta està a la dreta (a l'esquerra està la peça que va en segon lloc a la declaració de l'enroc) haurien de ser mig i mig-1. Ara també s'ha de contemplar tot aixó pero posant d'exemple que l'enroc "REI/TORRE" ens entra com a torre/rei. He de validar tot pero simulant que el rei es el que s'ha de moure al centre.
Se que segurament s'entendrà poc, en part perque jo mateix entenc poc. Si no podem arribar a una resposta clara podem parlar-ho en trucada que sempre es mes facil.
M'agradaria saber si la idea del primer punt es bona i un aclariment sobre el segon punt (les comprobacions).
Bones, Estic tinguent molts problemes per entendre i fer funcionar els enrocs generics. He pensat i he començat a desenvolupar el següent:
Al fer checkMovement(comprobar un moviment) miro si es un possible enroc. Si no ho es, farem el check com sempre. En el cas que ho sigui, per estalviar feina he pensat que podem retornar el mateix (Pair<List moveActions,List Positions>) usant la segona llista per guardar les posicions a les que han d'anar la peça que fa l'enroc en primer lloc i la peça amb la que enroca en segon. Un cop retornem aixo, el consoleGame rebria aquest pair, i si en la List moveActions li arriva "Enroc" sabrà que la segona llista conté les dues posicions que han de rebre les peces de les caselles llegides (origen i desti llegits per consola). Aixi dons la peça origen anirà a la primera posicio de la segona llista i la peça desti anira a la segona. Per implementar aixó faré un nou applyCastling que rebrà per parametre origen i desti llegits per pantalla i la llista que retorna el checkMovement. Dins d'aquesta funcio posaré cada peça al seu lloc.
El problema principal que m'estic trobant es a l'hora de pensar i construir tota la logica, no exagero si dic que porto 6 hores canviant el codi. L'enroc ens el poden entrar amb l'ordre de peces que el jugador vulgui, pero sempre s'ha de moure la primera peça de l'enroc a la casella centre i l'altre una mes enllà. Pero clar, si ens movem d'esquerra a dreta les posicions a les que van les nostres peces son mig i mig+1 si la peça que està en primer lloc de l'enroc està a l'esquerra, pero si aquesta està a la dreta (a l'esquerra està la peça que va en segon lloc a la declaració de l'enroc) haurien de ser mig i mig-1. Ara també s'ha de contemplar tot aixó pero posant d'exemple que l'enroc "REI/TORRE" ens entra com a torre/rei. He de validar tot pero simulant que el rei es el que s'ha de moure al centre.
Se que segurament s'entendrà poc, en part perque jo mateix entenc poc. Si no podem arribar a una resposta clara podem parlar-ho en trucada que sempre es mes facil.
M'agradaria saber si la idea del primer punt es bona i un aclariment sobre el segon punt (les comprobacions).