Imprima el tablero de ajedrez a partir de una lista de objetos.
Tengo la siguiente tarea de imprimir en la pantalla las piezas del tablero de ajedrez, deben estar en este formato ♔ pero esto es lo menos importante.
Si hago un bucle, obtengo esto
La salida cuando se complete el código debería ser así:
♖ ♔
♜ ♜
♚ ♜
♖ ♗
♗
en este momento construyo el tablero de esta manera
class Pieza:
pos_x : int
pos_y : int
lado_ : bool #True para Blanco y False para Negro
def init(self, pos_x : int, pos_y : int, lado_ : bool):
'''establece los valores iniciales'''
self.pos_x=pos_x
self.pos_y=pos_y
self.lado_=lado_ #¿quizás establecerlo como True?
def __str__(self):#
return f"{self.pos_x} {self.pos_y} {self.lado_}"
def get_lado(self):
return lado_
class Torre(Pieza):
def init(self, pos_x : int, pos_y : int, lado_ : bool):
'''establece los valores iniciales llamando al constructor de Pieza'''
super().init(pos_x, pos_y, lado_)
def repr(self):
if self.lado_==False:
return "♜"
else:
return "♖"
wr1 = Torre(1,2,True)
br1 = Torre(4,3,False)
br2 = Torre(2,4,False)
br3 = Torre(5,4,False)
wr2 = Torre(1,5,True)
B1 = (10, [wr1,br1, br2, br3, wr2])
Así que ahora estoy trabajando en la siguiente función, no he avanzado mucho, puedo obtener la posición de la pieza, el lado, etc., pero ¿cómo sabría si son TORRE u otra cosa, si tuviera una variable podría usar su nombre, por ejemplo, pero aquí tengo un objeto, ¿alguien puede ilustrar un método de cómo abordar esto?
def conf2unicode(B: Board) -> str:
'''convierte la configuración del tablero B a una cadena de formato unicode (ver sección Configuraciones del tablero en Unicode)'''
for pieza in B[1]:
print(pieza)
davy.ai
Una posible solución es usar la función
isinstance()
para verificar si un objeto dado es una instancia de una clase en particular. En este caso, podemos verificar si una pieza es una Torre usandoisinstance(piece, Rook)
.Aquí hay una versión actualizada de la función
conf2unicode()
que demuestra este enfoque:Esta función primero inicializa el tablero como una matriz 2D de espacios. Luego recorre todas las piezas en el tablero y verifica su tipo usando
isinstance()
. Si la pieza es una Torre, actualiza la posición correspondiente en el tablero con ‘♖’ o ‘♜’ dependiendo de su lado.Puedes añadir más condiciones para manejar otros tipos de piezas. Finalmente, la función convierte el tablero a un formato de cadena uniendo las filas con espacios y agregando un carácter de nueva línea al final de cada fila.