所以我有这个产生向上移动的圆圈的迷你粒子效果。我想让它看起来像烟雾。不过我有很多问题。
- 首先,我想让它递归,这样当粒子到达顶部时,它会返回到原来的位置并重新开始,我所拥有的工作有点但不完全。
- 另一件事是我不觉得它真的看起来像烟雾,任何人都可以建议进行更改以使其看起来更好吗?
- 另外我想将它添加到我的游戏中,我将如何使我的游戏可以调用它,这样我就可以调用粒子并给它一个位置,它就会出现在那里。任何人都可以帮忙吗?
我的代码
import pygame,random
from pygame.locals import *
xmax = 1000 #width of window
ymax = 600 #height of window
class Particle():
def __init__(self, x, y, dx, dy, col):
self.x = x
self.y = y
self.col = col
self.ry = y
self.rx = x
self.dx = dx
self.dy = dy
def move(self):
if self.y >= 10:
if self.dy < 0:
self.dy = -self.dy
self.ry -= self.dy
self.y = int(self.ry + 0.5)
self.dy -= .1
if self.y < 1:
self.y += 500
def main():
pygame.init()
screen = pygame.display.set_mode((xmax,ymax))
white = (255, 255, 255)
black = (0,0,0)
grey = (128,128,128)
particles = []
for part in range(25):
if part % 2 > 0: col = black
else: col = grey
particles.append( Particle(random.randint(500, 530), random.randint(0, 500), 0, 0, col))
exitflag = False
while not exitflag:
for event in pygame.event.get():
if event.type == QUIT:
exitflag = True
elif event.type == KEYDOWN:
if event.key == K_ESCAPE:
exitflag = True
screen.fill(white)
for p in particles:
p.move()
pygame.draw.circle(screen, p.col, (p.x, p.y), 8)
pygame.display.flip()
pygame.quit()
if __name__ == "__main__":
main()