5

Ajedrez con chess-python y Flask

En esta oportunidad usaremos una libreria llamada python-chess para poder simular una partida de ajedrez y visualizaremos el tablero con ayuda de Flask.
1-Primero instalamos la libreria

pip install python-chess

2- Creamos nuestro archivo app.py e importamos las librerias flask.Flask, chess para crear nuestro tablero y su extension chess.svg para renderearla y poder visualizar nuestros movimientos

from flask import Flaskimport chessimport chess.svg

3.Ahora lo clasico, creamos nuestra app y definimos la ruta.Luego creamos un tablero con chess.Board(), y para renderearlo primero creamos los squares, donde hay varios tipos pero en esta caso pondremos el tipo chess.H8, segundo lo rendereamos con chess.svg, definimos el tablero que ya lo creamos, el tipo de squares y el tamaño, y retornamos el board.

app = Flask(__name__)
@app.route('/chess')defplay():
	board = chess.Board()
	squares = board.attacks(chess.H8)
	board = chess.svg.board(board = board, 		 
        squares=squares, size = 400)
	return board

if __name__ == "__main__":
	app.run(debug=True)

4.Configuramos nuestro ambiente a modo de desarrollo(en cmd) con:

set FLASK_ENV=development

Inicializamos nuestra app con flask run
Ahora solo sera cuestion de darle refresh para poder visualizar los cambios

5.Ahora pasaremos a los movimientos de las fichas, debemos definir el atributo push_san en nuestro tablero y pasarle como string:

-La inicial de la ficha que quermos mover en ingles, si queremos mover un peon no debemos poner nada

N for knight or horse(caballo)
Nothing for pawn(peon)
R for rook(torre)
Q for queen(reina)
B for bishop(alfil)
K for king(rey)`

-La posicion a la que moveremos la ficha
Por ejemplo, si quiero mover mi caballo blanco a la casilla f3 debo hacer:

board.push_san("Nf3")

Lo cual se veria asi:

from flask import Flask 
import chess
import chess.svg
app = Flask(__name__)

@app.route('/chess')defplay():#N for knight or horse#Nothing for pawn#R for rook#Q for queen#B for bishop#K for king

	board = chess.Board()
	board.push_san("Nf3")
	squares = board.attacks(chess.H8)
	board = chess.svg.board(board = board, 
               squares=squares, size = 400)
	
	return board

if __name__ == "__main__":
	app.run(debug=True)
caba.JPG
Escribe tu comentario
+ 2
0
6477Puntos

Está muy interesante esto, Rodrigo, voy a cacharrear un rato con estos paquetes. Gracias por compartir!