From f7055df3d268146679dc71e1c9fff7eb57beda1a Mon Sep 17 00:00:00 2001 From: SonyaCode <99513449+SonyaCode@users.noreply.github.com> Date: Fri, 24 Jan 2025 17:59:19 -0500 Subject: [PATCH 1/2] Create README.md --- pets/Catch_the_Fries/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 pets/Catch_the_Fries/README.md diff --git a/pets/Catch_the_Fries/README.md b/pets/Catch_the_Fries/README.md new file mode 100644 index 00000000..756972da --- /dev/null +++ b/pets/Catch_the_Fries/README.md @@ -0,0 +1 @@ +Be a seagull and catch all the fries! Don't let the fries touch the ground. From c9bd3f42d0cafff160fd44d2658be2649a5627c2 Mon Sep 17 00:00:00 2001 From: SonyaCode <99513449+SonyaCode@users.noreply.github.com> Date: Fri, 24 Jan 2025 18:02:25 -0500 Subject: [PATCH 2/2] Add files via upload --- pets/Catch_the_Fries/beach-background.bmp | Bin 0 -> 49206 bytes pets/Catch_the_Fries/fries-pixel.bmp | Bin 0 -> 4234 bytes pets/Catch_the_Fries/heart-pixel.bmp | Bin 0 -> 1162 bytes pets/Catch_the_Fries/main.py | 161 ++++++++++++++++++++++ pets/Catch_the_Fries/requirements.txt | Bin 0 -> 1442 bytes pets/Catch_the_Fries/restart.bmp | Bin 0 -> 6198 bytes pets/Catch_the_Fries/seagull-sheet.bmp | Bin 0 -> 17418 bytes 7 files changed, 161 insertions(+) create mode 100644 pets/Catch_the_Fries/beach-background.bmp create mode 100644 pets/Catch_the_Fries/fries-pixel.bmp create mode 100644 pets/Catch_the_Fries/heart-pixel.bmp create mode 100644 pets/Catch_the_Fries/main.py create mode 100644 pets/Catch_the_Fries/requirements.txt create mode 100644 pets/Catch_the_Fries/restart.bmp create mode 100644 pets/Catch_the_Fries/seagull-sheet.bmp diff --git a/pets/Catch_the_Fries/beach-background.bmp b/pets/Catch_the_Fries/beach-background.bmp new file mode 100644 index 0000000000000000000000000000000000000000..9f1857b9a67a3aecd184247aecd9c7b62c8504c0 GIT binary patch literal 49206 zcmeH}J8l#~5Qdl7B5}kKNFne6$T#k#Ye}fF%-3L{16V)Hp@Lfgeln z_NrX&XH`#k&+N=^^;$L6f4#n*ncWvJPfl06zZ3KSsrkI$e;%!#7|Z;fu2#oK_OrV- z|Gr(^V1WP#fB*=900@8p2vj8S`uwk16%!&A2#iPoH?s;paH()X3<4kk0xbx%`z3~# ze2epv=bR4zDxFkGBBuu>2!H?xOpSnf4dPAc9}1XQCg9-T8}NVt2qXwh;X7ptJtPoe z3j{y_1VCWQ1n}#3#M8ky_$cr#cGaCvA&Dr`n4w}au93_h%Oi=EYgARzV(ozPCi^I< ze``2JY1i@lmqy8*@<1LnOFIZQJLwRBWfik6K>z}^2$);6R;r$P=&6(#JsX>4EeYge z%`Axx9I6=RD1ifqokF;T+x7X!x=T`2tLYC@+o41+;e7MwyJSgH)zU~tBhB!WqEy3; zECC7XGEKI0v0ykBNrvL~vVmnhM~TYL5)?@AW;MagWlkZwyW3m&66UNZE1TU!Wl@uW zm#EmepGwYItMqGe56{N^wQLTs%&yW2A9Kcb6;`n%DsGfS6}2=mQA!vcnEYP9@|UWv z4OfL^#k{4gxPyTALv~qR3h!V9J8W8)S4P3+EiOF}!X83@NoJ}}z>g*$^+xfG5ssU=KxSTf1r2d5cw1pctGY^00{ zd_RT2C?H^Y76c+>Aq2jBcuuR`$W%gNv}_qMNz{IKRJ19a=J8zupAGeD94FQ5C8!X009sH0T2KI5Xchv`tAs; zKLI+IPj4S%fxu!3{QLO^3j{y_1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l z00ck)1V8`;KmY_l00b6DV6#3Gt_8wrJ+hEI$y)cbsQg>1SC`tgC`9dsErV|lt6f)( zGSl@RC<-yT&7_Q{;u zD)}3aO3Msw1N#Bl2=@nJ$p^Qnne;Bnt}e?ObE58hW0{T9k;yMpH{Qb%vC_U@UY(TT zHY9BA83|gYS_6$L^V%M&-~6_>vH|&A`}PD>w^4#4C~GMe<+mDBrv2f&PB?X3mM$va zdJKY0u{+*Gk%4PTmpX>OfmX)f3tXRr__YLTav-!srr1&Q| zC$G{ z_xU6yb+-K2)*hz;bJ@CL|NQ=pF;D;A7E&<=ockAoVyrPaYR4X{rKQz%u-nU}K^S*l Y=Lp7a2Gv0T1V8`;KmY_l;NS@S2kDHzYybcN literal 0 HcmV?d00001 diff --git a/pets/Catch_the_Fries/fries-pixel.bmp b/pets/Catch_the_Fries/fries-pixel.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c2a356b57f8d0359db7f1f781183ccbe3f6a9323 GIT binary patch literal 4234 zcmeH|cW_kK6~d% zIp=QC(jC)e!`BY}e}{Ma!#j*m;e3`oT$didz95s0{7J7+^z_O%OFnp@eeQ%jUcPN8 zOcceLt5>g9^Pc4M`KIPaTn^X1RAT%3dzoy)S5Hk zLZ@khL3s!+V?7+&S~#^K*tPXAsq0|Y9)-ZUNnZ<_PzwjYpXb;|uMND%e=TqZ&bqWs z$e87ZGS!FFnPo_rUV$0WUZf`OhdjxT)LG?Fr}&W+U4rzP9`5xcA=-_UI6vgcUc|@l zLRwrIoH{q==WiiDdDD13m}~Rz`N5)(VNnEOQXGU+-+)}99d_L@sO3SJ4Gl0*7eQSE zv$7UhLK|ak;{GOxI%=e>foN`oRbK~1>Q3Zky+^+M`SJ3d8h7yvi$8@!*Fv3JVa=>V zmbL{(c>|d(sPF-q`Xf-Ok08(433c*8*cHvl)t!JPom}R@sHufP9fUHi45DQl`O5#P zg|U3GYXZeDJ$oHyO*`}21gEA2R@$|zjzgzw!^YjfOhXMagb=iv23VEN$kTMfHM<3Q zst#mvkKND$i>?XDaXaBK?j~Ol$6`Ld=F-=EwCd@r)bSYf$~Ndz>*3NIgGGHDD*Z96 zD+i*)MkJUTpwP1(Gn-(~XooAc6>~MGpid4$P=v^DhMaX$ws3-2~}o0Yv?5F{5TA%cEn}Y<8|u)vK#mr{dk*N==8^7=Ds}jDLCjuzHkbn zwjKJ+5bGfXO~P)>cW$Q-BkesJTY5jovAgv71?ON@oPj2@6FS8S=D!U>S|cp_4kT-v z@gol)v)3ccQimC~79^{szUzcZ-imD1N$6)Eg-O%Oer$t9(+E{uIp*0*B>tqa*wR{& z)l>Q6;)@XE%yn8Ptm@McGn!#bYk*DDh7?T*uQB#l1Hg~{z?w3kn0jQeE_L)%pVk6F z)e3=mGU}*-x)I6IrO36Flb<^ENqm>u?S6IHWw_MuLsXw(?wgUrI?UEI5BEccz8+I7 zLCC}!gxQWD!X83|;s8>0jW7zG%n|#=*Z~#uuTeHZU=PXT1ITyy$xn!U5%T`Td0 zl%vokHNwFfEHEB}E~OfF<58rl4JvgcZdeK|=ZYi*~l3Y7$+xZI*!^XUxt_VKgZ{lCD0X!tan}tjA}_l1He4S75tX;#I1Nnq4#Gj+6wamh zv0nPYd2GcH=2DNO@;iwA^%V$v1|ZAwBhlrD$u6A%qhH3N^4FGZ>VtM`KaxuZ;W`P# z@9Rh2AAyM_w_qnH(t8Uzv_Hc)2$6G%FU390L%$ySQ2Pu*!h(M!FhxGVcnz&uQ=9E6Qy zc;#)_>2Eakko-sp3}6xMEvWeWn6W?dE3e`oU(RPfC+zKljpJm`HDr-L-Fp{y@+W({ zkxOnI`I0WvJ-sL(M~dIV_Y=v@VcfC4K3Mr(O!XaP@wu1-rUV3XR?l;$R%P;q> zA}5jh=g>}!n|$UW!p(Z*7*#biTyK+k4%s-LzU*W#~VSkg#?%`SbWp-b@{7u{A znZMqA<>w1RH|}T-b;C&=V|@3KMZKdd`Y?}n6FgnW<2;^vWYfPWAN8gm;okeOb^vP6 z9V`p>T;6#6%Ddy?jkd?+`P92&fz;pu^eaZPdGhn?|8PG)33tHPivoK>$|LP zICkx?OKSPMyRQoc)FIJ3goV_3T6qr&sDFCkGpuar#m0^s8@`ME@qV-V=+*j{+izo4 d^F1sI4q#==eXMBe$BRwZ_m0=b|M!h3@L${R=Vbr@ literal 0 HcmV?d00001 diff --git a/pets/Catch_the_Fries/heart-pixel.bmp b/pets/Catch_the_Fries/heart-pixel.bmp new file mode 100644 index 0000000000000000000000000000000000000000..a491ba7e6527552aa3d173bc8cb6c944236ff583 GIT binary patch literal 1162 zcmZ?r?P6g7gDxOh1H=MQ%*dd?zzmXs%7d5)@SlMJf zGv_b=A!ZmIAl?kgZ7{tc{RlHm_7OHidK0={R5OeY;xLvQ4+DedPE%+cAj>l_us=p~Kak7x5Lqn)gBUcd k1@@upWqXRL7cO!E$a(|Br{N+H#wj568i+yiqW~=g0Ba-O*#H0l literal 0 HcmV?d00001 diff --git a/pets/Catch_the_Fries/main.py b/pets/Catch_the_Fries/main.py new file mode 100644 index 00000000..8272fcf5 --- /dev/null +++ b/pets/Catch_the_Fries/main.py @@ -0,0 +1,161 @@ +import displayio +from blinka_displayio_pygamedisplay import PyGameDisplay +import pygame +import time +import random + +pygame.init() + +display = PyGameDisplay(width=128, height=128) +splash = displayio.Group() +display.show(splash) + +lives = 3 + +beach_background = displayio.OnDiskBitmap("beach-background.bmp") + +bg_sprite = displayio.TileGrid( + beach_background, + pixel_shader=beach_background.pixel_shader +) + +splash.append(bg_sprite) + +seagull_sheet = displayio.OnDiskBitmap("seagull-sheet.bmp") + +tile_width = 32 +tile_height = 27 + +seagull_sprite = displayio.TileGrid( + seagull_sheet, + pixel_shader = seagull_sheet.pixel_shader, + width = 1, + height = 1, + tile_width = tile_width, + tile_height = tile_height, + default_tile = 0, + x = (display.width // 2) - (tile_width // 2), + y = display.height - tile_height - 10 +) + +splash.append(seagull_sprite) + +fries_bitmap = displayio.OnDiskBitmap("fries-pixel.bmp") +fries = [] + +def spawn_fries(): + x_position = random.randint(0, display.width - fries_bitmap.width) + fries_sprite = displayio.TileGrid( + fries_bitmap, + pixel_shader = fries_bitmap.pixel_shader, + width = 1, + height = 1, + tile_width = fries_bitmap.width, + tile_height = fries_bitmap.height, + x = x_position, + y = -32 + ) + fries.append(fries_sprite) + splash.append(fries_sprite) + +spawn_fries() + +heart_bitmap = displayio.OnDiskBitmap("heart-pixel.bmp") +hearts = [] +def update_hearts(): + for heart in hearts: + splash.remove(heart) + hearts.clear() + x_position = 5 + for i in range(lives): + heart_sprite = displayio.TileGrid( + heart_bitmap, + pixel_shader = heart_bitmap.pixel_shader, + width = 1, + height = 1, + tile_width = heart_bitmap.width, + tile_height = heart_bitmap.height, + x = x_position, + y = 10 + ) + x_position += 15 + hearts.append(heart_sprite) + splash.append(heart_sprite) + + +def check_collision(sprite1, sprite2): + return ( + sprite1.x < sprite2.x + 32 and + sprite1.x > sprite2.x - 32 and + sprite1.y < sprite2.y + 32 and + sprite1.y > sprite2.y - 32 + ) + +death = displayio.OnDiskBitmap("restart.bmp") + +def display_game_over(): + global death_hi + death_hi = displayio.TileGrid( + death, + pixel_shader = seagull_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 fry in fries: + splash.remove(fry) + fries.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 fry in fries: + splash.remove(fry) + fries.clear() + splash.remove(death_hi) + lives = 3 + game_over = False + + keys = pygame.key.get_pressed() + update_hearts() + + if game_over == False: + if keys[pygame.K_LEFT]: + seagull_sprite.x -= speed + if keys[pygame.K_RIGHT]: + seagull_sprite.x += speed + if random.random() < 0.05: + spawn_fries() + + for fry in fries: + fry.y += 5 + if fry.y > display.height - 32: + lives -= 1 + splash.remove(fry) + fries.remove(fry) + + if lives == 0: + game_over = True + display_game_over() + elif check_collision(seagull_sprite, fry): + splash.remove(fry) + fries.remove(fry) + + seagull_sprite[0] = frame + frame = (frame + 1) % (seagull_sheet.width // tile_width) + + time.sleep(0.1) \ No newline at end of file diff --git a/pets/Catch_the_Fries/requirements.txt b/pets/Catch_the_Fries/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..677a9d49f4a233f02da0bdfef21ac747e0f3cad2 GIT binary patch literal 1442 zcmbVM(N2Rv5Zq@IKLyf4vHIYH#uuOT4;o6TCDIdts`ca5nO!bmt!Y9UT5@+gJ2N-i z@2?wKNh)ipWhaHS63DHTcyscM^=o`CC6q*__@2nQoMH8_VmYV?uvwFAs6IoA42k*SGlp4qaFDDFt4I5r;YUqht4XQh{~c7(C*BDW=+hh@ zpXp-=JKR++_wq34X&L4eFp*C48R$1X3%c2;w3pqqC?CFth$4!!Z{+_gF7 zE;ZJurZ&$jQC{5Tv@g5Pp=Q7;k0qb1V@;ZIYv9NR=qsR<_$9g}(Dxsvbb%9`$s7(f Y;KP4`;Y9VGFlF?l0JB(8ZO^0r0K=5(m;e9( literal 0 HcmV?d00001 diff --git a/pets/Catch_the_Fries/restart.bmp b/pets/Catch_the_Fries/restart.bmp new file mode 100644 index 0000000000000000000000000000000000000000..a89cee67fb3e2640014e3e4c8d5c1233d95b5996 GIT binary patch literal 6198 zcmd^=F;2r!5JW>wM@2zF$q7;;dg!?l2jFBJh>4#w8tu1#9AOd}EN4ACJ3G7IvXqzC z{rzsZ_KHvXJ?rMiYxtabZ3A4IoN#ss~8?hf>9Pt zNmDt8@ln;FU>Y+n-=D5YXUHt&h~)d&RRj4XPFwKb+n*CD=E02xRO0NyT>VrUzc*w2 z$Nu3VjZ^dta*It8NaKBy7tTgul!c@Pl88((m3B6XK(TdTG(KQO(u_1(Mw-#HL>e2k zWR|je($iu)7`T)si6{40dtR8BaeHB$3bZX*MUWaittlxyWQpG2pa?QWqnP9+al1gS zow&2rD*G>-)mekmT0S0x;leX6nclZ54*JrHKEG8h=}#2CpK>TW(4Hp7DCbh9xaw3) zyT3^e;^_dVlI30aOee8PKtJ`8mU*;GFs;B0z^NT38&fukO%^bhPEHZo?k@)}w>Xvf zSRDUSoeD@_Qab<;6p}`l=2CYtf>g2H-zBWlko^^lrlfdUmOjM|L)ud&Mk!U?QsZ#~ zt^(|jgQGzTObT$9syxxaD+0s=?9fl={Kb2JG=~Alt1u;%O3YDvc($oq00>fMoC2(1 z5?g#2HjEQf_P5Vg!0P*BnDJL%#aa93Rwo-fg5ooGz?3b~NIxfAkzaQTXY_h`cQ9w-{i8K_n6f`txQm5lFs3GsbL(m~n zQ7ry1{xAPcX1(jZT|3F07032?Jm1WCvU`_vx|{e*E2g`~A^_M_+$$?eFj3KRi5q68fFf)6=^zc7JW} zy+3)z(-?Pj5#~+PZ2Aqz!O_u&aFzA$vNpeF?CZ|P-QU`|-PEdq+Wd9D|C;gh?ood= zYOprHX71OWjk~XT|26nzdSi)t@VJzf;P+)r?GxXJ@S) z`}A*$u{OVNOuQSZkI}#5kr8u_yf0dmjm`{!h0T(Du)H`I0mlhyle$ko9yhkD|2cEo zv^=|>il5^vbm8xmpT`{gOR2zquFpC8CHXOyrT9_{*1+>W{~E97#0lNn{2~6b_NIFN zX-;&`dx^5evnn@+E`4R{d??>Or?~cPlhHQv{fx6-_hKW@j-~jXPeWv$zfm??Eht0h zypOSYHV?|w`A|OY+dAfWr z_o>0se4CGF(^~#bNC2+wTb&r)qv`Puk~p6=wGS^gU-_TjT(ITFr<6&M%f^H zZ9XVR=RtqoreFrcix`xt^N1g%{yn?2uOn*-GOa!8z)n{Wx{KI2ug#|)cI**LIC9Zq z9GBt?8iQo8hdgWEFKA_+eWmz)a^02($k~S8L2bU)2z_Bp-WcOt+JcOqYcPg3xbCcd zyM}Sd*p&;X8M{}1T6@fiJ-_O@B%dtA($?B^Ah-Wp2sW~6(6jBy;2Y$;6U*iL zy74`KHGam6_-*Y$h8Fd+@*a-0>W|Im^TCeFnFnHiVZTj>dv^5VvRtlHwv8)GOWuiP zM|+p@N}e4{@x7dM$>d(1E5WPUMcgG`&vd)T}5cbFp^lW%K4ZEFmD<~Zw}XO8;Rpm)9xJEe1# z`N8k(TF@LZHpXvj5Avv=&1v&(Y(C#TYB%-2C&tRya8A$aKIhC+TMfbowb7SP`(5Kz z<_F)iYeRE|*zH>L5%;ngDZebwu7~i|2JXLP4ItKa=cn%5+tYmU?@RBU^Qbp!{lT9p z_-d2>w~f$Ur6UI0*PUl6y!!LrH7R?!dsFfI)>N*)ef8I!-#1UtL$3I)V!hdQ zj=fyn+WcI9H~N>K`K#tcYe46$$5rijomZyLOYyt>+w6~DbDC4$IY!92E_MIp)#7U| eHuGs~tu4R2d+uXxW!#%$w5-znDPp?mHva<|*rRg* literal 0 HcmV?d00001