在pygame中显示多个项目

时间:2013-10-17 17:30:33

标签: python pygame

(问题措辞不是很好,所以如果你认为你可以更好地改写它,那么请。) 在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

函数中写入的文本是我想要实现的。我已经做到了这一点,但正如我之前所说的那样,它是愚蠢的。这是实现我已经拥有的结果的最佳方式还是有更好的方法呢?

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

2 个答案:

答案 0 :(得分:3)

我会做这样的事情。

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()

我们在窗格位置上进行迭代,在正确的窗格中添加文本,在有足够的窗格时停止。

答案 1 :(得分:1)

也许是这样的?

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()