pygame关闭鼠标时更新精灵以使其移动

时间:2020-09-21 19:50:30

标签: python pygame chess pygame-surface

今天过得怎么样?

最近,我一直在尝试制作自己的国际象棋游戏,并且对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())

我无法直接访问这些零件的表面,因此必须覆盖原始零件并制作可以使用的副本。

问题是,它没有按照更新功能的指示将我的作品移动到鼠标上。

有更好的方法吗?

0 个答案:

没有答案