当前位置: 首页 > 知识库问答 >
问题:

选择一个特定的矩形pyplay[复制]

逄嘉木
2023-03-14

我正在学习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的纸张格式选择的,但是我真的不知道从这里去哪里。希望这是有意义的,可能我没有一个合适的词汇来描述我想说的话,我还在学习!兴奋的答案,谢谢!

共有1个答案

李景天
2023-03-14

使用pyplay。检查鼠标是否在板上。计算鼠标指针的行和列:

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鼠标点击检测。

 类似资料:
  • 问题内容: 我希望能够通过鼠标事件在matplotlib图上绘制选择区域。我没有找到有关如何使用python的信息。 最后,我希望能够在用matplotlib底图创建的地图上用鼠标绘制感兴趣的区域并检索角坐标。 有人有想法,例如参考吗? 谢谢, 格雷格 问题答案: Matplotlib提供了自己的。matplotlib页面上有一个示例,您可以根据需要进行调整。 简化版本如下所示:

  • 在上面的图片中,我展示了两个矩形 矩形1,其x可以从-900到13700不等,Y可以从-600到6458 矩形2,其坐标X可以从0到3000变化,而y可以从0到2000变化 同样:矩形2的起点位于左上角位置(0,0),而矩形1的起点位于左上角位置(宽度/2,高度/2)。 我需要做的是:使用缩放或平移将矩形1的点转换为矩形2的点。 那么,为了将矩形1的坐标转换为矩形2的坐标,< code>x和< c

  • 假设我们有一个包含许多列的数据框,。我只想创建一个包含以下列的DF

  • 给定一个矩形R1和一组矩形R2、R3、…。如何找到与主矩形R1相连的所有矩形。 我不仅需要直接连接到R1的矩形,还需要所有间接连接到R1的矩形。例如,如果 R2 连接到 R1,R3 连接到 R2。R3 被视为连接到 R1。 矩形的形式为(xmin,ymin,xmax,ymax)。所有矩形都与轴平行。当矩形重叠或接触时,它们被认为是连接的。当它们仅接触角落时,它们不被视为连接。 示例: 在该示例中,

  • 给定两个矩形的边的长度,我必须编写代码来检查第一个矩形是否可以被第二个矩形完全覆盖。只能旋转第二个矩形,看看它是否可以覆盖第一个矩形。 A和B是第一个矩形的边的长度,我们要覆盖的那个,C和D是第二个矩形的边的长度,它将覆盖第一个。 我尝试了两种代码,但仍然不起作用。第一个是天真的解决方案,但我不知道它是否正确。 然后我用我的数学技巧找出第二个矩形(和)的边应该

  • 目前我正在检测拖动的开始和结束,并在全局XZ平面中画出一个矩形,但我更希望它与表面齐平。 目前看来是这样的; 然而,我的目标是更像这样的东西; 我想知道我是否错过了使用核心的three.js特性实现这一点的一些明显方法。 总是有蛮力的方法,在矩形的周长周围间隔地投射射线,并创建一系列线段来近似投影的矩形,但我在想是否有一个原生的方法。 (这周我才刚开始看Three.js,所以我可能错过了一些明显的