From e7fe88889e7086a766b6a925144bcf5822088f76 Mon Sep 17 00:00:00 2001 From: anne Date: Tue, 4 Feb 2025 10:21:13 +0530 Subject: [PATCH 1/8] add cemetery crawler ! --- pets/cemetery crawler !/readme.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 pets/cemetery crawler !/readme.md diff --git a/pets/cemetery crawler !/readme.md b/pets/cemetery crawler !/readme.md new file mode 100644 index 00000000..9a8bc8fc --- /dev/null +++ b/pets/cemetery crawler !/readme.md @@ -0,0 +1 @@ +link - https://github.com/arsoninstigator/cemetery-crawler From 890777c3aff1de3e5f1e5ec819dfd943190e9795 Mon Sep 17 00:00:00 2001 From: anne Date: Sun, 9 Feb 2025 06:28:30 +0530 Subject: [PATCH 2/8] Update and rename readme.md to readme.md --- pets/cemetery crawler !/readme.md | 1 - pets/cemetery-crawler/readme.md | 31 +++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) delete mode 100644 pets/cemetery crawler !/readme.md create mode 100644 pets/cemetery-crawler/readme.md diff --git a/pets/cemetery crawler !/readme.md b/pets/cemetery crawler !/readme.md deleted file mode 100644 index 9a8bc8fc..00000000 --- a/pets/cemetery crawler !/readme.md +++ /dev/null @@ -1 +0,0 @@ -link - https://github.com/arsoninstigator/cemetery-crawler diff --git a/pets/cemetery-crawler/readme.md b/pets/cemetery-crawler/readme.md new file mode 100644 index 00000000..1d5e0293 --- /dev/null +++ b/pets/cemetery-crawler/readme.md @@ -0,0 +1,31 @@ +# cemetery crawler ! +cemetery crawler is my submission for hack club's hackapet ysws. it's a small pixel-art arcade game that's set in the abandoned cemetery on a dimly lit night. my "pet" is a grim reaper present in the cemetery and the player is supposed to control him and **collect wandering souls** while **avoiding vengeful spirits.** + +![image](https://github.com/user-attachments/assets/f813879e-275c-46cc-b8be-7e59e7769748) + +## controls +- left – move left
+- right – move right
+- reap – swing scythe to collect souls & banish hostile spirits
+ +## gameplay +- view: third-person, side-scrolling cemetery (reaper in the center, background scrolls). +- game setting base: the cemetery scrolls infinitely, with obstacles like tombstones and fog patches to avoid. +- souls float across the screen—walk into them to collect. +- hostile spirits charge at you—use the reap button to dispel them before they hit! +- occasionally, a golden soul appears—catching it slows time or grants temporary invincibility. +- the game speeds up as time progresses, making dodging and reaping more challenging as you move up levels. + +## win/loss condition +- win: high score based on the number of souls collected. +- lose: if hit by hostile spirits too many times. + +## graphics +the game has a low-res pixel art style and the pixel art for this was made with a combination of aseprite (windows) and resprite (android) +- background: dark, misty cemetery with shifting weather. +- reaper: small hooded figure seen from behind, scythe swinging in hand. +- souls: wispy blue/white; golden for power-ups. +- hostile spirits: red/purple glowing figures with sharp, jagged outlines. + +## credits +used art from pinterest as inspo for the graveyard, the show [grimm](https://www.imdb.com/title/tt1830617/) for the game idea & claude ai for debugging From 778a83dc2a04dac1e75e1d21502813aa0aeb56d8 Mon Sep 17 00:00:00 2001 From: anne Date: Sun, 9 Feb 2025 06:28:56 +0530 Subject: [PATCH 3/8] Add files via upload --- pets/cemetery-crawler/golden-soul.png | Bin 0 -> 2635 bytes pets/cemetery-crawler/gravestone.png | Bin 0 -> 1951 bytes pets/cemetery-crawler/hp-background.png | Bin 0 -> 15672 bytes pets/cemetery-crawler/reaper.png | Bin 0 -> 1222 bytes pets/cemetery-crawler/soul.png | Bin 0 -> 2521 bytes pets/cemetery-crawler/spirit.png | Bin 0 -> 2593 bytes 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 pets/cemetery-crawler/golden-soul.png create mode 100644 pets/cemetery-crawler/gravestone.png create mode 100644 pets/cemetery-crawler/hp-background.png create mode 100644 pets/cemetery-crawler/reaper.png create mode 100644 pets/cemetery-crawler/soul.png create mode 100644 pets/cemetery-crawler/spirit.png diff --git a/pets/cemetery-crawler/golden-soul.png b/pets/cemetery-crawler/golden-soul.png new file mode 100644 index 0000000000000000000000000000000000000000..ce093ebc8fd5e053ecfc5cf536eba136b4c25ce9 GIT binary patch literal 2635 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 literal 0 HcmV?d00001 diff --git a/pets/cemetery-crawler/hp-background.png b/pets/cemetery-crawler/hp-background.png new file mode 100644 index 0000000000000000000000000000000000000000..0e32223a2097a236f5db2dda6d83e542ab1d1c2e GIT binary patch literal 15672 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 D0T&;G literal 0 HcmV?d00001 From e846bc9e1eae295d52775b9f63b56b1b3b25914a Mon Sep 17 00:00:00 2001 From: anne Date: Sun, 9 Feb 2025 06:30:58 +0530 Subject: [PATCH 4/8] Create main.py --- pets/cemetery-crawler/main.py | 168 ++++++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 pets/cemetery-crawler/main.py diff --git a/pets/cemetery-crawler/main.py b/pets/cemetery-crawler/main.py new file mode 100644 index 00000000..e0bb4fc7 --- /dev/null +++ b/pets/cemetery-crawler/main.py @@ -0,0 +1,168 @@ +import pygame +import random + +pygame.init() + +WIDTH, HEIGHT = 800, 400 +screen = pygame.display.set_mode((WIDTH, HEIGHT)) +pygame.display.set_caption("cemetery crawler") + +background = pygame.image.load("hp-background.png") +reaper_img = pygame.image.load("reaper.png") +soul_img = pygame.image.load("soul.png") +spirit_img = pygame.image.load("spirit.png") +gravestone_img = pygame.image.load("gravestone.png") + +gravity = 0.5 +jump_power = -10 +speed = 5 +bg_x = 0 + +WHITE = (255, 255, 255) + +class Reaper: + def __init__(self): + self.image = reaper_img + self.rect = self.image.get_rect(midbottom=(100, HEIGHT - 50)) + self.velocity = 0 + self.on_ground = True + self.score = 0 + self.stunned = False + + def move(self, keys): + if keys[pygame.K_a]: + self.rect.x -= speed + if keys[pygame.K_d]: + self.rect.x += speed + + def jump(self): + if self.on_ground and not self.stunned: + self.velocity = jump_power + self.on_ground = False + + def attack(self, spirits): + for spirit in spirits: + if self.rect.colliderect(spirit.rect): + spirits.remove(spirit) + self.score += 2 + + def update(self): + if not self.on_ground: + self.velocity += gravity + self.rect.y += self.velocity + if self.rect.bottom >= HEIGHT - 50: + self.rect.bottom = HEIGHT - 50 + self.on_ground = True + self.velocity = 0 + + def draw(self, screen): + screen.blit(self.image, self.rect) + +def draw_background(): + global bg_x + bg_x -= speed // 2 + if bg_x <= -WIDTH: + bg_x = 0 + screen.blit(background, (bg_x, 0)) + screen.blit(background, (bg_x + WIDTH, 0)) + +class Soul: + def __init__(self): + self.image = soul_img + self.rect = self.image.get_rect(midtop=(random.randint(WIDTH, WIDTH + 100), random.randint(50, 150))) + + def update(self): + self.rect.x -= speed + return self.rect.x > -50 + + def draw(self, screen): + screen.blit(self.image, self.rect) + +class Spirit: + def __init__(self): + self.image = spirit_img + self.rect = self.image.get_rect(midtop=(random.randint(WIDTH, WIDTH + 100), random.randint(50, 150))) + + def update(self): + self.rect.x -= speed + return self.rect.x > -50 + + def draw(self, screen): + screen.blit(self.image, self.rect) + +class Gravestone: + def __init__(self): + self.image = gravestone_img + self.rect = self.image.get_rect(midbottom=(random.randint(WIDTH, WIDTH + 200), HEIGHT - 50)) + + def update(self): + self.rect.x -= speed + return self.rect.x > -50 + + def draw(self, screen): + screen.blit(self.image, self.rect) + +clock = pygame.time.Clock() +reaper = Reaper() +souls = [] +spirits = [] +gravestones = [] +running = True + +while running: + screen.fill(WHITE) + draw_background() + + for event in pygame.event.get(): + if event.type == pygame.QUIT: + running = False + if event.type == pygame.KEYDOWN: + if event.key == pygame.K_w: + reaper.jump() + if event.key == pygame.K_f: + reaper.attack(spirits) + + keys = pygame.key.get_pressed() + reaper.move(keys) + reaper.update() + reaper.draw(screen) + + if random.randint(1, 80) == 1: + souls.append(Soul()) + if random.randint(1, 120) == 1: + spirits.append(Spirit()) + if random.randint(1, 150) == 1: + gravestones.append(Gravestone()) + + for soul in souls[:]: + if not soul.update(): + souls.remove(soul) + soul.draw(screen) + if reaper.rect.colliderect(soul.rect): + souls.remove(soul) + reaper.score += 1 + + for spirit in spirits[:]: + if not spirit.update(): + spirits.remove(spirit) + spirit.draw(screen) + if reaper.rect.colliderect(spirit.rect): + reaper.stunned = True + pygame.time.delay(5000) + reaper.stunned = False + + for gravestone in gravestones[:]: + if not gravestone.update(): + gravestones.remove(gravestone) + gravestone.draw(screen) + if reaper.rect.colliderect(gravestone.rect): + reaper.jump() + + font = pygame.font.Font(None, 36) + score_text = font.render(f"Skulls: {reaper.score}", True, WHITE) + screen.blit(score_text, (10, 10)) + + pygame.display.update() + clock.tick(30) + +pygame.quit() From 896e37e079c96c665a2904bad0ece9250622cf63 Mon Sep 17 00:00:00 2001 From: anne Date: Sun, 9 Feb 2025 06:37:02 +0530 Subject: [PATCH 5/8] Update readme.md --- pets/cemetery-crawler/readme.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pets/cemetery-crawler/readme.md b/pets/cemetery-crawler/readme.md index 1d5e0293..f38d6792 100644 --- a/pets/cemetery-crawler/readme.md +++ b/pets/cemetery-crawler/readme.md @@ -1,7 +1,11 @@ -# cemetery crawler ! +# cemetery crawler cemetery crawler is my submission for hack club's hackapet ysws. it's a small pixel-art arcade game that's set in the abandoned cemetery on a dimly lit night. my "pet" is a grim reaper present in the cemetery and the player is supposed to control him and **collect wandering souls** while **avoiding vengeful spirits.** +

