(问题措辞不是很好,所以如果你认为你可以更好地改写它,那么请。) 在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()
它看起来像什么:
函数中写入的文本是我想要实现的。我已经做到了这一点,但正如我之前所说的那样,它是愚蠢的。这是实现我已经拥有的结果的最佳方式还是有更好的方法呢?
(我稍后会更改坐标,以便所有十个窗格都可见但是我这样做是为了测试目的。)
答案 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()