在pygam中显示多个项目

2024-04-28 21:16:59 发布

您现在位置:Python中文网/ 问答频道 /正文

(这个问题措辞不太好,所以如果你认为你能把它改写得更好,那就请改一下。) 我基本上有十个窗格,几乎是相同的PyGame屏幕上显示。然而,代码是愚蠢的长,所以我想知道是否有一个更好的方法来做我所做的事情。你知道吗

def addPane(self, textToDisplay):
    #right now it is displaying them all change so that it checks how many
    #panes are on through (numberOfPanes = 0) 10 is limit display no more
    #than ten.
    paneOne = pygame.draw.rect(self.screen, (black), (175, 75, 200, 100), 2)
    paneTwo = pygame.draw.rect(self.screen, (black), (0, 0, 200, 100), 2)
    paneThree = pygame.draw.rect(self.screen, (black), (600, 400, 200, 100), 2)
    paneFour = pygame.draw.rect(self.screen, (black), (175, 75, 200, 100), 2)
    paneFive = pygame.draw.rect(self.screen, (black), (175, 75, 200, 100), 2)
    paneSix = pygame.draw.rect(self.screen, (black), (175, 75, 200, 100), 2)
    paneSeven = pygame.draw.rect(self.screen, (black), (175, 75, 200, 100), 2)
    paneEight = pygame.draw.rect(self.screen, (black), (175, 75, 200, 100), 2)
    paneNine = pygame.draw.rect(self.screen, (black), (175, 75, 200, 100), 2)
    paneTen = pygame.draw.rect(self.screen, (black), (175, 75, 200, 100), 2)
    if self.NoOfPanes > 10:
        print("Limit reached")
    else:
        paneOne
        self.NoOfPanes = self.NoOfPanes + 1
        if self.NoOfPanes > 10:
            print("Limit reached")
        else:
            paneTwo
            self.screen.blit(self.font.render(textToDisplay, True, (black)), (250, 115))
            self.NoOfPanes = self.NoOfPanes + 1
            if self.NoOfPanes > 10:
                print("Limit reached")
            else:
                paneThree
                self.NoOfPanes = self.NoOfPanes + 1
                if self.NoOfPanes > 10:
                    print("Limit reached")
                else:
                    paneThree
                    self.NoOfPanes = self.NoOfPanes + 1
                    if self.NoOfPanes > 10:
                        print("Limit reached")
                    else:
                        paneFour
                        self.NoOfPanes = self.NoOfPanes + 1
                        if self.NoOfPanes > 10:
                            print("Limit reached")
                        else:
                            paneFive
                            self.NoOfPanes = self.NoOfPanes + 1
                            if self.NoOfPanes > 10:
                                print("Limit reached")
                            else:
                                paneSix
                                self.NoOfPanes = self.NoOfPanes + 1
                                if self.NoOfPanes > 10:
                                    print("Limit reached")
                                else:
                                    paneSeven
                                    self.NoOfPanes = self.NoOfPanes + 1
                                    if self.NoOfPanes > 10:
                                        print("Limit reached")
                                    else:
                                        paneEight
                                        self.NoOfPanes = self.NoOfPanes + 1
                                        if self.NoOfPanes > 10:
                                            print("Limit reached")
                                        else:
                                            paneNine
                                            self.NoOfPanes = self.NoOfPanes + 1
                                            if self.NoOfPanes > 10:
                                                print("Limit reached")
                                            else:
                                                paneTen
                                                self.NoOfPanes = self.NoOfPanes + 1
    pygame.display.update()

它看起来像什么: Code when run

写在函数中的文本就是我想要实现的。我已经这样做了,但正如我前面所说的,这是愚蠢的长。这是实现我已有成果的最佳方式还是有更好的方式?你知道吗

(稍后我将更改坐标,以便所有十个窗格都可见,但出于测试目的,我这样做了。)


Tags: rectselfifscreenpygameelseblacklimit
2条回答

我会这样做。你知道吗

def addPane(self, text_to_display):
  pane_locs = [(175, 75, 200, 100), 
               (0, 0, 200, 100),
               (600, 400, 200, 100),
               (175, 75, 200, 100),
               (175, 75, 200, 100),
               (175, 75, 200, 100),
               (175, 75, 200, 100),
               (175, 75, 200, 100),
               (175, 75, 200, 100),
               (175, 75, 200, 100),
              ]
  for i, pane_loc in enumerate(pane_locs):
    if self.num_panes > 10:
       print("limit reached")
       break
    if i == 1:
      self.screen.blit(self.font.render(text_to_display, True, (black)), (250, 115))
    pygame.draw.rect(self.screen, (black), pane_loc, 2)
    self.num_panes += 1
    pygame.display.update()

我们遍历窗格位置,在正确的窗格处添加文本,在有足够的窗格时停止。你知道吗

也许是这样的?你知道吗

panes = []
def addPane(self, textToDisplay):
    #starting coordinate location for your frames
    x = 0
    y = 0
    for i in range(10):
        panes.append(pygame.draw.rect(self.screen, (black), (x, y, 200, 100), 2))
        panes[-1]
        #increment coordiantes by desired ammounts
        x += 200
        y += 100
        if len(panes) > 10:
            print("Limit reached")
            break
    pygame.display.update()

相关问题 更多 >