今天过得怎么样?
最近,我一直在尝试制作自己的国际象棋游戏,并且对pygame做了大量研究。
我已经到了可以显示木板(使用的“ chessboard”和“ python-chess”库)的位置,并且当玩家单击某个正方形时,我就能知道是哪个正方形。
但是,我要制作它,以便您可以单击并将一块拖到新的正方形。
这是我的代码:
from chessboard import display
from chessboard import images
import chess
from chess import engine
import pygame
myBoard = chess.Board()
myBoard.reset_board()
myDisplay = display.start(myBoard.board_fen())
squareLocations = list(display.board.Board.boardRect)
squareLocations.reverse()
columns = ["a", "b", "c", "d", "e", "f", "g", "h"]
square_size = 50
class MyPiece(pygame.sprite.Sprite):
def __init__(self, picture):
super().__init__()
self.image = pygame.image.load(picture)
self.rect = self.image.get_rect()
def update(self):
self.rect.center = pygame.mouse.get_pos()
game_end = False
display_perm = True
row_check = True
piece_clicked = False
while not game_end:
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_end = True
if pygame.mouse.get_pressed()[0] == 1:
mouse_x, mouse_y = pygame.mouse.get_pos()
display_perm = False
try:
if not piece_clicked:
piece_clicked, piece_png, square = get_piece_on_square()
myDisplay.blit(display.board.Board.wtile, square)
piece_image = piece_png + ".png"
piece_in_use = MyPiece(piece_image)
piece_group = pygame.sprite.Group()
piece_group.add(piece_in_use)
piece_group.update()
piece_group.draw(myDisplay)
pygame.display.update()
piece_in_use.update()
piece_group.update()
except Exception as e:
print(e)
if display_perm:
display.start(myBoard.board_fen())
我无法直接访问这些零件的表面,因此必须覆盖原始零件并制作可以使用的副本。
问题是,它没有按照更新功能的指示将我的作品移动到鼠标上。
有更好的方法吗?