udg-propro-spring-2020 / projecte-2020-a3

projecte-2020-a3 created by GitHub Classroom
0 stars 1 forks source link

Comprobar escac / escac i mat #20

Closed DavidNagisa333 closed 4 years ago

DavidNagisa333 commented 4 years ago

Bones, estaba aplicant alguns canvis a l'hora de comprobar un moviment. Vull afegir un control de "accio" que fa aquest, es a dir, retorno un List on l'enum conté per exemple "Escac", "Escac i mat", "Promoció"... indicant les diferents accions que es poden fer al turn. Per comprobar la promocio per exemple miro depenent del color de la peça en quina fila es troba i si pot promocionar. El problema el trobo amb escac i escac i mat. Totes aquestes accions es comproben en el mateix moviment, es a dir, durant el torn en que el jugador mou la peça, pero per veure si es escac i escac i mat s'ha de comprobar en cada torn -> per cada peça del jugador -> per cada moviment de la peça possible -> si a la posició destí hi ha el rei ? No se si m'explico pero ho veig bastant complex i molt poc eficient.

També he pensat cambiar una altre cosa. Pel tema de direcció d'una peça (per validar els seus moviments) ho vaig posar al principi que si era jugador "negre" invertiem els moviments, aixi no sortiem de rang. Seria correcte afegir un atribut a la peça "direcció" i que quan aquesta arribi a la fila de l'altre extrem, la classe Escacs (chess) canvii el valor de la direcció?

miquelbofill commented 4 years ago

Bon dia David,

pero per veure si es escac i escac i mat s'ha de comprobar en cada torn -> per cada peça del jugador -> per cada moviment de la peça possible -> si a la posició destí hi ha el rei ? No se si m'explico pero ho veig bastant complex i molt poc eficient.

T'expliques perfectament. Complex no ho és pas. De fet diria que és l'algorisme més simple! La ineficiència potser no serà tant, de fet és una mica intrínseca al problema. Si se t'ocorre alguna cosa millor endavant, però tampoc no et compliquis gaire la vida.

Seria correcte afegir un atribut a la peça "direcció" i que quan aquesta arribi a la fila de l'altre extrem, la classe Escacs (chess) canvii el valor de la direcció?

No hi veig cap problema. El que no entenc és perquè hauria de canviar la direcció en arribar a un extrem. És que canvia de color?

DavidNagisa333 commented 4 years ago

Bones,

el tema de la direcció es pel següent: Per saber si existeix un moviment que em permeti fer el que vull faig un calcul de origen - desti. Es a dir, compto quants "passos" fan falta per arribar al desti. En el cas del peó, per anar de dalt a baix em retorna un numero positiu i puc trobar el moviment "2,0,0,0" per exemple. Ara be, si es mou la peça de baix a dalt em retorna "-2,0", moviment que no te el peó. Si aixó ho multiplico per una variable direcció que val 1 per les peces blanques i -1 per les negres, podré trobar el moviment.

Aixó em seria util per a peces que nomes es mouen en una direcció, com el peó.

miquelbofill commented 4 years ago

OK