52 lines
1.5 KiB
Python
52 lines
1.5 KiB
Python
|
import pygame
|
||
|
import random
|
||
|
|
||
|
import pygame
|
||
|
import random
|
||
|
|
||
|
|
||
|
class Rectangle_effect:
|
||
|
rects = []
|
||
|
timer = 0
|
||
|
|
||
|
def __init__(self, pos, size, speed, dirs):
|
||
|
self.pos = pos
|
||
|
self.size = size
|
||
|
self.speed = speed
|
||
|
self.dirs = dirs # True for going up False for down
|
||
|
|
||
|
def move(self, display, palette):
|
||
|
sur = pygame.Surface(self.size)
|
||
|
sur.fill(palette.palette["backgroundShade"])
|
||
|
sur.set_alpha(random.randint(100, 200))
|
||
|
display.blit(sur, self.pos)
|
||
|
|
||
|
if self.dirs[0]:
|
||
|
self.pos[1] -= self.speed
|
||
|
elif self.dirs[1]:
|
||
|
self.pos[1] += self.speed
|
||
|
elif self.dirs[2]:
|
||
|
self.pos[0] += self.speed
|
||
|
elif self.dirs[3]:
|
||
|
self.pos[0] -= self.speed
|
||
|
|
||
|
if self.pos[1] < -120 or self.pos[0] > 600 or self.pos[1] > 650 or self.pos[0] < -120:
|
||
|
self.delete(self)
|
||
|
|
||
|
@classmethod
|
||
|
def generate_rects(cls, amount=100, speed_range=None):
|
||
|
if speed_range is None:
|
||
|
speed_range = [1, 4]
|
||
|
|
||
|
for _ in range(amount):
|
||
|
dirs = [0, 0, 0, 0]
|
||
|
dirs[random.randint(0, 3)] = 1
|
||
|
cls.rects.append(Rectangle_effect([random.randint(0, 600), random.randint(0, 650)],
|
||
|
[random.randint(40, 120), random.randint(40, 120)],
|
||
|
random.randint(speed_range[0], speed_range[1]),
|
||
|
dirs))
|
||
|
|
||
|
@classmethod
|
||
|
def delete(cls, circle):
|
||
|
cls.rects.remove(circle)
|