Pygame:绘制线条

2024-10-01 15:46:04 发布

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

在我之前的问题For Loop Functions in Python, 我在一个游戏中遇到了麻烦。它并没有完全划清界限,我首先怀疑是for循环或函数有问题。现在我意识到Pygame有点小问题。在

我曾尝试在加拿大使用此代码来解决问题:

b2 = font.render(str(letters[1]), True, (red))
screen.blit(b2, (bPosition))
if hangman1x == -500 and hangman1y == -500:
    hangman1x = (775, 250)
    hangman1y = (775, 50)
    pygame.draw.line(screen, black, (hangman1x), (hangman1y), (5))
    pygame.display.flip()
    time.sleep(0.5)
    bPosition = -500, -500
    b1.x, b1.y = -500, -500
if hangman1x == (775, 250) and hangman1y == (775, 50):
    print 'hi'
    width = 6
    pygame.draw.line(screen, black, (hangman1x), (hangman1y), (5))
    print 'yay'
    pygame.display.flip()

现在奇怪的是。在

当你按下屏幕上的B时,它会变成红色,就像它的本意一样,画出了完美的线条,但是当B消失时,它消失了,我明白为什么。之后,我添加了额外的if代码。(请注意,pygame.draw.line都是相同的),它在shell中打印hi和yay,但它不保留行。不管怎样解决这个问题?在


Tags: and代码ifdisplaylinescreenpygameb2
1条回答
网友
1楼 · 发布于 2024-10-01 15:46:04

在你打电话后pygame.draw.line()您可能正在将屏幕重新绘制为完全白色,这将超过该线并将其隐藏。而不是像你那样画线,我会建立一个刽子手类画

class Hangman():
  def __init__(self):
    self.lines = 0 #Number of lines to be drawn

  def draw(self,screen):
    #TODO draw to screen based on self.lines

#More code setting up pygame

drawlist = []
myMan = Hangman()
drawlist.append(myMan)
#mainloop
while 1:
  screen.fill('#000000')
  for item in drawlist:
    item.draw(screen)

这样你就重新画出你的刽子手的每一帧,因此他总是被展示出来

EDIT添加了一个运行示例

^{pr2}$

相关问题 更多 >

    热门问题