我正在尝试使用渐变来更改三角形的颜色,并同时定期旋转它。这是我的代码。清理曲面似乎有问题,因为先前的输出没有被清除,并且梯度流动效果仅对第一个三角形可见。如何在pygame中连续旋转三角形?
import pygame, sys
import time
import random
from pygame.locals import *
pygame.init()
DISPLAYSURF = pygame.display.set_mode((500, 500), 0, 32)
pygame.display.set_caption('Drawing')
t = 0
i = 0
d = 0
# set up the colors
WHITE = (255,255,255)
GREEN = ((113, 201, 106),(98, 187, 91),(84, 174, 77),(69, 160, 63),(54, 147, 49),(40, 134, 35))
# draw on the surface object
DISPLAYSURF.fill(WHITE)
newSurf = pygame.transform.rotate(DISPLAYSURF, d)
pygame.draw.polygon(newSurf,GREEN[i],((250,70),(400,300),(100,300)))
t = 0.2
while True:
DISPLAYSURF.fill(WHITE)
DISPLAYSURF.blit(newSurf, (0,0,))
pygame.display.update()
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if i==5:
f = 0
d = -90
newSurf = pygame.transform.rotate(DISPLAYSURF, d)
time.sleep(0.4)
if i==0:
f = 1
if f==1:
i = i+1
else:
i = i-1
pygame.draw.polygon(newSurf,GREEN[i],((250,70),(400,300),(100,300)))
time.sleep(t)
由于输出是一个动画,我不能在这里发布它。相反,我张贴了几个screenshots-
你测试你的代码?不适合我。显示一个黑色的屏幕和错误 - “Traceback(最近调用最后一个): 文件”D:/trash/asdasdasd.py“,第28行,在 DISPLAYSURF = pygame.transform.rotate(DISPLAYSURF,d) error :内存不足' –
CrakC
@CrakC不好意思,对不起。我今天没有适合的环境。更新了答案以添加一个被遗忘的'pygame.display.update()'。这应该解决黑屏问题。也许是内存错误。如果没有,就像你一样使用'newSurf',但一定要清除它每一帧。 –
不。还是行不通! – CrakC