class Fruit:
SPAWN_RANGE = [WIDTH / 5, WIDTH * 4 / 5]
- VERTICAL_VELOCITY_RANGE = [-500, -350]
- HORIZONTAL_VELOCITY_RANGE = [-100, 100]
+ VERTICAL_VELOCITY_RANGE = [-500, -300]
+ HORIZONTAL_VELOCITY_RANGE = [-150, 150]
GRAVITY = 275
- RADIUS = 50
+ RADIUS_RANGE = [25, 50]
def __init__(self):
+ self.radius = lerp(self.RADIUS_RANGE[0], self.RADIUS_RANGE[1], random.random())
self.position = pygame.Vector2(lerp(self.SPAWN_RANGE[0], self.SPAWN_RANGE[1], random.random()),
- HEIGHT - self.RADIUS)
+ HEIGHT - self.radius)
self.velocity = pygame.Vector2(
lerp(self.HORIZONTAL_VELOCITY_RANGE[0], self.HORIZONTAL_VELOCITY_RANGE[1], random.random()),
lerp(self.VERTICAL_VELOCITY_RANGE[0], self.VERTICAL_VELOCITY_RANGE[1], random.random()))
self.position += self.velocity * delta / 1000
def get_rect(self):
- return pygame.Rect(self.position - pygame.Vector2(self.RADIUS / 2, self.RADIUS / 2),
- pygame.Vector2(self.RADIUS, self.RADIUS))
+ return pygame.Rect(self.position - pygame.Vector2(self.radius / 2, self.radius / 2),
+ pygame.Vector2(self.radius, self.radius))
def draw(self, surf):
- pygame.draw.circle(surf, GREEN, self.position, self.RADIUS)
+ pygame.draw.circle(surf, GREEN, self.position, self.radius)
def __init__(self):
self.player = Player()
self.fruits = [Fruit()]
+ self.wave = 1
def update(self, delta):
for event in pygame.event.get():
fruit.update(delta)
if self.player.hits(fruit):
hits.append(fruit)
+ fr = fruit.get_rect()
+ if (not -fruit.radius <= fr.x < WIDTH) or fr.y > HEIGHT:
+ self.fruits.remove(fruit)
for hit in hits:
self.fruits.remove(hit)
+ if len(self.fruits) == 0:
+ self.wave += 1
+ for i in range(self.wave):
+ self.fruits.append(Fruit())
+
def draw(self, surf):
screen.fill(WHITE)
for fruit in self.fruits: