From: Skullheadx <704277@pdsb.net> Date: Thu, 7 Jul 2022 16:13:53 +0000 (-0400) Subject: work from last night X-Git-Url: http://git.skullheadx.com/nixos/static/links.html?a=commitdiff_plain;h=b5e4710b029d9d0178eee336ef11423973549ce6;p=Pygame-Jam.git work from last night --- diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -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 index 0000000..d0876a7 --- /dev/null +++ b/.idea/Pygame-Jam-main.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Actors.py b/Actors.py index 091f72f..deda98e 100644 --- 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(): diff --git a/Enemy.py b/Enemy.py index 3a26398..1290015 100644 --- 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 index 0000000..e1c4104 Binary files /dev/null and b/SWORD.png differ diff --git a/Setup.py b/Setup.py index 6c1d1dd..6292488 100644 --- 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 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) diff --git a/Weapon.py b/Weapon.py index c2179e4..f8793e0 100644 --- 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 2d49c26..507912d 100644 --- 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