Closed joanplaja closed 4 years ago
Hola @joanplaja, està molt bé que t'hagis atrevit amb això. L'explicació és molt clara (sabent mínimament en què consisteix el MiniMax). Pel que respecta al codi, no tinc res a dir-hi. Com a prototipus el veig bé. L'única cosa és que el temps surt sempre zero. Has de fer (float)temps/1000000000
.
Aquesta setmana de moment he fet: Un fitxer java per provar de forma simple l'algorisme minMax i comprovar el seu funcionament.
La pròxima setmana: Ara demanaré al meu company @DavidNagisa333 que em fagi unes funcions a la classe Chess que ell desenvolupa. Afegiré ara a l'issue actual el que necessito. Començaré a pensar diverses formes d'encarar el coneixement com et vaig comentar i desenvolupar el bàsic que veigi que s'ha de fer.
@miquelbofill si et pots mirar el fitxer de prova que penjat a la carpeta test. He provat per diferents nivells podant i sense podar el temps i el nombre de nodes per veure l'eficiencia real.
També deixo aquí un petit resum i petits esquemes que he fet perquè quedi documentat i pugui ajudar a comprendre el meu plantejament: La següent imatge representa un desenvolupament d'una partida fins a una partida fins a una profunditat 3 en la qual hi ha 2 jugadors, el jugador 1 (el qual és la CPU) té una fitxa la 1 i el jugador 2 té dues fitxes la 1 i la 2. Per poder-ho provar en el codi he forçat que cada fitxa sempre tingui 2 moviments possibles el moviment 0 que dóna 0 punts i el moviment 1 que dóna els mateixos punts com el número de la fitxa. (aquesta prova està en el testcpu.java)
L'algorisme minmax funciona suposant que els dos jugadors juguen de manera òptima. Suposem que els punts del jugador 2 seran negatius pel jugador 1 per tant si el jugador 2 guanya 2 punts el jugador 1 en perdrà dos. Si sumem aquests punts a cada node fins a les fulles tindrem els mateixos valors que hi ha a les fulles de la imatge. Ara per tant començant des de baix el que es fa és que el jugador 1 sempre escollirà la puntuació més alta i el jugador 2 escollirà la més baixa, ja que hem convertit els valors en negatius. El color verd significa la puntuació que escull el jugador 1 (CPU) "Max". El color vermell significa la puntuació que escull el jugador 2 "Min".
Per últim i per no tenir un text molt llarg explicant deixo la foto amb les indicacions que seguit per podar.