es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

pygame no genera correctamente el tablero de ajedrez, no estoy seguro del origen del error.

Para el proyecto, estoy en el punto en el que actualmente estoy dibujando un tablero, tengo la ventana pygame, sin embargo, los cuadrados no se dibujarán sobre el comando screenfill, he intentado eliminar el comando, cambiar los colores pero no sé por qué los cuadrados no se dibujan en la ventana. Cualquier ayuda sería apreciada.

“`
import pygame as p
import chessEngine

p.init()
WIDTH = HEIGHT = 512 #400 es otra opción
DIMENSION = 8 #las dimensiones de un tablero de ajedrez son 8×8
SQ_SIZE = HEIGHT//DIMENSION
MAX_FPS = 30 #para animaciones
IMAGES = {}

def loadImages():
pieces = ['wp','wR','wN','wB','wK','wQ','bp','bR','bN','bB','bK','bQ']
for piece in pieces:
IMAGES[piece] = p.transform.scale(p.image.load("images/" + piece + ".png"), (SQ_SIZE, SQ_SIZE))
#Nota: podemos acceder a una imagen diciendo 'IMAGES['wp']'

def main():
p.init()
screen = p.display.set_mode((WIDTH, HEIGHT))
clock = p.time.Clock()
screen.fill(p.Color("white"))
gs = chessEngine.GameState()
loadImages()
running = True
while running:
for e in p.event.get():
if e.type == p.QUIT:
running = False
clock.tick(MAX_FPS)
p.display.flip()

def drawGameState(screen, gs):
drawBoard(screen)
drawPieces(screen, gs.board)

def drawBoard(screen):
colors = [p.Color("white"), p.Color("gray")]
for r in range(DIMENSION):
for c in range(DIMENSION):
color = colors[((r+c) % 2)]
p.draw.rect(screen, color, p.Rect(c<em>SQ_SIZE, r</em>SQ_SIZE, SQ_SIZE, SQ_SIZE))

def drawPieces(screen, board):
pass

if <strong>name</strong> == "main":
main()

drawGameState()“`

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que el problema es que los cuadrados no se dibujan encima del color de fondo de la pantalla. Una solución podría ser mover la función screen.fill() debajo de la llamada de la función drawBoard() en la función drawGameState(). De esta manera, la pantalla se llenará con el color específico después de que se hayan dibujado los cuadrados encima.

    def drawGameState(screen, gs):
        drawBoard(screen)
        screen.fill(p.Color("white")) # Mover el color de fondo aquí
        drawPieces(screen, gs.board)
    

    Otra solución es volver a dibujar los cuadrados encima del color de fondo de la pantalla después de que se haya llenado la pantalla.

    def drawGameState(screen, gs):
        drawBoard(screen)
        screen.fill(p.Color("white"))
        drawBoard(screen) # Volver a dibujar los cuadrados encima
        drawPieces(screen, gs.board)
    

    Intente implementar una de estas soluciones para ver si soluciona el problema.

Comments are closed.