diapositivas juego ajedrez

Post on 29-Jun-2015

1.296 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

AJEDREZ

LOS ELEMENTOS

Dos jugadores.

Tablero color intercalado(8x8).

Piezas:

- Rey

:: 1

- Reina

:: 1

- Alfiles

:: 2

- Caballos

:: 2

- Torres ::

2

- Peón :: 8

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.

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.

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.

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.

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.

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.

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)

SOFTWARE

Lenguaje:

◦ C++ 6 Builder

Algoritmo:

◦ Minimax

Estructura de Datos:

◦ Árboles, Bitwase y Listas

(añadiendo poda ALFA y BETA)

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

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

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

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 !!!

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.

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;

}

}

SOFTWARE

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

GRACIAS POR SU ATENCION !!!

top related