Академический Документы
Профессиональный Документы
Культура Документы
LOS ELEMENTOS
Dos jugadores.
Tablero color intercalado(8x8).
Piezas:
- Rey - Caballos
:: 1 :: 2
- Reina - Torres ::
:: 1 2
- Alfiles - Peón :: 8
:: 2
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.
JAQUE MATE
JAQUE (Sin movimiento)
SOFTWARE
Lenguaje:
◦ C++ 6 Builder
Algoritmo:
◦ Minimax (añadiendo poda ALFA y BETA)
Estructura de Datos:
◦ Árboles, Bitwase y Listas
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)
Este es solamente
el primer nivel del árbol
.......
16
8 4 2 1 8 4 2 1
X X X X X X X X
8 bits = 1 byte
...
}
}
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