tres en linea

10
 TRES EN LINEA Es un juego entre dos jugadores: O y X, que marcan las casillas de un tablero de 3 ×3  alternadamente. Un jugador gana si consigue tener una línea de tres de sus símbolos: la línea puede ser horizontal, vertical o diagonal. Una partida ganada por el primer jugador, X: Una partida que termina en empate: os jugadores no tardan en descubrir que el juego per!ecto termina en empate sin importar con qu" juega el primer jugador . a misma simplicidad del juego de tres en raya lo hacen ideal como herramienta pedag#gica para ense$ar los conceptos de teoría de juegos y la rama de inteligencia arti%cial que se encarga de la b&squeda de 'rboles de juego. (mplementaremos el presente juego en el lenguaje  Prolog mediante la ()E SWI-Prolog.

Upload: poolfer04

Post on 14-Jan-2016

28 views

Category:

Documents


0 download

DESCRIPTION

Trabajo de Inteligencia Artificial

TRANSCRIPT

7/18/2019 Tres en Linea

http://slidepdf.com/reader/full/tres-en-linea 1/10

TRES EN LINEA

Es un juego entre dos jugadores: O y X, que marcan las casillas de un

tablero de 3×3  alternadamente. Un jugador gana si consigue tener

una línea de tres de sus símbolos: la línea puede ser horizontal, vertical

o diagonal.

Una partida ganada por el primer jugador, X:

Una partida que termina en empate:

os jugadores no tardan en descubrir que el juego per!ecto termina en

empate sin importar con qu" juega el primer jugador.

a misma simplicidad del juego de tres en raya lo hacen ideal como

herramienta pedag#gica para ense$ar los conceptos de teoría de juegos

y la rama de inteligencia arti%cial que se encarga de la b&squeda de

'rboles de juego.

(mplementaremos el presente juego en el lenguaje Prolog mediante la

()E SWI-Prolog.

7/18/2019 Tres en Linea

http://slidepdf.com/reader/full/tres-en-linea 2/10

IMPLEMENTACION DEL JUEGO EN SWI-PROLOG

*omo vemos en la tabla, cada n&mero representa cada casillero, dondese imprimir' la X o el O.

+ continuaci#n veremos las !ormas para llegar a la victoria del jugador

X u O, esto es:

  Ganar Por Fila

Ganar Por Columna

Ganar Por Diagonal

 as *asillas est'n numeradas de - al

/ucesos para ganar:

  gana%la0-,1,234

  gana%la05,6,734

  gana%la08,,34  ganacolumna0-,5,83

  ganacolumna01,6,3

  ganacolumna02,7,3

ganadiagonal0-,6,3

  ganadiagonal02,6,83

)e esta !orma de%nimos la regla gana, donde contiene ganar por %la,

ganar por columna y ganar por diagonal, como podemos ver en las

tablas siguientes sus reglas:

gana09abla, ugador3 :; gana%la09abla, ugador34

  ganacolumna09abla, ugador34

7/18/2019 Tres en Linea

http://slidepdf.com/reader/full/tres-en-linea 3/10

  ganadiagonal09abla, ugador3.

ganafla09abla, ugador3 :;

 9abla < =ugador,ugador,ugador,>,>,>,>,>,>?4

  9abla < =>,>,>,ugador,ugador,ugador,>,>,>?4

  9abla < =>,>,>,>,>,>,ugador,ugador,ugador?.

ganacolumna09abla, ugador3 :;

 9abla < =ugador,>,>,ugador,>,>,ugador,>,>?4

 9abla < =>,ugador,>,>,ugador,>,>,ugador,>?4

  9abla < =>,>,ugador,>,>,ugador,>,>,ugador?.

ganaiagonal09abla, ugador3 :;

 9abla < =ugador,>,>,>,ugador,>,>,>,ugador?4

 9abla < =>,>,ugador,>,ugador,>,ugador,>,>?.

7/18/2019 Tres en Linea

http://slidepdf.com/reader/full/tres-en-linea 4/10

Im!r"#i$n "l Ta%l"ro

@ara imprimir el juego en SWI-Prolog imprimiremos &ugar' El predicado

 &ugar comienza un juego con el usuario y nos mostrar' el siguiente

gr'%co:

@ara que nos muestre esta tabla, se ha codi%cado la siguiente regla:

 &ugar :; como>jugar, jugardela0=a,a,a,a,a,a,a,a,a?3.

)onde la regla:

como(&ugar:;

  Arite0B9u eres el jugador C, ingrese la posicion de la casilla a jugar.B3,

  nl,

  mostrar0=-,1,2,5,6,7,8,,?3.

mo#)rar0=+,D,*,),E,,F,G,(?3 :;

Arite0BHB3,

Arite0=+,D,*?3,Arite0BHB3,nl,

Arite0BHB3,

Arite0=),E,?3,Arite0BHB3,nl, Arite0BHB3,

  Arite0=F,G,(?3,Arite0BHB3,nl,nl.

7/18/2019 Tres en Linea

http://slidepdf.com/reader/full/tres-en-linea 5/10

  &ugar"la09abla3 :; gana09abla, C3, Arite0B9u ganasteIB3.

  &ugar"la09abla3 :; gana09abla, o3, Arite0BFano (+IB3.

  &ugar"la09abla3 :; read0J3,

  Cmovimiento09abla, J, Jueva9abla3,

  mostrar0Jueva9abla3,

  oresponde0Jueva9abla, Juevanueva9abla3,

  mostrar0Juevanueva9abla3,

  jugardela0Juevanueva9abla3.

a jugada del computador es de la siguiente !orma:

7/18/2019 Tres en Linea

http://slidepdf.com/reader/full/tres-en-linea 6/10

 + continuaci#n eCplicaremos los movimientos del juego:

-. Ejecutar el programa con &ugar' 

1. /e mostrar' la tabla con sus respectivas posiciones.

2. El usuario ingresa un n&mero y mediante *mo+imi"n)o  lo

reemplaza por C en la nueva 9abla y muestra la Nu"+aTa%la.

5. uego el programa responde mediante las reglas de or"#!on" e

inmediatamente muestra la Nu"+anu"+aTa%la.

6. Una vez realizada la jugada el programa pedira hacer la siguiente

 jugada mediante &ugar"la0Juevanueva9abla3.

7. *omentario: *abe decir que en la primera jugada la 9abla,Jueva9abla y Juevanueva9abla son tablas temporales para las

siguientes jugadas a realizar.

7/18/2019 Tres en Linea

http://slidepdf.com/reader/full/tres-en-linea 7/10

E&"m!lo, on" la com!u)aora In)"lig"ncia Ar)ifcial. gana al

u#uario/

E&"m!lo, on" "l u#uario gana a la com!u)aora IA./

E&"m!lo, on" "l u#uario 0 la com!u)aora IA. "m!a)an'

7/18/2019 Tres en Linea

http://slidepdf.com/reader/full/tres-en-linea 8/10

CODIGO EN SWI-PROLOG/

7/18/2019 Tres en Linea

http://slidepdf.com/reader/full/tres-en-linea 9/10

7/18/2019 Tres en Linea

http://slidepdf.com/reader/full/tres-en-linea 10/10