diapositivas juego ajedrez

19
AJEDREZ

Upload: luis-alberto

Post on 29-Jun-2015

1.298 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Diapositivas Juego Ajedrez

AJEDREZ

Page 2: Diapositivas Juego Ajedrez

LOS ELEMENTOS

Dos jugadores.

Tablero color intercalado(8x8).

Piezas:

- Rey

:: 1

- Reina

:: 1

- Alfiles

:: 2

- Caballos

:: 2

- Torres ::

2

- Peón :: 8

Page 3: Diapositivas Juego Ajedrez

MOVIMIENTO DE LAS PIEZAS

REY◦ El Rey se mueve en cualquier dirección, una casilla cada vez.

◦ Es decir, que puede moverse a cualquiera de las casillas

contiguas a la que ocupe, siempre que no haya en ella una pieza

propia.

Page 4: Diapositivas Juego Ajedrez

MOVIMIENTO DE LAS PIEZAS

REINA◦ La Reina, que también se denomina corrientemente "Dama",

puede moverse, lo mismo que el Rey, en las columnas, filas o

diagonales, es decir, vertical, horizontal o diagonalmente.

La Reina tiene la

mayor potencia

en comparación

al resto de las

demás piezas.

Page 5: Diapositivas Juego Ajedrez

MOVIMIENTO DE LAS PIEZAS

ALFIL◦ Lo mismo que la Reina, el Alfil puede moverse y capturar

diagonalmente.

◦ A diferencia de la Reina y la Torre, no puede moverse ni en filas

ni en columnas.

En sus movimientos, el Alfil

tiene las mismas

limitaciones que la Reina y

la Torre, es decir, puede

ser bloqueado por piezas

propias o enemigas,

pudiendo capturar estas

últimas.

Page 6: Diapositivas Juego Ajedrez

MOVIMIENTO DE LAS PIEZAS

CABALLO◦ Cada Caballo se mueve con la combinación de una y dos casillas:

a) Una casilla hacia arriba o hacia abajo, y después dos a la derecha o a la

izquierda.

b) Una casilla hacia la derecha o hacia la izquierda, y dos para arriba o para

abajo.

El Caballo puede ser

descrito como el clown, el

mal muchacho o el arma

secreta del ajedrez.

Page 7: Diapositivas Juego Ajedrez

MOVIMIENTO DE LAS PIEZAS

TORRE◦ La Torre puede moverse horizontalmente (en fila) o

verticalmente (en columna).

La Torre no puede

moverse en

diagonal, no

siendo, por tanto,

tan fuerte como la

Reina.

Page 8: Diapositivas Juego Ajedrez

MOVIMIENTO DE LAS PIEZAS

PEON◦ El Peón tiene un número considerable de diferencias con

relación a las otras piezas.

◦ El Peón sólo puede moverse en una dirección: Adelante.

Page 9: Diapositivas Juego Ajedrez

COMO GANAR Se gana mediante el ataque al Rey enemigo, de tal manera que el

adversario sea incapaz de evitar la captura de su Rey.

Cuando un Rey está amenazado de captura, se dice que está en "jaque".

Cuando el jaque es de tal naturaleza que no existe defensa, se dice entonces que se ha dado "jaque mate", y el juego está terminado.

JAQUEJAQUE MATE

(Sin movimiento)

Page 10: Diapositivas Juego Ajedrez

SOFTWARE

Lenguaje:

◦ C++ 6 Builder

Algoritmo:

◦ Minimax

Estructura de Datos:

◦ Árboles, Bitwase y Listas

(añadiendo poda ALFA y BETA)

Page 11: Diapositivas Juego Ajedrez

SOFTWARE

Representación del Tablero:

Cada casilla toma el valor de la pieza que ocupa.

0 = vacío

1 = peón

2 = caballo

3 = alfil

4 = torre

5 = reina

6 = rey

Page 12: Diapositivas Juego Ajedrez

SOFTWARE

La matriz ocupa mucha memoria.

1 movimiento = 1 matriz (64 byte)

16

. . . . . . .

16 matriz x 64 byte = 1024 byte

Este es solamente

el primer nivel del árbol

Page 13: Diapositivas Juego Ajedrez

SOFTWARE

Bitwase

X X X X X X X X

1 12 24 48 8

8 bits = 1 byte

4 bits = 1 casilla 4 bits = 1 casilla

. . . . . . .v

1 Matriz = 32 byte = 64 casillas

2 casillas 2 casillas

Page 14: Diapositivas Juego Ajedrez

SOFTWARE

ALGORITMO

◦ MINIMAX (añadiendo poda ALFA y BETA)

Ventaja

Esta optimiza la búsqueda en el árbol.

No gasta procesamiento (Rápido).

Desventaja

No recorre el árbol completo (No busca el mejor movimiento).

. . .

. . .

180 160 260 280 250 300 160180200

MALA DECISIÓN !!!

Page 15: Diapositivas Juego Ajedrez

SOFTWAREMinMax(GamePosition game) {

return MaxMove(game);

}

MaxMove(GamePosition game) {

if(GameEnded(game) || DepthLimitReached()) {

return EvalGameState(game,MAX);

} else {

best_move = {};

moves = GenerateMoves(game);

ForEach moves {

move = MinMove(ApplyMove(game) , alpha, beta );

if(Value(move) > Value(best_move)) {

best_move = move;

alpha = Value(move);

}

//Ignore remaining moves

if(beta > alpha)

return best_move;

}

return best_move;

}

}

DepthLimitReached() .- Es el limite

del nivel en el que va recorrer la

profundidad.

GenerateMoves(Game g).- Se manda

el ultimo movimiento o tablero

para que me de otro

movimiento.

Value(Move m) .-Le devuelve el

valor de ese movimiento o el

costo del movimiento.

Page 16: Diapositivas Juego Ajedrez

SOFTWARE MinMove(GamePosition game) {

if(GameEnded(game) || DepthLimitReached()) {

return EvalGameState(game,MIN);

} else {

best_move = {};

moves = GenerateMoves(game);

ForEach moves {

move = MaxMove(ApplyMove(game) , alpha, beta );

if(Value(move) > Value(best_move)) {

best_move = move;

beta = Value(move);

}

//Ignore remaining moves

if(beta < alpha)

return best_move;

}

return best_move;

}

}

Page 17: Diapositivas Juego Ajedrez

SOFTWARE

Page 18: Diapositivas Juego Ajedrez

SOFTWARE

Son todos los

movimientos que

se hicieron

en el juego

(todas las jugadas)

Son todas las

piezas comidas

en el partido

El turno del jugador

Page 19: Diapositivas Juego Ajedrez

GRACIAS POR SU ATENCION !!!