+im still working on improving the game so it can reach a stage where its actually enjoyable for ppl but rn here's what the game should look like: ![image](https://github.com/user-attachments/assets/f813879e-275c-46cc-b8be-7e59e7769748) +
+btw, setting up circuitpython on windows was a PAIN because there were so many installations that were all over the place + running the code on the vscode terminal just didn't work and we had to use windows powershell for a few steps and the command prompt for others. ## controls - left – move left
From 9374a7672aed943ba2fb3853a242539c054b9cd6 Mon Sep 17 00:00:00 2001 From: arsoninstigator Date: Sun, 9 Feb 2025 14:06:50 +0530 Subject: [PATCH 6/8] . --- pets/cemetery_crawler/golden-soul.png | Bin 0 -> 2635 bytes pets/cemetery_crawler/gravestone.png | Bin 0 -> 1951 bytes pets/cemetery_crawler/hp-background.png | Bin 0 -> 15672 bytes pets/cemetery_crawler/main.py | 94 ++++++++++++++++++ .../readme.md | 0 pets/cemetery_crawler/reaper.png | Bin 0 -> 1222 bytes pets/cemetery_crawler/requirements.txt | 3 + pets/cemetery_crawler/soul.png | Bin 0 -> 2521 bytes pets/cemetery_crawler/spirit.png | Bin 0 -> 2593 bytes 9 files changed, 97 insertions(+) create mode 100644 pets/cemetery_crawler/golden-soul.png create mode 100644 pets/cemetery_crawler/gravestone.png create mode 100644 pets/cemetery_crawler/hp-background.png create mode 100644 pets/cemetery_crawler/main.py rename pets/{cemetery crawler ! => cemetery_crawler}/readme.md (100%) create mode 100644 pets/cemetery_crawler/reaper.png create mode 100644 pets/cemetery_crawler/requirements.txt create mode 100644 pets/cemetery_crawler/soul.png create mode 100644 pets/cemetery_crawler/spirit.png diff --git a/pets/cemetery_crawler/golden-soul.png b/pets/cemetery_crawler/golden-soul.png new file mode 100644 index 0000000000000000000000000000000000000000..ce093ebc8fd5e053ecfc5cf536eba136b4c25ce9 GIT binary patch literal 2635 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 literal 0 HcmV?d00001 diff --git a/pets/cemetery_crawler/hp-background.png b/pets/cemetery_crawler/hp-background.png new file mode 100644 index 0000000000000000000000000000000000000000..0e32223a2097a236f5db2dda6d83e542ab1d1c2e GIT binary patch literal 15672 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 D0T&;G literal 0 HcmV?d00001 From 63056d67cd9d8a9a51c6101542d304df391110d7 Mon Sep 17 00:00:00 2001 From: anne Date: Sun, 9 Feb 2025 14:13:33 +0530 Subject: [PATCH 7/8] Update readme.md --- pets/cemetery-crawler/readme.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pets/cemetery-crawler/readme.md b/pets/cemetery-crawler/readme.md index f38d6792..de76d27d 100644 --- a/pets/cemetery-crawler/readme.md +++ b/pets/cemetery-crawler/readme.md @@ -7,6 +7,8 @@ im still working on improving the game so it can reach a stage where its actuall
btw, setting up circuitpython on windows was a PAIN because there were so many installations that were all over the place + running the code on the vscode terminal just didn't work and we had to use windows powershell for a few steps and the command prompt for others. +NOTE: this is still a wip because i accidentally created the game in pygame initially and am now switching over to circuitpython !!! + ## controls - left – move left
- right – move right
From 4682e7fd4a8056a03b0215cbbd9c604f562eccb5 Mon Sep 17 00:00:00 2001 From: arsoninstigator Date: Thu, 13 Mar 2025 05:41:36 +0530 Subject: [PATCH 8/8] . --- pets/cemetery-crawler/main.py | 223 +++++++++------------------------- pets/cemetery_crawler/main.py | 143 +++++++++------------- 2 files changed, 117 insertions(+), 249 deletions(-) diff --git a/pets/cemetery-crawler/main.py b/pets/cemetery-crawler/main.py index e0bb4fc7..a17b9342 100644 --- a/pets/cemetery-crawler/main.py +++ b/pets/cemetery-crawler/main.py @@ -1,168 +1,65 @@ -import pygame +import sys +import time import random -pygame.init() +CIRCUITPYTHON = False +try: + import board + import displayio + CIRCUITPYTHON = True +except ImportError: + from blinka_displayio_pygamedisplay import PyGameDisplay + import pygame + +if CIRCUITPYTHON: + display = board.DISPLAY +else: + pygame.init() + display = PyGameDisplay(width=128, height=128) + +def load_bitmap(filename): + if CIRCUITPYTHON: + return displayio.OnDiskBitmap(open(filename, "rb")) + else: + return pygame.image.load(filename) + +background = load_bitmap("hp-background.png") +reaper_img = load_bitmap("reaper.png") +soul_img = load_bitmap("soul.png") +spirit_img = load_bitmap("spirit.png") +gravestone_img = load_bitmap("gravestone.png") + +reaper_x, reaper_y = 64, 100 +jumping = False +jump_velocity = 0 +score = 0 + +souls = [{"x": random.randint(10, 118), "y": 20} for _ in range(3)] +spirits = [{"x": random.randint(10, 118), "y": 40} for _ in range(2)] +gravestones = [{"x": random.randint(10, 118), "y": 110} for _ in range(2)] -WIDTH, HEIGHT = 800, 400 -screen = pygame.display.set_mode((WIDTH, HEIGHT)) -pygame.display.set_caption("cemetery crawler") - -background = pygame.image.load("hp-background.png") -reaper_img = pygame.image.load("reaper.png") -soul_img = pygame.image.load("soul.png") -spirit_img = pygame.image.load("spirit.png") -gravestone_img = pygame.image.load("gravestone.png") - -gravity = 0.5 -jump_power = -10 -speed = 5 -bg_x = 0 - -WHITE = (255, 255, 255) - -class Reaper: - def __init__(self): - self.image = reaper_img - self.rect = self.image.get_rect(midbottom=(100, HEIGHT - 50)) - self.velocity = 0 - self.on_ground = True - self.score = 0 - self.stunned = False - - def move(self, keys): - if keys[pygame.K_a]: - self.rect.x -= speed - if keys[pygame.K_d]: - self.rect.x += speed - - def jump(self): - if self.on_ground and not self.stunned: - self.velocity = jump_power - self.on_ground = False - - def attack(self, spirits): - for spirit in spirits: - if self.rect.colliderect(spirit.rect): - spirits.remove(spirit) - self.score += 2 - - def update(self): - if not self.on_ground: - self.velocity += gravity - self.rect.y += self.velocity - if self.rect.bottom >= HEIGHT - 50: - self.rect.bottom = HEIGHT - 50 - self.on_ground = True - self.velocity = 0 - - def draw(self, screen): - screen.blit(self.image, self.rect) - -def draw_background(): - global bg_x - bg_x -= speed // 2 - if bg_x <= -WIDTH: - bg_x = 0 - screen.blit(background, (bg_x, 0)) - screen.blit(background, (bg_x + WIDTH, 0)) - -class Soul: - def __init__(self): - self.image = soul_img - self.rect = self.image.get_rect(midtop=(random.randint(WIDTH, WIDTH + 100), random.randint(50, 150))) - - def update(self): - self.rect.x -= speed - return self.rect.x > -50 - - def draw(self, screen): - screen.blit(self.image, self.rect) - -class Spirit: - def __init__(self): - self.image = spirit_img - self.rect = self.image.get_rect(midtop=(random.randint(WIDTH, WIDTH + 100), random.randint(50, 150))) - - def update(self): - self.rect.x -= speed - return self.rect.x > -50 - - def draw(self, screen): - screen.blit(self.image, self.rect) - -class Gravestone: - def __init__(self): - self.image = gravestone_img - self.rect = self.image.get_rect(midbottom=(random.randint(WIDTH, WIDTH + 200), HEIGHT - 50)) - - def update(self): - self.rect.x -= speed - return self.rect.x > -50 - - def draw(self, screen): - screen.blit(self.image, self.rect) - -clock = pygame.time.Clock() -reaper = Reaper() -souls = [] -spirits = [] -gravestones = [] running = True - while running: - screen.fill(WHITE) - draw_background() - - for event in pygame.event.get(): - if event.type == pygame.QUIT: - running = False - if event.type == pygame.KEYDOWN: - if event.key == pygame.K_w: - reaper.jump() - if event.key == pygame.K_f: - reaper.attack(spirits) - - keys = pygame.key.get_pressed() - reaper.move(keys) - reaper.update() - reaper.draw(screen) - - if random.randint(1, 80) == 1: - souls.append(Soul()) - if random.randint(1, 120) == 1: - spirits.append(Spirit()) - if random.randint(1, 150) == 1: - gravestones.append(Gravestone()) - - for soul in souls[:]: - if not soul.update(): - souls.remove(soul) - soul.draw(screen) - if reaper.rect.colliderect(soul.rect): - souls.remove(soul) - reaper.score += 1 - - for spirit in spirits[:]: - if not spirit.update(): - spirits.remove(spirit) - spirit.draw(screen) - if reaper.rect.colliderect(spirit.rect): - reaper.stunned = True - pygame.time.delay(5000) - reaper.stunned = False - - for gravestone in gravestones[:]: - if not gravestone.update(): - gravestones.remove(gravestone) - gravestone.draw(screen) - if reaper.rect.colliderect(gravestone.rect): - reaper.jump() - - font = pygame.font.Font(None, 36) - score_text = font.render(f"Skulls: {reaper.score}", True, WHITE) - screen.blit(score_text, (10, 10)) - - pygame.display.update() - clock.tick(30) - -pygame.quit() + if not CIRCUITPYTHON: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + running = False + + for soul in souls: + soul["y"] += 1 + if soul["y"] > 128: + soul["y"] = 0 + + for soul in souls: + if abs(reaper_x - soul["x"]) < 10 and abs(reaper_y - soul["y"]) < 10: + score += 1 + soul["y"] = 0 + + if not CIRCUITPYTHON: + display.surface.blit(background, (0, 0)) + display.surface.blit(reaper_img, (reaper_x, reaper_y)) + for soul in souls: + display.surface.blit(soul_img, (soul["x"], soul["y"])) + pygame.display.flip() + + time.sleep(0.1) diff --git a/pets/cemetery_crawler/main.py b/pets/cemetery_crawler/main.py index 02436c2d..a17b9342 100644 --- a/pets/cemetery_crawler/main.py +++ b/pets/cemetery_crawler/main.py @@ -1,94 +1,65 @@ +import sys +import time +import random + +CIRCUITPYTHON = False try: import board import displayio - display = board.DISPLAY - - background = displayio.OnDiskBitmap("pets/cemetery crawler !/hp-background.png") - reaper_img = displayio.OnDiskBitmap("reaper.png") - soul_img = displayio.OnDiskBitmap("soul.png") - spirit_img = displayio.OnDiskBitmap("spirit.png") - gravestone_img = displayio.OnDiskBitmap("gravestone.png") - - -except (NotImplementedError, NameError): - import blinka_displayio_pygamedisplay as displayio - from PIL import Image + CIRCUITPYTHON = True +except ImportError: + from blinka_displayio_pygamedisplay import PyGameDisplay import pygame - display = displayio.PyGameDisplay(width=300, height=300) - -import time -import random -time.sleep(1) - -pygame.init() -screen = pygame.display.set_mode((128, 128)) - -background = pygame.image.load("hp-background.png") -background = pygame.transform.scale(background, (128, 128)) - -reaper_img = pygame.image.load("reaper.png") -reaper_img = pygame.transform.scale(reaper_img, (20, 20)) - -soul_img = pygame.image.load("soul.png") -soul_img = pygame.transform.scale(soul_img, (20, 20)) - -spirit_img = pygame.image.load("spirit.png") -spirit_img = pygame.transform.scale(spirit_img, (20, 20)) - -gravestone_img = pygame.image.load("gravestone.png") -gravestone_img = pygame.transform.scale(gravestone_img, (30, 30)) - - -gravity = 0.5 -jump_power = -10 -speed = 5 -bg_x = 0 - -class Reaper: - def __init__(self): - self.sprite = pygame.image.load("reaper.png") - self.x = 0 - self.y = 0 - self.velocity = 0 - self.on_ground = True - self.score = 0 - self.stunned = False - - def move(self, direction): - if direction == "left": - self.x -= speed - elif direction == "right": - self.x += speed - self.sprite.x = self.x - - def jump(self): - if self.on_ground and not self.stunned: - self.velocity = jump_power - self.on_ground = False - - def attack(self, spirits): - for spirit in spirits: - if abs(self.x - spirit.x) < 20: - spirits.remove(spirit) - self.score += 2 - - def update(self, screen): - screen.blit(self.sprite, (self.x, self.y)) - -reaper = Reaper() -souls = [] -spirits = [] -gravestones = [] +if CIRCUITPYTHON: + display = board.DISPLAY +else: + pygame.init() + display = PyGameDisplay(width=128, height=128) + +def load_bitmap(filename): + if CIRCUITPYTHON: + return displayio.OnDiskBitmap(open(filename, "rb")) + else: + return pygame.image.load(filename) + +background = load_bitmap("hp-background.png") +reaper_img = load_bitmap("reaper.png") +soul_img = load_bitmap("soul.png") +spirit_img = load_bitmap("spirit.png") +gravestone_img = load_bitmap("gravestone.png") + +reaper_x, reaper_y = 64, 100 +jumping = False +jump_velocity = 0 +score = 0 + +souls = [{"x": random.randint(10, 118), "y": 20} for _ in range(3)] +spirits = [{"x": random.randint(10, 118), "y": 40} for _ in range(2)] +gravestones = [{"x": random.randint(10, 118), "y": 110} for _ in range(2)] running = True while running: - screen.fill((0, 0, 0)) - reaper.update(screen) - pygame.display.update() - - for event in pygame.event.get(): - if event.type == pygame.QUIT: - running = False - -pygame.quit() + if not CIRCUITPYTHON: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + running = False + + for soul in souls: + soul["y"] += 1 + if soul["y"] > 128: + soul["y"] = 0 + + for soul in souls: + if abs(reaper_x - soul["x"]) < 10 and abs(reaper_y - soul["y"]) < 10: + score += 1 + soul["y"] = 0 + + if not CIRCUITPYTHON: + display.surface.blit(background, (0, 0)) + display.surface.blit(reaper_img, (reaper_x, reaper_y)) + for soul in souls: + display.surface.blit(soul_img, (soul["x"], soul["y"])) + pygame.display.flip() + + time.sleep(0.1)