Python 如何停止绘制特定的矩形pygame
我的程序是pygame中的一个“钢琴英雄”游戏,它的工作方式与吉他英雄相同,只是它是一个电脑键盘,基于弹钢琴而不是吉他。我在界面上使用了类似Synthesia的设计,矩形变成了“hitline”,你必须在正确的时间按键 我的问题是,尽管矩形一开始是按照预期的方式绘制和工作的,但它们似乎没有更新,因此顶部永远不会停止。换句话说,歌曲中的每个音符都是无限长的 我觉得这可能就是错误所在,尽管我不是100%确定Python 如何停止绘制特定的矩形pygame,python,python-3.x,pygame,Python,Python 3.x,Pygame,我的程序是pygame中的一个“钢琴英雄”游戏,它的工作方式与吉他英雄相同,只是它是一个电脑键盘,基于弹钢琴而不是吉他。我在界面上使用了类似Synthesia的设计,矩形变成了“hitline”,你必须在正确的时间按键 我的问题是,尽管矩形一开始是按照预期的方式绘制和工作的,但它们似乎没有更新,因此顶部永远不会停止。换句话说,歌曲中的每个音符都是无限长的 我觉得这可能就是错误所在,尽管我不是100%确定 def Draw(self,hitLine): if self.coords[2]
def Draw(self,hitLine):
if self.coords[2][1]<hitLine:
self.coords[0][1]+=2
self.coords[1][1]+=2
self.coords[2][1]+=2
self.coords[3][1]+=2
elif self.coords[2][1]>=hitLine and self.coords[0][1]<hitLine:
self.coords[0][1]+=2
self.coords[1][1]+=2
else:
self.drawing = False
pygame.draw.polygon(screen,BLUE,self.coords,0)
pygame.display.update()
我发现你的问题很有趣,而且很有趣
一些要考虑的事项。
import pygame
pygame.init()
gameScreen = pygame.display.set_mode((1100, 692))
hitLine = 500
class Note:
def __init__(self, rect):
self.rect = rect
self.drawing = True
def draw(self):
if self.rect.y < hitLine:
self.rect.y += 2
else:
self.drawing = False;
pygame.draw.rect(gameScreen, (0, 0, 255), self.rect, 0)
fNote = Note(pygame.Rect(500, -550, 80, 550))
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
gameScreen.fill((0, 0, 0))
if fNote.drawing:
fNote.draw()
pygame.display.update()
导入pygame
pygame.init()
gameScreen=pygame.display.set_模式((1100692))
hitLine=500
课堂笔记:
def uuu init uuuu(self,rect):
self.rect=rect
self.drawing=True
def牵引(自):
如果self.rect.y
您是否尝试调试您的程序并检查self.coords的值是多少?矩形是否正确移动,直到达到hitLine
为止?请提供一个我们可以运行和测试的,否则很难甚至不可能找到bug。我确实考虑过truing来提供一个可以测试和运行的示例,但这需要我提供几乎所有的代码。这是一个链接,指向它当前正在做的事情@Code外科医生矩形确实正确移动,因为矩形的底部离它越来越近,但是如果你观看视频,我们永远看不到矩形的顶部。我确实试过调试它,坐标确实正确地改变了,但是屏幕没有更新以显示我最近画的东西。问题是外科医生说了什么,我只是不知道what@CodeSurgeon我之前的评论留下了完整的代码?此外,它们正在正确更新。谢谢你的最后一句话-让生活变得轻松了很多,但同样的问题仍然存在。谢谢!我真不敢相信事情会这么简单。当代码外科医生说没有必要在每一个注释后都进行更新,因为这会使我的代码变得非常慢时,我有点想这会是这样的!另外,使用pygame rect有什么好处吗?这是一个大学项目,我还有其他事情要补充。现在修改我所有的代码值得吗?此外,在您的代码中,矩形将在顶部点击点击线时停止绘制,因此底部将通过点击线并可见。我将链接我的所有游戏,如果你想检查到目前为止!使用矩形会更干净,并且会使用更少的内存空间来存储2D中的所有顶点。我认为这只是一个小小的改变。而且,在游戏中,我认为在顶部击中命中线之前,让音符可见是有意义的。要阻止音符底部可见,您可以先渲染音符,然后渲染恰好位于其上的hitline下方的钢琴图像,然后只有音符顶部可见。重要的是,只有当您以正确的顺序绘制所有内容时,才更新屏幕。祝你在大学里好运!
import pygame
pygame.init()
gameScreen = pygame.display.set_mode((1100, 692))
hitLine = 500
class Note:
def __init__(self, rect):
self.rect = rect
self.drawing = True
def draw(self):
if self.rect.y < hitLine:
self.rect.y += 2
else:
self.drawing = False;
pygame.draw.rect(gameScreen, (0, 0, 255), self.rect, 0)
fNote = Note(pygame.Rect(500, -550, 80, 550))
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
gameScreen.fill((0, 0, 0))
if fNote.drawing:
fNote.draw()
pygame.display.update()