]> Skullheadx's Git Forge - Pygame-Jam.git/commitdiff
work from last night
authorSkullheadx <704277@pdsb.net>
Thu, 7 Jul 2022 16:13:53 +0000 (12:13 -0400)
committerSkullheadx <704277@pdsb.net>
Thu, 7 Jul 2022 16:13:53 +0000 (12:13 -0400)
.idea/.gitignore [new file with mode: 0644]
.idea/Pygame-Jam-main.iml [new file with mode: 0644]
Actors.py
Enemy.py
SWORD.png [new file with mode: 0644]
Setup.py
Test.py [new file with mode: 0644]
Weapon.py
main.py

diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644 (file)
index 0000000..26d3352
--- /dev/null
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/Pygame-Jam-main.iml b/.idea/Pygame-Jam-main.iml
new file mode 100644 (file)
index 0000000..d0876a7
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="PYTHON_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
\ No newline at end of file
index 091f72f24c012db5eb77ef85afdd5dd1900da7f0..deda98e2190df2fe382ea415581f33592bdb51c9 100644 (file)
--- a/Actors.py
+++ b/Actors.py
@@ -130,6 +130,7 @@ class Actor:
 
     def draw(self, surf):
         pg.draw.rect(surf, self.colour, self.get_collision_rect(), border_radius=8)
+        # pg.draw.rect(surf, (0,0,0), self.get_collision_rect(), border_radius=8, width=2)
 
         # Uncomment for debugging area hitboxes
         # for area in self.areas.values():
index 3a2639822ff80108e329e7f6756f5861555e5d96..129001517354fe841eda66905a37ab58aa2822a4 100644 (file)
--- a/Enemy.py
+++ b/Enemy.py
@@ -20,12 +20,12 @@ class Enemy(Actor):
         self.movable = True
         self.dizzy_time = 0
 
-        self.weapon = Melee(self.position, (-35,self.height/2 - 20),self.width,-1)
+        self.weapon = Melee(self.position, (-Melee.width/2, Melee.height/2), (0, Melee.height), self.width,-1)
 
     def update(self, delta, target=None):
         super().update(delta)
         if target is not None and self.dizzy_time == 0:
-            self.follow_target(target,stop_dist=self.weapon.width + self.width + target.width)
+            self.follow_target(target,stop_dist=self.weapon.width * 0.8 + self.width + target.width)
             if self.weapon.get_collision_rect().colliderect(target.get_collision_rect()):
                 self.weapon.swing()
         self.dizzy_time -= delta
@@ -37,7 +37,7 @@ class Enemy(Actor):
         self.weapon.update(delta,self.position, math.copysign(1,self.velocity.x))
 
     def knockout(self, node):
-        self.dizzy_time = 5000
+        self.dizzy_time = 2500
         self.health -= 10
         node.on_ground = True
         node.jump()
diff --git a/SWORD.png b/SWORD.png
new file mode 100644 (file)
index 0000000..e1c4104
Binary files /dev/null and b/SWORD.png differ
index 6c1d1dde71fa7a40aadda1beaebcca463579b566..62924886536e752071582cb25ffc8b555c5ecf16 100644 (file)
--- a/Setup.py
+++ b/Setup.py
@@ -20,6 +20,9 @@ fps = 60
 
 screen = pg.display.set_mode(dimensions, pg.SCALED)
 
