From 6e7fa6f11a91ca0c22bb1002112c24ce23b4efb3 Mon Sep 17 00:00:00 2001 From: Niko <128133376+N1k0s1@users.noreply.github.com> Date: Tue, 4 Feb 2025 17:50:12 +1300 Subject: [PATCH] added jack's adventure Niko slack username --- pets/jack's adventure/code/cat-Sheet.bmp | Bin 0 -> 36934 bytes pets/jack's adventure/code/fireball.bmp | Bin 0 -> 4166 bytes .../code/forestbackground.bmp | Bin 0 -> 65606 bytes pets/jack's adventure/code/main.py | 129 ++++++++++++++++++ pets/jack's adventure/code/restart.bmp | Bin 0 -> 8262 bytes pets/jack's adventure/requirements.txt | 4 + 6 files changed, 133 insertions(+) create mode 100644 pets/jack's adventure/code/cat-Sheet.bmp create mode 100644 pets/jack's adventure/code/fireball.bmp create mode 100644 pets/jack's adventure/code/forestbackground.bmp create mode 100644 pets/jack's adventure/code/main.py create mode 100644 pets/jack's adventure/code/restart.bmp create mode 100644 pets/jack's adventure/requirements.txt diff --git a/pets/jack's adventure/code/cat-Sheet.bmp b/pets/jack's adventure/code/cat-Sheet.bmp new file mode 100644 index 0000000000000000000000000000000000000000..49ce02edbb3d906c5d4231a583655a67de352788 GIT binary patch literal 36934 zcmeI1F_L685JYDK6OR*c47`oNSPvTmbA2p4E`iTYxCnvCNrp~-yy)DF(wEe~dwRB8 z9rR>LRhcQ3^#3foKmPRTkC*>HpH4r2IDNnWaQdF`!|CTYCww{Ozx#IkYPfw~UtYHV zG(1K9&+DI`U-|Z`sT1~UNAok9GquZqtOGMWov9sjKV8yw|DNjk`|ab$SO5C?D{kGJ ztaA;;EndziFLkq?an_{{bv;a8>bCebCe}eDO_P zjh&;os!1JbCojj#fAv4_O?9{O-c&WIv+mz|{_@`Bc)fqt`zPNU)w?C{O;wXR>;3aM z@1H!|w?6;n-~Tge_UM|=Uuv)OKmQ#my~rM|{`cR1`n{q)`Imk=W^X-5>>4Az=XYB2 z&~se={r6Ayk^c5DdER&8)&JFhzXRM0$Gk_qdq+Nbu1W0PikWvz9rSycJl7;%{_Fnx z9pGL#<~{1&JMzhMO=9<6_y4-jzs|wWfS!Zdd&cBJ*WheN(Yfe>_$87DU1QXjI_IJX zrY~diplhHziq1t3#4nLN=o+KG)HxSDFnt-52VDc*QFJbPAbyGDLDv}drOvtNf$7Vb zJm?zej-qqX1My2F54y&vFLlmE4@_Uii@wjT`!{y~)Mxcdef6Ge&c`0BmOQ-|YR}zxKcVxqvfwe9QB%&Y|V6dFqL?R{Nl)LiU+C=7p*0 zUhsU*>&2(0Lgn?z+%~)YbUk9#ud+_P_nVnV+|M;^SMKKhLaVdhU(2MxJli;5%$kK?|Gjib`EiR?2TO?{)|8C0NqP-K31G_8oO_LE6@2T&Tn!xPS3ru z>${fwEdQ+o-VvgYJ9mzt+heV4bXeX3trR zh7jFq|H?nJKYJI_C!zY1Jslm3>mPJi|IdH+^ZsxK^oiVPzpFYlgy^pR*Zub%DX#kI zbASE*_t2lorNxIcVC=ZgfBPMnJ@TH<#@=6a*ZqH=_g`nl87c0a^|hbB_u#KJ@X z9`Jt9oc7LFW6wE9F?u6-&;GLqUxU`1`{~CHR#S}uV==7=h2mq&wEUb=6XInd%e1r zzRy?jdw%|M&zxP(Yh3MZWNvT&>GP=m*@N77Z!G>uudAB$-s|yRuF@Wv+w;HG@4xl@ zpHF75|9S6jb^f`A^zDtsKksNR+S^mlm;5vP)4#c{pR3{1%S-TR|J`$MJ$t$Hj^-k1 zw)}7P{__>?`TM#Q-)jH4hV<=?#rHkU#Cv<{`Fc-gJiT`LZ+{=kT_5SWYN)4w-qV>F z{-|%(!JqN;TKK6uGnR&H&cx!n*WP;eax}ECdid;T#8WlY!$)rx;Y*KLSgphJ z*Y@)=9X&r2yN1V=hUXPuv;VFo?YF-F^4GWW zt>&nwCsn^j=HTCZ|EvS7)=m!eHCOc`b7(pCcwS4~Jw-aeP>(Ae`cacYfnFXg5Fr8<}L-m`zMtvB`_^lDpq*HGN5%lS)rJ)My?r1uCX zeHo+W&$8z3`Tk*TEo9A(t=itaYbfs3lfRS)A9Nk&M)3$2k0TmKxbMZEb=(V&^zaCm z{kn!?=6iT4FLhIgan@-}4)k|cRX;L^7C6FD4fWtCFYDk7GuIm*;r6swes$n2I&kC; zAK|h$*B~a>Lh2k_wY~Wx8b`Rjb*=pB!0N#5JK)c-;!(#-d87KPZgpUF;PE@)?~&Qv P9^uYZ5JVRd5Rf3BfRGa)VghH}gws29uuQW&sa)#$tqf-6arLLVs%Q88tpJZ>k_?OB&)`$bx!vFGJ*UT4mjYMcPUIeH`B?7>W?7q!|B&X0GF)*k4_1>O*)_;#jYvz{zHSegmcD`2cmi{g8-u-+1k@xc#{x%y_Dg zUWPsk$Lm>M<3`>2a2;zruY0aKSud;UjK*-Y8a+kj5z{9R%xc>2#ms{}{(tX(0oiaE Ap#T5? literal 0 HcmV?d00001 diff --git a/pets/jack's adventure/code/forestbackground.bmp b/pets/jack's adventure/code/forestbackground.bmp new file mode 100644 index 0000000000000000000000000000000000000000..5a86a9a6567ce1c0a7b3329fb2d78e161d18fd9c GIT binary patch literal 65606 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 BJ9Yp7 literal 0 HcmV?d00001 diff --git a/pets/jack's adventure/code/main.py b/pets/jack's adventure/code/main.py new file mode 100644 index 00000000..d6af5558 --- /dev/null +++ b/pets/jack's adventure/code/main.py @@ -0,0 +1,129 @@ +import displayio +from blinka_displayio_pygamedisplay import PyGameDisplay +import pygame +import time +from adafruit_display_text import label +import random + +pygame.init() + +display = PyGameDisplay(width=128, height=128) +splash = displayio.Group() +display.show(splash) + + +forest_background = displayio.OnDiskBitmap("forestbackground.bmp") +bg_sprite = displayio.TileGrid(forest_background, pixel_shader=forest_background.pixel_shader) +splash.append(bg_sprite) + +cat_sheet = displayio.OnDiskBitmap("cat-Sheet.bmp") + +tile_width = 32 +tile_height = 32 + +cat_sprite = displayio.TileGrid( + cat_sheet, + pixel_shader=cat_sheet.pixel_shader, + width=1, + height=1, + tile_width=tile_width, + tile_height=tile_height, + default_tile=0, + x=(display.width - tile_width) // 2, + y=display.height - tile_height - 10 +) + +splash.append(cat_sprite) + +fireball_bitmap = displayio.OnDiskBitmap("fireball.bmp") + +fireballs = [] + + + +def spawn_fireball(): + x_position = random.randint(0, display.width - fireball_bitmap.width) + fireball = displayio.TileGrid( + fireball_bitmap, + pixel_shader=fireball_bitmap.pixel_shader, + width=1, + height=1, + tile_width=fireball_bitmap.width, + tile_height=fireball_bitmap.height, + x=x_position, + y=-32 + ) + fireballs.append(fireball) + splash.append(fireball) + +# Function to check for collisions +def check_collision(sprite1, sprite2): + return ( + sprite1.x < sprite2.x + 32 and + sprite1.x + 32 > sprite2.x and + sprite1.y < sprite2.y + 32 and + sprite1.y + 32 > sprite2.y + ) + +death = displayio.OnDiskBitmap("restart.bmp") + +def display_game_over(): + global death_hi + death_hi = displayio.TileGrid( + death, + pixel_shader=cat_sheet.pixel_shader, + width=1, + height=1, + tile_width=64, + tile_height=32, + default_tile=0, + x=(display.width - 64) // 2, + y=(display.height - 32) // 2 + ) + splash.append(death_hi) + for i in fireballs: + splash.remove(i) + fireballs.clear() + +frame = 0 +speed = 4 +game_over = False + +while True: + + for event in pygame.event.get(): + if event.type == pygame.QUIT: + pygame.quit() + exit() + elif event.type == pygame.KEYDOWN: + if event.key == pygame.K_UP and game_over == True: + for i in fireballs: + splash.remove(i) + fireballs.clear() + splash.remove(death_hi) + game_over = False + + + keys = pygame.key.get_pressed() + + if game_over == False: + if keys[pygame.K_LEFT]: + cat_sprite.x -= speed + if keys[pygame.K_RIGHT]: + cat_sprite.x += speed + if random.random() < 0.05: # spawn rate + spawn_fireball() + + for fireball in fireballs: + fireball.y += 5 + if fireball.y > display.height: + splash.remove(fireball) + fireballs.remove(fireball) + elif check_collision(cat_sprite, fireball): + game_over = True + display_game_over() + + cat_sprite[0] = frame + frame = (frame + 1) % (cat_sheet.width // tile_width) + + time.sleep(0.1) \ No newline at end of file diff --git a/pets/jack's adventure/code/restart.bmp b/pets/jack's adventure/code/restart.bmp new file mode 100644 index 0000000000000000000000000000000000000000..47ccb2effbb3fd155850fd8bb97dd99338be34bd GIT binary patch literal 8262 zcmds&J#JJ%5QG;Il5qkbgUpD)87JTlL}c8Iix6{?fuxa-4-jd)OV0Oe25i zdI$7jl{fS0>(~)rHAlIto+=Mtc5hLOe1=udnV;daT<~$SdX-cDswd0Ch0g2_GX2We z@v|K~7rS_F7V8ePUa!MfX?Oj~6~50S_C8|jkF?AVyE}JB{|cAxwzD7aXT+r(-nW7e z%vt)`XIFddKhsd@2Rp;B>Q|l}J={fQvput%<41d~;CJ-<4y!zlBMv-=T*vAiba3>p z{Qg%Q?EQ#4V4tq7cB|(2uJ`B<4xd-?o|W(D_xCl@9yNCEaDaI&+ucpy*K6x%*GJwB zGsAZ0o~>VZbHBT5)vt4_o+^Kae%)v0S9^8x%F)3^FZ$ze0$(ljRyee0)n|TXnN!sx zuTR!Ds)ttnPE_sTGjBA*chKGy9}c&U^*XWkk;7^YpITV-^8T^p=>>}=ua;WZ>J0a@ zS=!_EQ7wA49zHs;{4Nk{zjA4Q<|{7qckp0z9=WjoXia@|VypM>Gj+zy*Ij%LwayI1 z;D=>~<}^=TExIeKy`8z>GK}YDJI1WthdnA==_c zR@O1j>2>0jKJ5WFvx=GdvsqEEbd%3!IIs73J!0>P*q^K?%Q-HKGhF22`^{@;bxU7{ z$vCT=&(#===E8@&vfwgXVff#c>8bb?<2@O-=Dh!rvGS-t;|M+4Q{5H$=yiG~r+ouz!?Ypvs>)oo`+r+1_;YMhms+`&rksK>QOJnG-Ap>1{tyYqK(=>HA%a_R&C literal 0 HcmV?d00001 diff --git a/pets/jack's adventure/requirements.txt b/pets/jack's adventure/requirements.txt new file mode 100644 index 00000000..c5163dd6 --- /dev/null +++ b/pets/jack's adventure/requirements.txt @@ -0,0 +1,4 @@ +adafruit_blinka_displayio==0.11.1 +adafruit_circuitpython_display_text==3.2.2 +blinka_displayio_pygamedisplay==2.4.0 +pygame==2.6.1