2013-10-17 14 views
0

(這個問題的措詞不太好,所以如果你認爲你可以更好地改述它,那麼請做。) 我基本上有十個窗格幾乎相同顯示在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

您可以將所有窗格存儲在列表中並使用for循環來生成它們。 –

回答

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

也許這樣的事情?

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() 
相關問題