gpt4 book ai didi

python - 如何停止绘制特定的矩形pygame

转载 作者:太空宇宙 更新时间:2023-11-03 14:35:34 25 4
gpt4 key购买 nike

我的程序是 pygame 中的“钢琴英雄”游戏,其工作方式与吉他英雄相同,只是它用于计算机键盘并且基于弹钢琴而不是吉他。我在界面中使用了类似于 Synthesia 的设计,其中矩形变成了“命中线”,您必须在正确的时间按下按键。

我的问题是,虽然矩形最初是按预期绘制和工作的,但它们似乎没有更新,因此顶部永远停止。换句话说,歌曲中的每个音符都是无限长的。

我觉得这可能就是错误所在,尽管我不能 100% 确定。

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

这一行位于 while 循环内,一次只更新歌曲中的所有矩形。

for z in notes:
if z.drawing:
z.Draw(hitLine)

最佳答案

我发现你提出的问题非常有趣,而且非常有趣!

需要考虑的一些事项。

  1. 似乎没有任何理由为明显是矩形的 Note 对象使用“pygame 多边形”。在下面的代码中,我使用了“pygame Rect”对象。

  2. 主循环不会每帧清除屏幕。

在主循环中,您需要每帧清除屏幕。在我的代码中我使用了 Rect 对象。当注释的顶部触及 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()

关于python - 如何停止绘制特定的矩形pygame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46978640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com