From 5bda55232494c82149cc4706243867ab2a9aee3a Mon Sep 17 00:00:00 2001 From: JayLiuTU Date: Wed, 10 Apr 2024 13:37:34 -0400 Subject: [PATCH 1/2] jumpy intergrated --- .../__pycache__/enemy.cpython-310.pyc | Bin 1490 -> 0 bytes .../__pycache__/spritesheet.cpython-310.pyc | Bin 858 -> 0 bytes source/gesture inference/inference.py | 3 +- .../platformerGame}/Catfiles.ttf | Bin .../platformerGame}/assets/bg.png | Bin .../platformerGame}/assets/bird.png | Bin .../platformerGame}/assets/jump.png | Bin .../platformerGame}/assets/wood.png | Bin .../platformerGame}/enemy.py | 0 .../platformerGame}/platformer.py | 164 +++++++++++++----- .../platformerGame}/score.txt | 0 .../platformerGame}/spritesheet.py | 0 12 files changed, 126 insertions(+), 41 deletions(-) delete mode 100644 platformerGame/__pycache__/enemy.cpython-310.pyc delete mode 100644 platformerGame/__pycache__/spritesheet.cpython-310.pyc rename {platformerGame => source/gesture inference/platformerGame}/Catfiles.ttf (100%) rename {platformerGame => source/gesture inference/platformerGame}/assets/bg.png (100%) rename {platformerGame => source/gesture inference/platformerGame}/assets/bird.png (100%) rename {platformerGame => source/gesture inference/platformerGame}/assets/jump.png (100%) rename {platformerGame => source/gesture inference/platformerGame}/assets/wood.png (100%) rename {platformerGame => source/gesture inference/platformerGame}/enemy.py (100%) rename {platformerGame => source/gesture inference/platformerGame}/platformer.py (62%) rename {platformerGame => source/gesture inference/platformerGame}/score.txt (100%) rename {platformerGame => source/gesture inference/platformerGame}/spritesheet.py (100%) diff --git a/platformerGame/__pycache__/enemy.cpython-310.pyc b/platformerGame/__pycache__/enemy.cpython-310.pyc deleted file mode 100644 index 9b3c668f7f1c986028ef02cd70f0c2a54d732b7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1490 zcmZuxUys{F5Z|@ej+6L&Aspo@pgsOP5KtR*R01S~TIG&%h~^MERLK&uEbk^~$FbdA zpVSoR>H0wui5I@oiZ`C}5#XiF*uCC8u-5)|W_CRLXMVH!&Q6Cw`~9E(G_(o%8cu#cdtzW_>-(8O4q71>ZqW~3qkYyi-L z8GGH@pv5WM>ke*oW^8b-Tal#8&AA~z;S6*)Gr5H$w^vrVQ(2evi2QbUWmo3ft8Cul zt%`AHW35^cb$9JnEr{T9Yh$ijRcqaYIanQRZ2eZ%LiyP})Sz3paR+^n`s=sr-Ryzf ztj=+#$zJeI#;Vs+Wz?2ioWK>d$CAPsx38dWQ9Ap6i>Kcn01V7}@)`#3YP(p@!iCVb zDr8*3IB7;F2;wX*gFt&>7B9jw&a)tmRjIpE2|vIr7tb{-WB9o}6J=1w(Ol{7MZv>T zfQCV3nDKm}?dUv@Bk<#~6cL8fY?{V}w!mTb`hQpi#S%{2W{ogK1VHeXi+p;Ao~qI@RuE^vm(_ICy$;boPV%0M72a%>e^-E<~v<6@{tr zcdyT;N>M1k{l*|~!(V?A`5_Gd`omw9kZL%K!$lb9!y}>QWnK(Nd76ru7~-X6vxCDg z4j&9hCzFE*Uw-rTu#kBI8@#v3@x;R-4NE+ikdNX1h60&-zgSAFB_wQJEgrQEo4T|| zJJbQ0nJ(?a*P$NuK<*e|H(dI{tC@cPDoc?G5w056ANHE^e}KU03h167-DpiNqcnkd z7LqHm_eo{WnLN0*1$G4i5~#7Sh(Q7*8ZD8)>{a5<8xmvX4|Zi24K4zvM79ui z5Ilrk0BxoslkcI5kA&qOf$jvsBIg$=%5D%my9m=}rY3>>48q=67MUk;ZHX6w*P`IHg~!aH?w#5;u$tTG bp%a$5Y$Kri|HaYHx6Sh3;mhzQ*uL=})v;lV diff --git a/platformerGame/__pycache__/spritesheet.cpython-310.pyc b/platformerGame/__pycache__/spritesheet.cpython-310.pyc deleted file mode 100644 index 171d6408f64019f796a3493be58ac56c421320e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 858 zcmY*Xy^hmB5Z+z?#0d#S6dH8JiOvOQbX)-vLMH|3M3W|>Nx@>gYsWeNvAY4~WU9L! z9w8}trERHr1gMyClp~BZNGSVH;uIX8`u>t3Kl^f1o1c*on^k#B2&DkL#K|}}XffImsW4#B*kS%Rl>!fT) zw`@ng`mMipTC#Elg^}3=c<#Bp++fhndAE zAycqq^3Q~Q>o=PWX0pBcTBUI!?I@|M&r%s47tJ!Z?#CiG3jYJ!H!7|)@&Jq{aUrdf zSH=#tG(4$`T3yRc*i*=Y^-_hedS7y3meya&JX;#|5JC$dbJt3F2n7k*8>GYbGkB|8 zA0E49kLd}0LI>1kH;;}vz0aJ59 ANIMATION_COOLDOWN: + self.update_time = pygame.time.get_ticks() + self.frame_index += 1 + #if the animation has run out then reset back to the start + if self.frame_index >= len(self.animation_list): + self.frame_index = 0 + + #move enemy + self.rect.x += self.direction * 2 + self.rect.y += scroll + + #check if gone off screen + if self.rect.right < 0 or self.rect.left > SCREEN_WIDTH: + self.kill() + +class SpriteSheet(): + def __init__(self, image): + self.sheet = image + + def get_image(self, frame, width, height, scale, colour): + image = pygame.Surface((width, height)).convert_alpha() + image.blit(self.sheet, (0, 0), ((frame * width), 0, width, height)) + image = pygame.transform.scale(image, (int(width * scale), int(height * scale))) + image.set_colorkey(colour) + + return image # initialize pygame pygame.init() @@ -12,7 +79,7 @@ SCREEN_HEIGHT = 600 #create game window -screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) +surface = pygame.Surface((SCREEN_WIDTH, SCREEN_HEIGHT)) pygame.display.set_caption('Jumpy') # set frame rate @@ -29,8 +96,8 @@ score = 0 fade_counter = 0 -if os.path.exists('platformerGame/score.txt'): - with open('platformerGame/score.txt', 'r') as file: +if os.path.exists('score.txt'): + with open('score.txt', 'r') as file: high_score = int(file.read()) else: high_score = 0 @@ -42,32 +109,34 @@ PANEL = (153, 217, 234) # define font -font_small = pygame.font.Font('platformerGame/Catfiles.ttf', 24) -font_big = pygame.font.Font('platformerGame/Catfiles.ttf', 30) +font_small = pygame.font.Font('Catfiles.ttf', 24) +font_big = pygame.font.Font('Catfiles.ttf', 30) # load images -bg_image = pygame.image.load('platformerGame/assets/bg.png').convert_alpha() -jumpy_image = pygame.image.load('platformerGame/assets/jump.png').convert_alpha() -platform_image = pygame.image.load('platformerGame/assets/wood.png').convert_alpha() -bird_sheet_img = pygame.image.load('platformerGame/assets/bird.png').convert_alpha() + +pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) +bg_image = pygame.image.load('assets/bg.png').convert_alpha() +jumpy_image = pygame.image.load('assets/jump.png').convert_alpha() +platform_image = pygame.image.load('assets/wood.png').convert_alpha() +bird_sheet_img = pygame.image.load('assets/bird.png').convert_alpha() bird_sheet = SpriteSheet(bird_sheet_img) # function for outputting the text on the sceen def draw_text(text, font, text_col, x, y): img = font.render(text, True, text_col) - screen.blit(img, (x,y)) + surface.blit(img, (x,y)) # function for drawing info panel def draw_panel(): - pygame.draw.rect(screen, PANEL, (0,0, SCREEN_WIDTH, 30)) - pygame.draw.line(screen, BLACK, (0, 30), (SCREEN_WIDTH, 30), 2) + pygame.draw.rect(surface, PANEL, (0,0, SCREEN_WIDTH, 30)) + pygame.draw.line(surface, BLACK, (0, 30), (SCREEN_WIDTH, 30), 2) draw_text('SCORE: ' + str(score), font_small, BLACK, 0, 0) # function for drawing the background def draw_bg(bg_scroll): - screen.blit(bg_image, (0,0 + bg_scroll)) - screen.blit(bg_image, (0, -600 + bg_scroll)) + surface.blit(bg_image, (0,0 + bg_scroll)) + surface.blit(bg_image, (0, -600 + bg_scroll)) # player class @@ -99,7 +168,7 @@ def move(self): self.vel_y += GRAVITY dy += self.vel_y - # making sure character doesnt move off of screen + # making sure character doesnt move off of surface if self.rect.left + dx < 0: dx = -self.rect.left if self.rect.right + dx > SCREEN_WIDTH: @@ -117,7 +186,7 @@ def move(self): self.vel_y = -20 - # check if the player has bounced to the top of the screen + # check if the player has bounced to the top of the surface if self.rect.top <= SCROLL_THRESH: # if player is jumping if self.vel_y < 0: @@ -133,8 +202,8 @@ def move(self): return scroll def draw(self): - screen.blit(pygame.transform.flip(self.image, self.flip, False), (self.rect.x - 12, self.rect.y - 5)) - # pygame.draw.rect(screen, WHITE, self.rect, 2) + surface.blit(pygame.transform.flip(self.image, self.flip, False), (self.rect.x - 12, self.rect.y - 5)) + # pygame.draw.rect(surface, WHITE, self.rect, 2) # platform class class Platform(pygame.sprite.Sprite): @@ -165,7 +234,7 @@ def update(self, scroll): # update platforms vertical position self.rect.y += scroll - # check if platform has gone off the screen + # check if platform has gone off the surface if self.rect.top > SCREEN_HEIGHT: self.kill() @@ -181,9 +250,31 @@ def update(self, scroll): platform = Platform(SCREEN_WIDTH//2 - 50, SCREEN_HEIGHT-50, 100, False) platform_group.add(platform) + + +#create game window +surface = pygame.Surface((SCREEN_WIDTH, SCREEN_HEIGHT)) +pygame.display.set_caption('Jumpy') + +# set frame rate +clock = pygame.time.Clock() +FPS = 60 + #game loop -run = True -while run: +def tick(): + global clock + global jumpy + global platform_group + global platform + global enemy_group + global score + global scroll + global bg_image + global bg_scroll + global game_over + global fade_counter + global surface + global high_score clock.tick(FPS) @@ -225,12 +316,12 @@ def update(self, scroll): score += scroll #draw line at previous high score - pygame.draw.line(screen, WHITE, (0, score - high_score + SCROLL_THRESH), (SCREEN_WIDTH, score - high_score + SCROLL_THRESH), 3) + pygame.draw.line(surface, WHITE, (0, score - high_score + SCROLL_THRESH), (SCREEN_WIDTH, score - high_score + SCROLL_THRESH), 3) draw_text('HIGH SCORE', font_small, WHITE, SCREEN_WIDTH - 130, score - high_score + SCROLL_THRESH) #draw sprites - platform_group.draw(screen) - enemy_group.draw(screen) + platform_group.draw(surface) + enemy_group.draw(surface) jumpy.draw() #draw panel @@ -249,8 +340,8 @@ def update(self, scroll): if fade_counter < SCREEN_WIDTH: fade_counter += 5 for y in range(0, 6, 2): - pygame.draw.rect(screen, BLACK, (0, y * 100, fade_counter, 100)) - pygame.draw.rect(screen, BLACK, (SCREEN_WIDTH - fade_counter, (y + 1) * 100, SCREEN_WIDTH, 100)) + pygame.draw.rect(surface, BLACK, (0, y * 100, fade_counter, 100)) + pygame.draw.rect(surface, BLACK, (SCREEN_WIDTH - fade_counter, (y + 1) * 100, SCREEN_WIDTH, 100)) else: draw_text('GAME OVER!', font_big, WHITE, 100, 200) draw_text('SCORE: ' + str(score), font_big, WHITE, 115, 250) @@ -259,7 +350,7 @@ def update(self, scroll): # update high score if score > high_score: high_score = score - with open('platformerGame/score.txt', 'w') as file: + with open('score.txt', 'w') as file: file.write(str(high_score)) key = pygame.key.get_pressed() if key[pygame.K_SPACE]: @@ -279,20 +370,13 @@ def update(self, scroll): platform_group.add(platform) - #event handler - for event in pygame.event.get(): +def events(events): + global high_score + for event in events: if event.type == pygame.QUIT: #update high score if score > high_score: high_score = score - with open('platformerGame/score.txt', 'w') as file: + with open('score.txt', 'w') as file: file.write(str(high_score)) - run = False - - - #update display window - pygame.display.update() - - -pygame.quit() \ No newline at end of file diff --git a/platformerGame/score.txt b/source/gesture inference/platformerGame/score.txt similarity index 100% rename from platformerGame/score.txt rename to source/gesture inference/platformerGame/score.txt diff --git a/platformerGame/spritesheet.py b/source/gesture inference/platformerGame/spritesheet.py similarity index 100% rename from platformerGame/spritesheet.py rename to source/gesture inference/platformerGame/spritesheet.py From 3d32f0645f78a7dbb23fcb87acb95e6f0176f705 Mon Sep 17 00:00:00 2001 From: JayLiuTU Date: Wed, 10 Apr 2024 14:11:33 -0400 Subject: [PATCH 2/2] gesture model and contols (no space) --- source/gesture inference/menu.py | 1 + source/gesture inference/models/jumpy.pth | Bin 0 -> 43456 bytes 2 files changed, 1 insertion(+) create mode 100644 source/gesture inference/models/jumpy.pth diff --git a/source/gesture inference/menu.py b/source/gesture inference/menu.py index e8e9e0568..3ef12670f 100644 --- a/source/gesture inference/menu.py +++ b/source/gesture inference/menu.py @@ -84,6 +84,7 @@ def setup_settings(self): [ ("Flappybird", ["space", "none", "m", "p"]), ("Minecraft", ["none", "w", "e", "ctrlleft"]), + ("Jumpy", ["none", "left", "right"]), ], default=0, onchange=self.set_key_bindings, diff --git a/source/gesture inference/models/jumpy.pth b/source/gesture inference/models/jumpy.pth new file mode 100644 index 0000000000000000000000000000000000000000..daedb53d48ac7dc8f3544f362818c0d2f6f9b56b GIT binary patch literal 43456 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