--- /dev/null
+import random
+
+from setup import *
+
+
+class Fruit:
+ SPAWN_RANGE = [WIDTH / 5, WIDTH * 4 / 5]
+ VERTICAL_VELOCITY_RANGE = [-500, -350]
+ HORIZONTAL_VELOCITY_RANGE = [-100, 100]
+ GRAVITY = 275
+
+ RADIUS = 50
+
+ def __init__(self):
+ self.position = pygame.Vector2(lerp(self.SPAWN_RANGE[0], self.SPAWN_RANGE[1], random.random()),
+ 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.acceleration = pygame.Vector2(0, self.GRAVITY)
+
+ def update(self, delta):
+ self.velocity += self.acceleration * delta / 1000
+ 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))
+
+ def draw(self, surf):
+ pygame.draw.circle(surf, GREEN, self.position, self.RADIUS)
from setup import *
from player import Player
+from fruit import Fruit
class Game:
def __init__(self):
self.player = Player()
+ self.fruits = [Fruit()]
def update(self, delta):
for event in pygame.event.get():
if event.type == pygame.QUIT:
return COMMAND_EXIT
self.player.update(delta)
+ hits = []
+ for fruit in self.fruits:
+ fruit.update(delta)
+ if self.player.hits(fruit):
+ hits.append(fruit)
+
+ for hit in hits:
+ self.fruits.remove(hit)
def draw(self, surf):
screen.fill(WHITE)
+ for fruit in self.fruits:
+ fruit.draw(surf)
self.player.draw(surf)
from setup import *
from game import Game
-
FPS = 120
clock = pygame.time.Clock()
(self.sliced_points[i][0] - self.sliced_points[i + 1][0])).inflate(
self.INFLATE_SCALE, self.INFLATE_SCALE))
+ def hits(self, fruit):
+ for hitbox in self.hitboxes:
+ if hitbox.colliderect(fruit.get_rect()):
+ return True
+ return False
+
def draw(self, surf):
for hitbox in self.hitboxes:
- pygame.draw.rect(surf, GREEN, hitbox)
+ pygame.draw.rect(surf, RED, hitbox)
# for pos, time in self.sliced_points:
# pygame.draw.circle(surf, RED, pos, 10)
# if len(self.sliced_points) > 1:
import pygame
+import random
pygame.init()
WIDTH, HEIGHT = 800, 500
# commands
COMMAND_EXIT = 0
COMMAND_START = 1
+
+
+def lerp(start, end, weight):
+ return weight * (end - start) + start