|
Como he indicado anteriormente este tipo de inteligencia
se basa en el cálculo directo de la situación actual sin
tener en cuenta lo que pase despues o antes para determinar la acción
a realizar.
Para explicarlo veremos un ejemplo, el cálculo
en el parchis:
Definimos primero las reglas de la I.A. calculada(en
modo algoritmo, habría que programarlo completo) que serán
aplicadas a las cuatro fichas:
|
STRUCT ficha[4] ;
INT i ; //
CONTADOR AUXILIAR
FOR ( i = 0 ; i < 4 ; i++ )
ficha[i].valor =
ficha[i].posicion
IF
(ficha[i].encasa) // OBLIGATORIO
SALIR CON 5
IF (dado==5)
ficha[i].valor = 1000 ;
ELSE ficha[i].valor
= 0 ;
END
END
IF (ficha[i].barrera) //
OBLIGATORIO ABRIR CON 6
IF (dado==6)
ficha[i].valor = 1000 ;
END
END
IF (entra_casa(ficha[i],ficha[i].posicion
+ dado))
ficha.valor += 100 ;
END
IF (mata_ficha(ficha[i],ficha[i].posicion
+ dado))
ficha.valor += 50 ;
END
IF (ficha_seguro(ficha[i],ficha[i]posicion
+ dado))
ficha.valor += 25 ;
END
NEXT
|
En este algoritmo inicializamos el valor de la ficha a su posición
en el tablero contando que 0 es estar en casa y N (en función
del tipo de tablero de parchís) es estar en casa, así
damos prioridad a las fichas más avanzadas. Seguidamente damos
un valor muy elevado a las fichas que dependen de una regla obligatoria,
como puede ser salir de casa con un 5 o romper una barrera con un 6.
Con esto aseguramos que serán las más elevadas pase lo
que pase. Ahora priorizamos el resto de posibilidades que seran que
se entre una ficha en casa, que se mate una ficha o que se entre en
un seguro. Cuando hemos calculado el valor de las 4 fichas, ordenamos
las fichas por orden desdencente según el valor que tienen y
la primera ficha es la que moveremos.
 |
Se pueden añadir tantas reglas como sea
necesario, incluso se pueden programar varios juegos de reglas
en función de una dificultad de juego (priorizar el matar,
priorizar llegar a casa, priorizar ir a zona segura...)
|
La complejidad de estas reglas nos va a determinar
la "inteligencia" del sistema, unas reglas mal definidas pueden
darle un cambio radical al juego, haciendose injugable. Recordad que
tampoco se deben programar máquinas infalibles, ponderad el exito
de decisión por ejemplo desordenando la matriz de fichas en un
20 o 30 % de los casos.
Este tipo de algoritmo también se utiliza mucho
en los juegos de estrategia para decidir, por ejemplo, cual es el blanco
óptimo para las unidades que van al ataque, eligiendo el más
adecuado para el tipo de unidad atacante, o el más deteriorado
o peligroso... Pero la base de funcionamiento es la misma, definir las
reglas y elegir la de valor mayor.
[ INTRODUCCIÓN ] [
ENTREGA 2 ] [ CALCULO
CONDICIONADO ]
|