【问题标题】:Selecting a specific rectangle with pygame [duplicate]用pygame选择一个特定的矩形[重复]
【发布时间】:2021-03-17 04:08:21
【问题描述】:

我正在学习python和pygame,我正在尝试做一个纸牌游戏;我已经完成了逻辑的基础知识,但我正在努力使用一个简单的 GUI。 我需要让玩家能够从草稿行中选择一张牌并将其放在他们的 6x4“棋盘”上。为此,我画了这样的矩形:

class Board:
    def __init__(self):
        self.visible_draft = []
        self.placed_totems_P1 = [[]]
        self.placed_totems_P2 = [[]]

    def draw_card_base(self, window):
        window.fill(WHITE)
        for col in range(COLS):
            y = 770 - col*175
            for row in range(ROWS):
                x = row*175 + 40
                pygame.draw.rect(window, GREY, (x, y, CARD_SIZE, CARD_SIZE))
def main():
    board = Board()

    while run:
        clock.tick(60)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False
                pygame.quit()
        board.draw_card_base(window)
        pygame.display.flip()

但现在我被卡住了,因为我不知道如何让玩家“选择”一个放置所选卡片的插槽(我假设将以相同的方式选择它,就在前面)。我阅读了有关碰撞的信息,并考虑编写手册“如果鼠标在这里,这就是它所在的插槽”。理想情况下,我想我可以读取选择了 1A、1B、2C、表格格式的卡,但我真的不知道从这里去哪里。 希望这是有道理的,可能我没有合适的词汇来描述我想说的话,我还在学习!期待答案,谢谢!

【问题讨论】:

    标签: python pygame


    【解决方案1】:

    使用pygame.Rectcollidepoint() 查看鼠标是否在板上。计算鼠标指针所在的行列:

    while run:
            clock.tick(60)
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    run = False
    
                if event.type == pygame.MOUSEBUTTONDOWN:
    
                    mx, my = event;
                    
                    board_rect = pygame.Rect(40, 770 - ROWS*175, COLS*175, ROWS*175)
                    if board_rect.collidepoint(mx, my):
    
                        col = (mx - 40) // COLS
                        row = (my - 770 + ROWS*175) // ROWS
                     
                        print(col, row)
    

    另见Pygame mouse clicking detection

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多