-def rotate(img ,angle, pivot):
-    center = img.get_rect().center
-    rot_image = pygame.transform.rotate(img, angle)
+
+def rotate(pos, img, angle, pivot):
+    vec = (pos - pivot).rotate(-angle) + pivot
+    rot_img = pg.transform.rotozoom(img, angle, 1)
+    rot_rect = rot_img.get_rect(center=vec)
+    return rot_img, rot_rect
diff --git a/Test.py b/Test.py
new file mode 100644 (file)
index 0000000..ba64cc4
--- /dev/null
+++ b/Test.py
@@ -0,0 +1,24 @@
+from Setup import *
+
+
+class Test:
+
+    def __init__(self):
+        self.position = center.copy()
+
+        self.angle = 0
+        self.pivot = pg.Vector2(SCREEN_WIDTH / 2 + 50, SCREEN_HEIGHT / 2 + 50)
+        self.img = pg.transform.scale(pygame.image.load("SWORD.png"), (100, 100))
+        self.display = self.img.copy()
+        self.img_rect = self.display.get_rect()
+
+    def update(self, delta):
+        self.display, self.img_rect = rotate(self.position, self.img, self.angle, self.pivot)
+
+        self.angle += 1
+
+    def draw(self, surf):
+        surf.fill((0, 0, 0))
+        surf.blit(self.display, self.img_rect.topleft)
+
+        pg.draw.circle(surf, (255, 0, 0), self.pivot, 3)
index c2179e4140b9d9a146445f6bef4211c6ae6a1703..f8793e068f3637978eee110daa98b5c3c43dd094 100644 (file)
--- a/Weapon.py
+++ b/Weapon.py
@@ -4,43 +4,50 @@ from Setup import *
 
 
 class Melee:
-    img = pg.transform.smoothscale(pg.image.load("Assets/SWORD.png"), (40,40))
+    img = pg.transform.scale(pg.image.load("SWORD.png"), (40,40))
     flipped_img = pg.transform.flip(img,True,False)
     width,height = img.get_size()
-    def __init__(self, pos, offset, width,direction):
+
+    def __init__(self, pos, offset, pivot, width,direction):
         self.position = pg.Vector2(pos)
         self.offset = pg.Vector2(offset)
+        self.pivot = self.position + pg.Vector2(pivot)
         self.holder_width = width
 
         self.direction = direction
 
         self.display = self.img
+        self.display_rect = self.display.get_rect()
         self.swing_timer = 0
 
+
     def update(self, delta, pos, direction):
         self.position = pg.Vector2(pos)
+        self.pivot = self.position + self.offset + pg.Vector2(self.width/2, self.height/2)
         self.direction = direction
 
         if self.direction == -1:
-            angle = 145 * (math.sin(math.radians((self.swing_timer))))
-            print(self.swing_timer,angle)
-            self.display = pg.transform.rotate(self.img, angle)
-        elif self.direction == 0:
-            self.display = pg.transform.rotate(self.flipped_img, 360 * math.sin(math.radians(self.swing_timer/10)))
+            angle = 25 * (math.sin(math.radians(self.swing_timer)))
+            self.display, self.display_rect = rotate(self.position + self.offset, self.img, angle,self.pivot)
+        elif self.direction == 1:
+            angle = -25 * (math.sin(math.radians(self.swing_timer)))
+            self.display, self.display_rect = rotate(self.position+ pg.Vector2(self.holder_width,0) + pg.Vector2(-self.offset.x, self.offset.y), self.flipped_img, angle,self.pivot + pg.Vector2(self.holder_width,0))
 
         self.swing_timer -= delta
         self.swing_timer = max(self.swing_timer, 0)
 
     def get_collision_rect(self):
         if self.direction == -1:
-            return pg.Rect(self.position - pg.Vector2(self.width,0),(self.width, self.height))
+            return pg.Rect(self.display_rect.topleft,(self.width, self.height))
         elif self.direction == 1:
-            return pg.Rect(self.position + pg.Vector2(self.holder_width,0),(self.width, self.height))
+            return pg.Rect(self.display_rect.topleft,(self.width, self.height))
 
     def swing(self):
         if True:
             if self.swing_timer == 0:
-                self.swing_timer = 180
+                self.swing_timer = 360
 
     def draw(self, surf):
         surf.blit(self.display, self.get_collision_rect().topleft)
+        # pygame.draw.circle(surf,(255,0,255),self.pivot,3)
+        # pygame.draw.circle(surf,(0,255,0),self.position,3)
diff --git a/main.py b/main.py
index 2d49c26ecc7ce9512fb22d7d5ddc5381974a6387..507912d5d123b62168b3c34b7af8d2a8a71ba701 100644 (file)
--- a/main.py
+++ b/main.py
@@ -1,5 +1,6 @@
 from Setup import *
 from Game import Game
+from Test import Test
 from MainMenu import Menu
 
 delta = 1000//fps