]> Skullheadx's Git Forge - fruit-ninja.git/commitdiff
hitboxes
authorSkullheadx <94652084+Skullheadx@users.noreply.github.com>
Thu, 1 Jun 2023 17:33:39 +0000 (13:33 -0400)
committerSkullheadx <94652084+Skullheadx@users.noreply.github.com>
Thu, 1 Jun 2023 17:33:39 +0000 (13:33 -0400)
game.py
player.py
setup.py

diff --git a/game.py b/game.py
index 6f0d24ebe3bf889149d72f916a45250d0be4b5f1..a12de98e5256ad7f687c9dd443d6a2c46b4cd515 100644 (file)
--- a/game.py
+++ b/game.py
@@ -1,6 +1,7 @@
 from setup import *
 from player import Player
 
+
 class Game:
 
     def __init__(self):
index 70e7b241a8d80c82cc36cc2eae94792dcf549803..07e0171111fa6f8444e527d93dd341adc9d20333 100644 (file)
--- a/player.py
+++ b/player.py
@@ -3,25 +3,33 @@ from setup import *
 
 class Player:
     LIFE_TIME = 100
+    INFLATE_SCALE = 20
 
     def __init__(self):
-        self.sliced = []
+        self.sliced_points = []
+        self.hitboxes = []
 
     def update(self, delta):
         pressed = pygame.mouse.get_pressed()
         if pressed[0]:
             pos = pygame.mouse.get_pos()
-            self.sliced.append((pos, pygame.time.get_ticks()))
-        else:
-            self.sliced.clear()
-        for i, val in enumerate(self.sliced):
+            self.sliced_points.append((pygame.Vector2(pos), pygame.time.get_ticks()))
+        for i, val in enumerate(self.sliced_points):
             pos, time = val
             if pygame.time.get_ticks() - time > self.LIFE_TIME:
-                self.sliced.pop(i)
+                self.sliced_points.pop(i)
                 break
+        if len(self.sliced_points) > 1:
+            self.hitboxes.clear()
+            for i in range(len(self.sliced_points) - 1):
+                self.hitboxes.append(pygame.Rect(self.sliced_points[i][0],
+                                                 (self.sliced_points[i][0] - self.sliced_points[i + 1][0])).inflate(
+                    self.INFLATE_SCALE, self.INFLATE_SCALE))
 
     def draw(self, surf):
-        for pos, time in self.sliced:
-            pygame.draw.circle(surf, RED, pos, 10)
-        if len(self.sliced) > 1:
-            pygame.draw.lines(surf, BLACK, False, [a for a, b in self.sliced], 10)
+        for hitbox in self.hitboxes:
+            pygame.draw.rect(surf, GREEN, hitbox)
+        # for pos, time in self.sliced_points:
+        #     pygame.draw.circle(surf, RED, pos, 10)
+        # if len(self.sliced_points) > 1:
+        #     pygame.draw.lines(surf, BLACK, False, [a for a, b in self.sliced_points], 3)
index ab8daf6306bb7e358eaef9ec0f5ee94e5f6ef248..8f9b5e9957092b9bfc446642be74b439fb1217cf 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -1,6 +1,5 @@
 import pygame
 
-
 pygame.init()
 WIDTH, HEIGHT = 800, 500
 
@@ -12,6 +11,8 @@ pygame.display.set_caption("Fruit Ninja")
 WHITE = (255, 255, 255)
 BLACK = (0, 0, 0)
 RED = (255, 0, 0)
+GREEN = (0, 255, 0)
+BLUE = (0, 0, 255)
 
 # commands
 COMMAND_EXIT = 0