From 849ec9f4bce0609116486dfe7f028f21fa656c8b Mon Sep 17 00:00:00 2001 From: sageTheDM <info@photofuel.tech> Date: Tue, 25 Feb 2025 11:31:44 +0100 Subject: [PATCH 1/4] cool i borked it even further --- secret/snake/audio/dead.mp3 | Bin 0 -> 12729 bytes secret/snake/audio/down.mp3 | Bin 0 -> 5009 bytes secret/snake/audio/eat.mp3 | Bin 0 -> 4069 bytes secret/snake/audio/left.mp3 | Bin 0 -> 5427 bytes secret/snake/audio/right.mp3 | Bin 0 -> 5425 bytes secret/snake/audio/up.mp3 | Bin 0 -> 5634 bytes secret/snake/game.js | 238 +++++++++++++++++------------------ secret/snake/img/food.png | Bin 0 -> 16210 bytes secret/snake/img/ground.png | Bin 0 -> 34100 bytes 9 files changed, 113 insertions(+), 125 deletions(-) create mode 100644 secret/snake/audio/dead.mp3 create mode 100644 secret/snake/audio/down.mp3 create mode 100644 secret/snake/audio/eat.mp3 create mode 100644 secret/snake/audio/left.mp3 create mode 100644 secret/snake/audio/right.mp3 create mode 100644 secret/snake/audio/up.mp3 create mode 100644 secret/snake/img/food.png create mode 100644 secret/snake/img/ground.png diff --git a/secret/snake/audio/dead.mp3 b/secret/snake/audio/dead.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..414bf651437ba21f8a5557c384b2089ac3e83391 GIT binary patch literal 12729 zcmeI2XHZm6*WmBK00Rs#<RHipB|GG(3^^l7B<GCeq=+!&AV|(4ISL4pL{M@L5=Amd z22oK!CEXqV@AK@t`{mvJuvJ^NwZED>eP^a?ZudE-&*{_M;CYfA@V~&w+1(Lag$#Sq z0DxdCK#qms8dfa)*N9=cdyNJbgKNyO*k9v^CG48SYcjEvT=Ndg&^4d2>|XN&%jGp7 z7VNWhH089Egasrey`ioDZlNfW9iLqbfUI4&<E7xx@xOogf3^hAC$I{Fpn(U60084a z66O~G5N7IR>(=%ZAR($I1cwu$*1YJa{;kb3sIW`ovDMiNnBvYzdwB(lUGk#sk8N52 z7{*w@0$wn~Nq(#WPY2`x<OMSUGJ0zTCPkJHZuMLhpb-+c2v!P$WHBEx084=p6%7<G znZCwSvW=B4XP%d^0hT3!t~4%<&Zalc=+5Tar8;i3>viMn4v*(UI1OEDMG*1-R2(2a zbpRNJ9OyohM7=C7V%3pP{np-uTFsnk*U(mimKM2l#FO#8i0+SZ{q%+3&rGbPakDLf z)H{EJaD1!n?GQ_;bZqxuZ|3yoe6`Oj8Y%oC?S0b$`R_7nyC?=ic!C&XMI@EVhX>qU zh{AtuN@|QLS>$(A?q0}>hg@y6hWKyj@a1;oJ@}sGEdVNkCwiu~SzFQ8XF*>wIZ|3f zY-#TH^|#8Z*hHncGqtw;lJ)j}`P<DnvuDy%hXefM3$TkR*a6bS3YgAoYa;90M*LC; zqKpi)bN*qVbfI*iSYD;4sH7%Lx0F7%7?b*ngo;I#A=(}joUwrSu2!GLd}w0n3EMD4 zFH|+o{U;B`iSH2qbLSz!=;tnutp3$q31wZYi*uyTE4uHy;W|w|4T>fW0-&qNqbmK= zdO=XI_rCjhH2CWQS4N_t7Pvu8lld&mhgk<9b!26o!FLo;I3U$+1psSgWZ%~Sf-CU# zd(m{)%MO11tBTy~G4nsMMU3xA@#$f@`v}L@cc=`YBNVA=mJ~_|4|Z~KG6|w_3s$H~ zC^sz(HDc#K4Yl0W{f)yGu~8v!^TUvnRm9%fXO~coe2L@26BAEksJe;dprAaU01d5n zyJ=1A8BhXguHcKem;*sAMP<uhvL!Y2S`OQxh{}Xxdjy3GIezQY?9iStm27#ut0;e> zKq`s*mwA24JiG|!j>(wkA^;8m`4Y0^+g6p4$YbeMJK}%q^}n0HrOPAj<}7?8W#yB6 zKZ482K|T{^yr)BoqJpr};k;A5|2Edm_1Cj^I-_4xEI^Z3<t<Bk4EN?=aP?KBn?^&r zX5Xu+37<PNy<?m4>fdRO)j_O}Tfk5e-!lub24H;r^dW0$5K6Utw`%r=wMQ8H3jlyN z^vZOPo0Xw=A_w-;;+s;KzLu%1Y>Xin?P|4DcOyfVUIs+wsxJ4~|3>C%BgCYf!5Qx3 zneTrM#?e1{q%W)bDQ=<w;3n1B=@q8)JWjLlm)2~DeA1VL`~H~=5!kNnsp@L5sg^A1 zog!d##OhqcKopF^x>yAXG!Pe+WakoCjnIa{WB_uwGC{93phVW|O+p3}kf5ca()sb@ zYP9asQs`8FpqhvtkB~RHMyyz}o}}M;-Z{&*Tj!4=lfcR1@@qk14??vv2XH~<<?*=e znTLL%Ug-+Wmh*vHfM0}m4uLs%(K;T+=oNyiJXd;?`SUn{CNqMBoZkjio5#xTs0a(+ ziNH9q-V|A%&&r5rCt`W^>yX;lu%6`g#CH%hx=R*)t)tvIBtVXf5fU=W(bEz;2$|Lh zMWGaU$f?coXm2p;up5m=z^%DPBeW`$1~lOYc&zXryDSFNR=x4WKt@$dk(cv0^7LKk zE}SU(c1n1dX139_g0_K(49A57e1XB6YlI<Kk4Isi@7xptaIMF4G)HtoztF2&ygcOY z(dJxBEM3y203z&0VR&6+or%5aQV$djpDv&xA&{xi(q|}tW~rZ&z8m+<HDAtbob#Kw z{~n^cAi(Jr%oyC4scu?InoAemb?yv)Y`(et8+@bYCgLr3k4*BhyTGs?-^RwR?$B># z&NQBwoej^2@BIC(mvXiZO{qTIYOQ3vVaoG{&@MP}8~Lz^#=*?dZy@R8Z>i_J(W`SC zUcME@#afQk@!wmtFa2)>+kcJg{qo0!AiwOz`5QL?AB}<nI2bM+02h!1AQzkh7Kvx- zc|CX3`;Y%I{WI+Qcd?peaDs5KGc^W4=xRj3SXk=g${62r3M1;aCK#gG;NG)5JD1@s z4bl$plRJZ?a4`4aWCSS^Wa>Th$vvs+LxR=|GGsLZQ2Bj!$-N8YtC5^wguw>+w<7Kb zOh$e$6jg4dKi=XxU!`$E8w-9H<F_n-I%2(_#pbQ)Wgl|&*{hQ46M^}XSjWag$y#5T z?*rhCF-~Xjya1~p*kgxTcMmkc&o#{48ACy3o^Aa;9fNcPI6w>ljeecca>b}FZ1lM_ zP;urv$ivxGpCSyP39zFJH#Pxz>Kk(JpMHYi6~93%6|#^)Yn&y_O9kgM4iu`7?o@=? zidZSvWn_~STYW8`PT+BOZwhc|bTAcKUSD!BwvTfXbk{r0Vv<Q`?B;x@7F$u{V#;sO ztv@UEgcc0E`%xz1grqs}_3-xCfx$=cc3zeG8yn}71K$y!%EXsX79Nei4JmxIPHx4v z{=1SvgtS?@cNM{#rN|W54}!B_Y(~4$S_?%uPGL5+ozU+TWXKQ&0A>JLAVWRgd!GTn zitC`=kp-t0HK>kA%R;rcbHfMAdwj`h1m#9!#Fql=ekpfu(c7>M&Dm@MWp2h#!w?JG z88y%QsOS6`8J@~Ne6;>X&s>jpzc=8_Am>OJ?}z8^{Gez!LwrLTiEXhsJ%_&9hBu$p ztxo6o;)N79_}}-WOU+vK<+Rx%?5JK+dmhQc$ImVELC|2vY5wj#F0))}&!hlm2xAw* zs*vgSaK)PN;;kqDk}wFKr)M}u`P;JZ#7Pg9h((d8P2OdQ7{Q==;ntq$y4E5jKmj8a zwzYv+IZ?><{-MJ+#c$IMzn_9Kc00}Na3C3>4Vt*Z>EhwOBPFn$nN@TIDB(R@Te=>q zOPI9pPM;6p{GXWs=R_zsgxs&t^^os)%?D!NjwpdHJEMM5)IE{#9C2&Ukc`~OQ3xcP z$X&l3Ze{jJUbffv;tpjWz2R{P2vW`qs%kw6Vz}+a^S0IQrAOc9y>mko@82ENmuelE zjJ=r(TMe;Z<v8RK3Y{ve7=S`0kI-WCwwub-&hFFQ8j*Qv_E&F;-C8(ydeN&HP;qoX z>>$bezs`1C(7>H)328o-CL$w9E|7;;=L7S)=^_gCR;KN9u@uuKGUe<Our$uO6}7(c z^H5Q7+5YELJjt@1qXUZdHt#$8-V9^(@zCaEQO0rHN!hqxn$<n-TLlLE@18l2d<#{h z%G<xQuj_78THyM^;pfglb^A)F>o&iz^7j0znntqoJagq&itQ;A>hETJaRJ=JvX2^= z4!W@?bJJC)*na=RSvoE(G#r0PS={9H)3E3GfAka(szNLexqb`&P@q&I^%6<~$U7xb zQ~1zuIN$wd@*B4*F;CR_?gR}app_XFtqVU*kqP@MFhM{#;}cFhB7V8No!M&z?E&`% zolMR(6+hDh|M*g>^kT=8Yyjy1*k56XYAL&LrL{|Q--4RKqvUEuT}8Z4(Y{z&TO1Z} zNaz{Ie3Uo{^V;_}9i#_?*Ph+$<+PpFI*t*i37+TWV}A)Gwt7-d^==3?fBoM1K<b57 z@{7B^AMplK>}Rr5dfK9o=j)@Lb~%;<egB9BITXHZJGFJ2li1AvmAWsNRwVnh=x$J{ zYx;6P6#m$+K&sO(B;JTErJT~iXQeEeBVTml5>w}BV>VO*qo@TPp4*V-6h`l>w{bKm znB<sB<b&zppE`iRa2Eiau4if2T;WpC-5dFrRI$a?qz(cJ1E2^>!OCwlUhJNf>j_25 z<$QEP@lv-1E1><M!i+Q#Q19<qb`^+pl&4NVa!n1|1{Bw!y(8qj3y|FI2wxi*ovu%J z!Eh-(cQjGTp&UV0OeevvA`voQzl6ougd*qN2WPI7H(xe!%s(j?KIaMi;I={NHW90w zCGx(>%`AGpp^JoOnmSh4K`ylg@k}wdY9+Jl*#|}o@Vw4$7X!<4FfjB$0xWApmYo0& zYiXvM@fZNu0o>TwhpD49vHsgbMJe#CFAbW45*?VYZ~Pp*9F4c@mLJ76os(`nAI0YG z{4?y!=j}h@f7Nf8sOHY>_OpMZFz$Fb6w8_<G5ciRxxR)}8D%H_I^-_S{T9l-9C;JX zXd<5bhfFW?()H%wp37=hz31n5VYJaZwEtlL=l9P`<23*vc<qFLEmhC!H|AW*n7LID zT(s%SmWFj}I9sU8y+XEIZEJMn|FUCEj~I+{cCSzsjuhA}D3Q~6xtgA+6X8pRox&y5 zevKt}U_Fr4Yc+R$^sGckw4I~(3Ln|sV6ZyZ+TT~Z!%iT1gP;D&?V-3<+`jPJ=}*KL z8Wf)w{r2Zxo=v<Gzj6!teeW<~?=_h12ab8woPQe4zmR?TL-udSRnkSnTzk)`1D@T> ze2Rhc$KZ_YFC}}qm#o$~rXh9!F<Ghvt!{t5@eh1=uc-_)qffr&U~mZ5G{CEdQ`L%? zGKcBs;*Sg@gaixJmw?cCBsB`4g~3dI0>mo<nBVVRD2YASh*1i!QoVCZa>rWx+^k9Z z7Y^_2Pe`d4h2p-=_1~tMNs?&&qA4skbD!q?_Bu~QRv5pfL0k=Mn4}4<SxPJ)|Gwz# z%D0y4{EVsY3}#{KbH5<rk6Z>E5E&KBpKAFRnw~|yZ=mkN(E@Sqp%d}*+f3%?{wwv; z<CH$~J0sa<g0Y9%=^f$cVvotv5Fr<GAUCLTGK;ZyHc+&C@m!-PQgoAbToErXfX-7S z!j|hTorEvpyD0KGb$g4>+T6h9(jT}D4iB`;5{0i_!ZHSr!S2C#`!yIRHicZnPOtJ3 z?GM=>Smk4Q+OZLOukiG1ZWH-U<y-U*=LA`BCiie<q9TrN*x$)IeFS3{AE%of(oWlZ zBCGZEVBpNJNy6I6TsM9^Kk=E_Q#ryJXAz6UAG8&^O@4PP_T-x&X@XRgar<3sITo;m z_IBxl7&J?}Q(-4YY+Dk_0F<+jEVR6Mv9CvK`rTvSV;Ve>zO+1%K0_><XeQ07xurh( z@wJ?8+&H?ZGOmZ5XsRR(lYGOP&O>i)sdAzEE46HD{sKRWNA<X{uk58#($?SO<h{*; zk@1dQ{ls+&^I*D(!%q<^1D3{=)Qd(0$_dP5EOCtD@EkF*5$KFs1cx8Z`bu?ingxHq z%&w$jnuW*<-}>hW=Hio^w)?#OtxiX>Zl+&%rIbyAo0Im+BZ%?L24JeK4$DEY=1kvQ zE1H<6PlUl8aI@o>hmc!Xiz3DCqX<hp6E7|W)XKmcLK;_kraX-#i1mkOOqCpn?nj%c zHo8o0mN_8z2xVYuT7A}k$kiB?^h%<=e;kdfv0W?ZGX`4hX#9km+J${hY8i@#kniO= zeywZbio@_WVih!1)2)`%pgV^9y-YLEj_$MUUdr=)?wu5;X(TVRntf2i4k^fV>nvI7 zi%zzGuk9Ge@Uo|jWeWFInwW=Vn`3iNMd7EEg8UEgZH1c*^JF)FORGOo5}Qxo-bxTB z|5g{r+W(0sO<dv!hxWI+@GsMM!aH*?8XZ?3mcfI7OUo-BB2jsAAVNLQx}U8$o8>VI zu@S_Flz8M#qhkeWA0d^ZcCc_EE)A<n8J1lZmX#{C3S}l({+8SpT;!JNhZ%4>cXD~< zfb{siN?V>&>n!<Y>-p;<xe}Snk5AM#SDH_Mk8z8!cGvRq%`M$dxG*{QX!a2~>GL5I zt5$2k70W;OSYbQKJus~)7$X*~@p~qp05(-Jyp3d_df4Mt>$>%XmZsN9&{}zAWh!oR z$VX6dZe~{mUxtKlIAVl^!kGJu&?>pT%>!sY+w%Hr{;enc)c!bNOn3)~m<6!j7eZ*) zpJLzqbq&`U3O95YX>%fhQa#IpPZ2`m(h>mNYXz+X&;`4>18$Lb+yxAWPyj;Bl5E^m zj^TO_xcXy*Dr%Q%pg;#1nVY40Q!$&=E=xq69UGVsififItWx}JQ+22~5&TKgW|1vP zfYn&eJ84on+fyo5P>2OGY(UOF#R8|uUU1~?DoeOYAz=rEg(7V-F=0F<umqy5f<`(o zDPtRkY6qkI+lq|8L<vp`Ti)D{zY^w}j>HwO<?Wk0g$KT7pJ7;So{(`4lGDwYU41x{ zJ)tK_`fGnOzw!wxj8!<qP~>Cr7)2OAiNu7kfX|PXm6;6jyfh)z1`oB51+G8f)~zax z4t@{*QW$gsosiD!2v7hJP+<%2C4KN42+qj8z&H<YYGsVX&at&!Z2|Oh40JE=<t6^k z4I5%o{c%G~BU@b|$Netjk_Cg&L&g{~hTfs<G+eq*9$7X|qd3sGsFCTV0o~EvM>0X{ zi06EmPidocql2*qpFir1#ws#ysy3SG-{GQ>6SPXwp~v7e$gL;P;Ao<i`!yYGFl(Fo zyhH*JyI!17&%qcU!4wD`jLV1}hYCFJw41;Xq~4qS=7R<p&_p4f5a_K!**mSv7{CV* zZUF!Zt3BnrVu}>DN@Y+aJ}C@GfCVj)M2Dnv>Sffi`cgAkU{rv36x7=fgd+iteFzK@ z83rt4(CSXrQVw*3YJiiO^{r<`)`grBbn^IdWjaK*ML38J4#L}=FvU?d{dF@T1ez#R zSdEZ7ITSbZ1qIFL88{=I9rA-UUKvV)M+nV$9t|g?N+!g|y^_tlc?X;AeeVORze@*j z)7g}S-kKN9y}3(`lZ#zPz~)T<5rFZ4kXIlmFMA!jz<Ch7R0n7Z+0$axmA}3*eOjxJ zsnj%Ml#rw9<izz)kFO3Du2_;Bf2d22A(oS4DT9_7abz_n+16oT!M2@iB07F)w2aHJ zWyCBM(_{^9n0*8-)ucopViL-=?h}W{ueuf|Wtq&NT9RC*WAiaaLp|BPr%`c(vFtfg z4Hm1bY)25mgBV0WFpETKd`kGvl|m>WQkN}`7(x1K9!6JUBqw}27!}2i4>!!<V<QZv z)nznMC`;i<-mrEGT&7IdYf77~HdQG!(CarEe^pM*lUSzF-DGIiI$%(xL}~g8=^jJ1 z@!FpLAuA$@pPX1Op>~U;(}TFEtQJ?YekE8cqMA}OLyyyf8BC3Q$$SA``~ty0cjgWs zTZU}DsZa^IGMg3(vNi0`%e2>#V8&o&DA5T3H{d|pw*c_eeCS$;$}_jXDLKwmHkUS9 zHw{i7kCq)l9;FI5FAO=GzX$0Ug&QtY1kE$HmqNyQ(P^{<5b_&zF*wh&CQM9Y2t^X` z1vpwo_VwU|^iYayO==uCuNquJE-J=MPtMpy01lO>C^I14W`A{SJqjtQvu|ihu0vC@ zIx=@qwbA0AOE8$XtJ##;HO8MP_mQue<?*?B?BJZk+5mS8#+2u8I8(XxUW~>~*nM6x z-Oq~({z5s~*o>>r?hl4g#&*)(2Z_UE#l+N!`<x{-TdTDl1L03C2a!{NW5)8%ilzRW zJKCeI0=*7|A#ACFA6oXCmTc;!c;>(V>U)Py>^;>R)?_8QyUf&VPB-x8MG-bUd}+)A zck)BtgXbA#0TowkyuUeF#>W<;-Fqw-)O?!<tlLiQ?stF^0C0-HF3GH87|A05fC#Vx zPH?h*(zP$s{|Sm}1HrlD{Ii?&&jrQFib#hlqr(XR@7_N|u+PTi>k}nrOfNbduSH+C zWeJ|`!|+!J>b*S|N`>0WPN(nJ5^wudw0?kc_UO^T9N1~H6ahE3m@d^}4SmWRz<42t zZv0jh!jg_X-f7b~4n~KpPfO2%Lb9LH8+F0ZW=winNk2qNx?!3kGhI_8&>?F>MjRpu z9BXuuqBTb2qE7)2heAgH6+_s{=;~1bV;tyGh)GG~!^h(n`1?3KPELXE=>DhC^fE7L z{q-P}K_^-+42O=3Za4OcA^XOgJ+$_WthYtdIL}-AYLcXel$C}ORxRp>9;HbcH<(-z zzRfE4G$Ri+-Z!oe8olDytu|0&S~>QPrik?RYKfPdBK$o2)<yewc`>W2i_yf5KlU!I zsPZxOIa67=e)U?5q7&(#wVgBfzUh<0SHT%+4K=u0rDcmtu;p{AmZKn69cpNf#2j7J z+5%Yp!IB?isrLL@kpG>_%#gpH1b?uG4&V;zpw<8`7)FOwo`=WxOO4odt-mt|$vT89 z$+U_-gbI%Q$;C-pS=^Q?KU23tzSMYND_kbS803YjSc*0qJa`C1Z}%`TbzWQCBtR75 zi?ui_0L>AYFsxWWWu0$*8I3`D0~{ULXjiQj{yc-|YvWp|Xqt`j_?Oxk3XvkdLv6<D zSCPac!ZJ_kH`=<&3eLKg{T|$Ql#<W5dH#@J^Gx82JMWN<?(5Ut=7g+IZB^UJ2S(yA z#r)jdGe7zN{6OPeDQG(O1l$-)Bzl8dsJBua&+lzIxkpU(WbHtFc4rO*5A$;tLsrFB zuX}glagY1;3)6EC<MvZDc3DkCBIFeUvhBBuIsW`t<wP*wMXL=wDH|ERPx!#WxnwbM zRp8cyNPRbJ0m^Du>!wIudR5iLOT~*IdauB5>Q;^xVH}Rh5*bv!yG7CvIDOXWIiYom z;;d*Xxl*X2WLtUz&iv5qC%DOIXS==gQ=zTJbPjH=jDUURJtq}?8@;Qn#)~(DD5Grp zA$$ArjL&0)f?<)X&xA}w6DWPk>$Jvt6UoWAlIqRPcjB4sbUo`MK{?!K7y{hO4`&zv zRQXx-*!%Qxa66p$+%=u{BURDiIq)kz_<+?#+BUPKvI>6?`J<8C0MWOm+rrL&3u4JT zlfU?_qxfhbZ(MWlD}z?*`rhPTS`Rl)qVE0CcUv9@Q;gJK4)|~JJlB4sILYOv#F?5r z*3{6#ei*OuL_I*b%z;8dahWJ6sAR@hE$y91&Ii^(et#utMIpG~?NN`u0s6=<?kf8H zaI+?SkRi(mfT96t=$`@zXx9NI$%5dd#pBmt%e5;0;VcyFsp4-dapqi1v4|pol#(F% zs5<L48Le1tp6%YJHcpYuZ`w|4b21Fwm(snX*M4$>D3y6fuXa7Z`iOzfJ3eqF<bTA> z8|wxo_)YGXZduJ<znjXxErXzq@T33P^nji}E8X$V_;Ti#{-r^qMtDPRO~||1vO6Vy z_qE*?EE$UZ8V^iw@SD#M=8rT;n_1H8n~zu!tyX_(a%uXN_c*tWlDuK{z2xDJw&C2% zvP+Ik#!q`st-rg?_iHz2p6!eq-pyVVnU5=gPym#|S9Ab=fx@t~?c;!vY4C62KYjeM zOU+N?AU;{I+@AmOdvosoV~BN~2%VR4`n?!-0wPVP_|YzmrV5n7yWT;_&IWDWAH|CA zyyFlj=E`6bk-10b&F%zO<dT@7(R{N~sM~wA!Tph;+K}eOjKyGa@D+)oBY@9BMY$!F zsUT@{7>65vldHmNkF$Qx7U6cwV!M?vb-J&VZ28eo3HHGI8B5KOPNAW>4~!+D8wf_- zSZ&>VvP2X^BP-?8UD}y;Zke6%Fn+rD##2b7jQ5=VjCX9{QxX5*eY>TZn%9#T=35V` zLd-)OD@rUDCsiE68Mu9XGlsK^;W3SpZ<p@ZqWW7H(hS2k^sZgPXAB;$!>2=g3=t!m zzM}wuuvR9hT?e6!^2*<W6tHi>TOjy~Y3KHP>Pn9*dT@W7@<dcL-XiMso^A+Mc47eT zEx<~C??JzrC|9IN2FH0)ds|BltY5vlHEQv6%)~h|jPm?=8jhwwGJk9BP0|StiwlbG zD5wEuH{^sN=#|{BdHB9@%G-`@SEc3EbxK-9u;8*w2iJR2Zi-!FflQVruCvPR>!F(l zz6an6d0U-%X$SVf@3_Yf--+9$&fjhGD66Ejf6#NMQ$IhCk{361^h+vfX1FCfTq-7< z#voigG4<9?s!w6649>bu=U`acm`!`n^yglj#(oNvUpy1r@Y<>u>R0lQ$!sA`twl^< zK@tEfm)napATo1;lTmRpz!=*`t%XtXu-+k2CQqxB7`-mMd3uHjo00@VHvCR1Dmtou zCZZg^3L|a<q$e9(l9jw`+H7q%k|gPm8jKo}hj8ePM8pdTZFXVgAkPBxY&t&++K~%J z;l>h@5J<uqi~*-8RbwAI#fr!NC0rsnLq;2r2Mh8oa%ktNgve@gnwto_e%xp%IS(WN zKfI~}`e+UJt{*fqDcG_Bimae6fAwT{92IQS=y748oUVR}<NTp+zo?hmSVS68SDg5B zB1zgwxx(&s&#ybC`K(c{diUqR*%q5x`a3^ldOz}m551dZfBF2_3Utl#2x^@l#me_T z`Mvs|_t@a$FJ~~Xdqymj4gQ)pRRlgz&6?_RPwG?5m*oT|@Y~EfBrLDWQQ8}ns}7PE z%u*Cz1Zq*jEK#(!RNaE$`I_AVKs*wz{Vf0ubZYLsAC&>vlk?<SN3j-H!V@BlR81R* z9&9E46u^q8)T^g`u|q6Zm9GAZLy0g|aH{6EhqnB#0adLsAQ<cEUFtdAAWAeaPN>sH zYuxdOw#Xq^5+u~@uKYVncVw9v&@=LD(vgox#s2o`z{r8T&1v9v;_Qq2PhKBY)&A@) z0l##}ip-sUs>!?FrMWx%=}PurJ?)vmocWQ$23}1!oScg~Ge8V%L;t>mmzi1I2+FdO zdz2!>cuypyeM40t2RS-Qgi6wB+m5=4*VpfW&iYe@Pi>SCj+-U8jN%sP-nHJ^6oca- zJSZB_{SAHbLndu3vPh8}fxWt_#z<O0@`s0Ac}<x{D_m3Lr4UkFRZaR3EkGv=#YZ^c zb{th&iL9q7MDVP45|O63N{r%>&U}457r=CS1Ms9$3r5rfLs^YX5rU8C7t&hq{fyUO zy$3BKSsIzAv{c%3`X+Q7FDORN<v8iTL18y>P8#(xdr&A)AJ8+1THT)#H=zq&Y>XoE z*jvs~Wn~{K^eXE@EjLVG-T;>Z-W4=xfx-@RcURh8`aMaM4O*4_tEm@oEg}CWAa;^Y z`WcEA$Jyl#@3d$s@-V97_@n0|^X4O`mMb6X4jC7-Aye2YMx4@)3388I9+|4AFTY7R z8Xj3@zUu!Ry+(`dya5j_Y>@sFw)q#h_4$KFfrXer4jA(8J$B)GbG}u7zxb@<FQxj6 z!9|K{TrkbacENxu0K5XhWE|XB#cnV2+A{B<og>UaXo^CV_|2?d0sr=+J_URn@;YJi zuu&r#DM_ORVp~F7H5`06AP|m27=x=(LV-)i&oWRMm6KjPHK~GkI|bU#x6AZNwM;+} z-bVbq<Lis(Ip`e1-01QKJ%ifeJ>QwJ^Cao*J?9Tbb~8z#%GA_Pi`|cv@)}~i>f4fd zJ@uR{l9kq!RF2;MgqKBj3Jv}O+$<&9X4()h59{sE#)YR{p)yJO9Skw^_NQCN$E$Y_ z2a78GTXl13wDVMtJL+D9t~%~Zll|0%cNgjMnJ*so?-(z9rOesU_8-k5=hRAb^R#%c z<t|8{HvmenhVb`GCm!4e2cGO;Rqzjg|5g4+ao+Pke!S}M@}vQh2>a|(ruzR}6hP>p zz0*XRrXtgE4#n@%1L=tltFk)LgB8xL@0m9)R%zxCTUsF&kunkubND>=;{W_tMW_;U zU%{ujL9hUVMi&4mng@ir@DzX)(IbS3SmD!0B}7x=n~@Umz!}Me3LbTZ+R_u@5-8OG z1YL!b1qckEri`E}O7Ug|RjAj<TWZ4FI=;<Ym)b>N$e{&M*IE8HhR`Nl=bH}_(284- z?TP`IlCfF-C<Zty<qp8{#grl^;lJS1<m6?-5-Bo#cAGY@*kKH%M)sT8!$-EwhW2jW zO3clwrd!NfGbrsw`6RWxM?EK`Z=&or#hkqAG<Gr#Nbdi2|JF`(q-s-l(M?()`eK+> zSG?IdR18+t7woov7Uod!yGUHgg;8JQDAOVCMzU;ug6tdGZ#lwG=<qMqh@~+msr7-s zzxBzeKiB_Y4+ik8E`n#+{0V!2M-c!}H~<P4J1Ta*JT?0rZt$qT>7Nr%*gPKuUtigB z-m7*m>5rz!y3IhI9v6lE@&r6{$U_El@W6W&x)+Z37>mO(LZj_WV#D#BTWq&^NZ?X} z-C2_`eQoBkuZgHmD;*hI%%1{a=1Z{}87=|g3@Z^Gl_pD<fK?a=cQ_O!Le)EgfD#cW zo9u@YOu(~v8(RiZgfPno#sdznD@m$P+J`dCIwg`MxRO{gLs=~gZ0yl5A|%Bh{LK_u zR3$KX(P>-Bu=^>bY)#T&&Y9w?si(msj8BwPN2S>G>aP6wn$(fQM`47)>%O;3@6$+d zUd;URF-ht^FxF;YZoHYHWn9Br=E$E<%y?zga`Ams!uxSZccH%U#b1M`mkEw|lBnVC z4seSCd)BNAO<G6<aIInU8?U}#`p~0Ko%Wi-CjdKF@jvF)0sd7CDX+q9xC;JY*pc_z z_&5O29-^hOVR%?;Ralry5#>ore_ui;NGLaGcqolB+Y@CgxSpulFJ?iP#{;3y+7z&- zz0rU_ot^X+&1fVsS*XxQJUTK(&8Y@?L>Qil<YUU=jzQ5!-pp7-0#<G!5(<PWV*5~{ zG#&`IlF$lWoh>>J%9s9agn=Q8+xNgbbiPT*wR+dSp+Z=+&@xHmH+gZ1omPUTAwK>r zL%KNaJ_l`q{c~ZyXKU*nS{!k!<>k>^ge9w@G1sR39Yc_)J$}7_#l1%Oy%WGNSIWw@ zjsZA?w{}6IH^4I}2HA3Cjf~c<8Dbn*6gNa~e87rfNftab$}Jl954gW2^-Of{bAzh} zY5U0&(JTF5#mgXA4(=kMI9^16wFok<0Y6pnkGjuH_gX-sh{SG^lS@oa!4Fv4K<!5Q zLpz_2XC)BE;hO`dj4Ec2nGddHxA*qb8E=Jz)J@Fx_wNa57Zf=TL3^In=OW+s9@Sg( z&CXsA{Dv#`fFwI_q1LyDvJN&d{}@)C3lX+-F!SC=c*rui3!dHAe)|4Q{blN+AGpYX z#^ufMp(S8TH26i5V5^c<Y#1MIKZYScBT>@)sxW4QCb>a3YRLnM%#N|^itMV4?G?=F ztxt>cioQ|d;N~?e0Ohhuj3N-i3x$kY)rBe>k>}H#QHcu{;KFc1!=7iYZ$pLH>3Yyk zR>)3_oSp-kH>+qkX_Odd5L2Y37)nR(vu-V~JRu2mc@vQi>HAr$Vt|N91-8K?3M*#> zKIvB;1sc3(I5BMT)=DsW0%07IKpg`dglZ=s={vPvmnF!Nsv}Rqm4c$TudK@BCD~4g z3v$XwASmBW+$a`_+OD*$61VZs3vQ+fv3}cOe7}ijfd6t}f0n(7<s%4=WcO~;c3iD) zfv>?!>s74yE<L_^cZ7f;;91QHNF)oc$YQ_zPip`37JE18Mvq>bPo`&puH1d71;GH2 z3}-ok4mJjF8?)H26yE-nh3>Bz<(lIw2CHWX5VEMvP&gb7>ycrB8N&{Y!eNvodPe%V zhN)_>T`^sC0+~EAAWc)@%#d;F=x9hFCy_Pfb}}a)d>z6?$|hJ@xzC`uPQsXcDvay- za#D~PH*rt$F$hjwl@<;0^*3_Lf?&=f2(B@Mmn7f;#^r-w4b^LB-_yenZxpIRaRYB) z507-(T>?ag;ab--xm<O^kbzME*_W--irsiB1ROvB2TdMIkTcl@eD>yUp}ZlO&Ehmz z7!}KaJ)A`~ohqls39wqQyo2PR^u{w{DNR(9fk+Ri9D!0QxA)eg*$t9MGe+$dRdt$= zwF)!u*l@X;mU`;DiJIu_PU8utmN7gosu^2y70OmJvK1Be%+_QgviRs)yQ5)oM*A&! zF1p}%@}8s6&bBa5aX`7v(cq|w*JN6^gU9ITWYZu`6Scay@-hEhsv;;=S3z^*>H66t z9_h1^5RM0P{N*1a|8yAMY#g&5<l!ag@^mnZP+D_(ebst$5*6?h{CIo0<I3LjMm}~L zbfUC6LSVvj^ZO-92e=6S#$fk!uKgNzpA`oKSV1o4uscfN#lALH#U0q|qR6N$B;K0D zMJ2m3)84cNbemul2rYhr@j)&TvpaBmMxY!Ex`Z3?ZwK7p@kA#{*jYV@*w)IIKb{mQ z+RS!$j!3u8h%wMCLnRE7Qxw^0=Jcs|wY%pIe=g2<F%8^w&{c5gPStJZtUMOH>vt3; z`w_JKsb!e_&gidB&drC)E#0D~d>*rvTq_=zH;glH%N#!gK@ad!S@5J|__~45wTZd_ zfDf@9FWU(Kq$RKBHG|IYVSUm2_aP@C*b3k|_C?s)aeaF>x$jWMYU=U3`S=bi5W2?l zx+kueGc_Zo`C;0deY;Pyad(KFDY#8nK(Qm(i?=QV>y95;W12!slqBL()w*8Yns_|r zTyXBN&{385{-^8TqGvR4eD^E^TMGOgis`)<jV2nB=W3@bc17K+cPwwqe=QMgpsGeL ztC6Oe8Jbh2KkfU(@;5g-V(HJ^1DCj%C`~}$DC)Z;+PW8qj`DH9pz9MOxdRR1(}MuX zi*VKt;|=+LQo)uwY|DS9t7OMz`@6L)s`Un_rm|A%NbOMKm6UZ47}1bkuUm`*&<)22 zpfwW4y-T0C_5wnFl4t&vu3@(da_g7{fX0v(k(a$$2whyeNr)Q(TNjl3^Uy60w(iBE zLdDi8;^fo4BQYQoCICaq@Cx-DSpy1UZ+Q9|%b9Ub`H9>LhUvzXS9p$$T8rH5PDy7r zSZcgqg}$cU>I<YVJ<_-QHTP<HxPzDZ$hOv{!Y_eZ^bQ_-&P8^VhqBV^B~1k=8_{qD zcW?$WH<^}zyL@cOSikY=a2bZIL(1?(jCwKT&F1tsJok^i4K}ycd)&H8to_O(U%?ZG zWDW89F=2p&<K8tCkENuxlg#}7%UlR23r}5sZFPMNy<R7XLO!^F*Z)8jV?=al2ryHu ze{iA!hz%|d`i~ePE)JBC8W*5~|MZ02g!C&OH+_-f94;IpGV05VY3XrfwT{6&f<U4r z?y-v)bM#Qj-p&}3_YI|qDH_#ME769x{Ir^J7}A>zdMDYt@NB^EQ{u(nWY4GYy|)Lq z2-tJ{-l(hgQQZfB?tOvxg)MNfPYZf?RXL_9Q=7_;gIDzhF0dqLDCT<IVibV(IDWdc z28e`g-h~vVLFih|<^I0IflTrohoDwFRSBaDu@(%V>hV}x&LA6OV^bjGJ52wC#uY@- zL{R=$C=YSnx{QteCtr<c@KH70gpG6sy5PH29T5noD5@v%$#H2zGnt#Q=zD{l_O={s z?4wTLHpx785D4m(l`lJXVEsJL%dka35G?)onRWr;`~L<1d$s<HKluMY{oj%Rc#g1J kPW%A?&e%;n7yytU*RCi2kP@tgApt-HgZ2CWC))Pk0PMaCRsaA1 literal 0 HcmV?d00001 diff --git a/secret/snake/audio/down.mp3 b/secret/snake/audio/down.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..03533a07a0c29258ed8b10aa3a8f17efb814d789 GIT binary patch literal 5009 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 literal 0 HcmV?d00001 diff --git a/secret/snake/audio/eat.mp3 b/secret/snake/audio/eat.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..076198c984e25182a72a16c90a441384805f1778 GIT binary patch literal 4069 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 literal 0 HcmV?d00001 diff --git a/secret/snake/audio/left.mp3 b/secret/snake/audio/left.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..4d3d245db41598060de9f0f77e72bd4d976cec51 GIT binary patch literal 5427 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 T08&ErJ_-Qjs8ZPfhYtS*#tG>^ literal 0 HcmV?d00001 diff --git a/secret/snake/audio/right.mp3 b/secret/snake/audio/right.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..64408eaa963e4def7a004e500ca9af7b970ea244 GIT binary patch literal 5425 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 I{wo6g3mh;G9{>OV literal 0 HcmV?d00001 diff --git a/secret/snake/audio/up.mp3 b/secret/snake/audio/up.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..97cfbe99060083f737e28047deef99d173626e9a GIT binary patch literal 5634 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 NS65}2^*>_Ie*hwcSeF0* literal 0 HcmV?d00001 diff --git a/secret/snake/game.js b/secret/snake/game.js index 08d50d5..1dc78c9 100644 --- a/secret/snake/game.js +++ b/secret/snake/game.js @@ -1,150 +1,138 @@ "use strict"; -const upButton = document.getElementById("up"); -const downButton = document.getElementById("down"); -const leftButton = document.getElementById("left"); -const rightButton = document.getElementById("right"); -const startButton = document.getElementById("start"); -const grid = document.createElement("div"); -grid.id = "grid"; -document.querySelector(".game").appendChild(grid); +document.addEventListener("DOMContentLoaded", () => { + class SnakeGame { + constructor() { + this.cvs = document.getElementById("game"); + this.ctx = this.cvs.getContext("2d"); + this.startBtn = document.getElementById("start"); + this.description = document.getElementById("description"); + this.box = 32; -let snake = [{ x: 5, y: 5 }]; -let apple = { x: 8, y: 5 }; -let direction = { x: 0, y: 0 }; -let gameInterval = null; -let isGameRunning = false; -const gridSize = 10; + this.ground = new Image(); + this.ground.src = "img/ground.png"; -function initGame() { - grid.style.display = "grid"; - grid.style.gridTemplateColumns = `repeat(${gridSize}, 1fr)`; - grid.style.gridTemplateRows = `repeat(${gridSize}, 1fr)`; - grid.style.width = "350px"; - grid.style.height = "350px"; - document.getElementById("title").style.display = "none"; - document.getElementById("description").style.display = "none"; + this.foodImg = new Image(); + this.foodImg.src = "img/food.png"; - isGameRunning = true; - snake = [{ x: 5, y: 5 }]; - apple = spawnApple(); - direction = { x: 0, y: 0 }; + this.sounds = { + dead: new Audio("audio/dead.mp3"), + eat: new Audio("audio/eat.mp3"), + up: new Audio("audio/up.mp3"), + right: new Audio("audio/right.mp3"), + left: new Audio("audio/left.mp3"), + down: new Audio("audio/down.mp3"), + }; - clearInterval(gameInterval); - gameInterval = setInterval(gameLoop, 200); - render(); -} + this.snake = [{ x: 9 * this.box, y: 10 * this.box }]; + this.food = this.getRandomFoodPosition(); + this.score = 0; + this.direction = null; + this.game = null; -function spawnApple() { - let newApple; - do { - newApple = { - x: Math.floor(Math.random() * gridSize), - y: Math.floor(Math.random() * gridSize), - }; - } while ( - snake.some( - (segment) => segment.x === newApple.x && segment.y === newApple.y - ) - ); - return newApple; -} + document.addEventListener("keydown", (event) => + this.handleKeyPress(event) + ); + this.initControls(); + this.startBtn.addEventListener("click", () => this.startGame()); + } -function updateSnake() { - const newHead = { - x: snake[0].x + direction.x, - y: snake[0].y + direction.y, - }; + getRandomFoodPosition() { + return { + x: Math.floor(Math.random() * 17 + 1) * this.box, + y: Math.floor(Math.random() * 15 + 3) * this.box, + }; + } - if (newHead.x < 0) newHead.x = gridSize - 1; - if (newHead.y < 0) newHead.y = gridSize - 1; - if (newHead.x >= gridSize) newHead.x = 0; - if (newHead.y >= gridSize) newHead.y = 0; + handleKeyPress(event) { + const key = event.key.toLowerCase(); + if ((key === "arrowleft" || key === "a") && this.direction !== "RIGHT") + this.changeDirection("LEFT"); + if ((key === "arrowup" || key === "w") && this.direction !== "DOWN") + this.changeDirection("UP"); + if ((key === "arrowright" || key === "d") && this.direction !== "LEFT") + this.changeDirection("RIGHT"); + if ((key === "arrowdown" || key === "s") && this.direction !== "UP") + this.changeDirection("DOWN"); + } - if ( - snake.some((segment) => segment.x === newHead.x && segment.y === newHead.y) - ) { - gameOver(); - return; - } + initControls() { + document + .getElementById("up") + .addEventListener("click", () => this.changeDirection("UP")); + document + .getElementById("down") + .addEventListener("click", () => this.changeDirection("DOWN")); + document + .getElementById("left") + .addEventListener("click", () => this.changeDirection("LEFT")); + document + .getElementById("right") + .addEventListener("click", () => this.changeDirection("RIGHT")); + } - snake.unshift(newHead); + changeDirection(newDirection) { + this.direction = newDirection; + this.sounds[newDirection.toLowerCase()].play(); + } - if (newHead.x === apple.x && newHead.y === apple.y) { - apple = spawnApple(); - } else { - snake.pop(); - } -} + collision(head, array) { + return array.some( + (segment) => segment.x === head.x && segment.y === head.y + ); + } -function render() { - grid.innerHTML = ""; + draw() { + this.ctx.drawImage(this.ground, 0, 0); - for (let y = 0; y < gridSize; y++) { - for (let x = 0; x < gridSize; x++) { - const cell = document.createElement("div"); - cell.classList.add("cell"); + this.snake.forEach((segment, index) => { + this.ctx.fillStyle = index === 0 ? "green" : "white"; + this.ctx.fillRect(segment.x, segment.y, this.box, this.box); + this.ctx.strokeStyle = "red"; + this.ctx.strokeRect(segment.x, segment.y, this.box, this.box); + }); - if ((x + y) % 2 === 0) { - cell.classList.add("light-green"); + this.ctx.drawImage(this.foodImg, this.food.x, this.food.y); + + let snakeX = this.snake[0].x; + let snakeY = this.snake[0].y; + + if (this.direction === "LEFT") snakeX -= this.box; + if (this.direction === "UP") snakeY -= this.box; + if (this.direction === "RIGHT") snakeX += this.box; + if (this.direction === "DOWN") snakeY += this.box; + + if (snakeX === this.food.x && snakeY === this.food.y) { + this.score++; + this.sounds.eat.play(); + this.food = this.getRandomFoodPosition(); } else { - cell.classList.add("dark-green"); + this.snake.pop(); } - if (snake.some((segment) => segment.x === x && segment.y === y)) { - cell.classList.add("snake"); + let newHead = { x: snakeX, y: snakeY }; + if ( + snakeX < this.box || + snakeX > 17 * this.box || + snakeY < 3 * this.box || + snakeY > 17 * this.box || + this.collision(newHead, this.snake) + ) { + clearInterval(this.game); + this.sounds.dead.play(); } - if (apple.x === x && apple.y === y) { - cell.classList.add("apple"); - } + this.snake.unshift(newHead); + this.ctx.fillStyle = "white"; + this.ctx.font = "45px Changa one"; + this.ctx.fillText(this.score, 2 * this.box, 1.6 * this.box); + } - grid.appendChild(cell); + startGame() { + this.description.style.display = "none"; + this.game = setInterval(() => this.draw(), 100); } } -} -function gameLoop() { - if (!isGameRunning) return; - updateSnake(); - render(); -} - -function gameOver() { - alert("Game Over!"); - clearInterval(gameInterval); - isGameRunning = false; -} - -function handleDirectionInput(key) { - switch (key) { - case "ArrowUp": - case "w": - if (direction.y === 0) direction = { x: 0, y: -1 }; - break; - case "ArrowDown": - case "s": - if (direction.y === 0) direction = { x: 0, y: 1 }; - break; - case "ArrowLeft": - case "a": - if (direction.x === 0) direction = { x: -1, y: 0 }; - break; - case "ArrowRight": - case "d": - if (direction.x === 0) direction = { x: 1, y: 0 }; - break; - } -} - -upButton.addEventListener("click", () => handleDirectionInput("ArrowUp")); -downButton.addEventListener("click", () => handleDirectionInput("ArrowDown")); -leftButton.addEventListener("click", () => handleDirectionInput("ArrowLeft")); -rightButton.addEventListener("click", () => handleDirectionInput("ArrowRight")); -startButton.addEventListener("click", () => { - if (!isGameRunning) initGame(); -}); - -document.addEventListener("keydown", (event) => { - handleDirectionInput(event.key); + new SnakeGame(); }); diff --git a/secret/snake/img/food.png b/secret/snake/img/food.png new file mode 100644 index 0000000000000000000000000000000000000000..921fe782aaa3987ea2edf8d4eef2f8dbf53265a2 GIT binary patch literal 16210 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 literal 0 HcmV?d00001 diff --git a/secret/snake/img/ground.png b/secret/snake/img/ground.png new file mode 100644 index 0000000000000000000000000000000000000000..218b19095eb37c9aba704095563dea5abeff7661 GIT binary patch literal 34100 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 literal 0 HcmV?d00001 -- 2.39.5 From c6d1a47097295b91f9590a20ca2df10d9fd66537 Mon Sep 17 00:00:00 2001 From: sageTheDM <info@photofuel.tech> Date: Tue, 25 Feb 2025 11:32:25 +0100 Subject: [PATCH 2/4] nice I can't make it work --- secret/snake/game.js | 237 ++++++++++++++++++++----------------------- 1 file changed, 111 insertions(+), 126 deletions(-) diff --git a/secret/snake/game.js b/secret/snake/game.js index 1dc78c9..22cf87f 100644 --- a/secret/snake/game.js +++ b/secret/snake/game.js @@ -1,138 +1,123 @@ "use strict"; document.addEventListener("DOMContentLoaded", () => { - class SnakeGame { - constructor() { - this.cvs = document.getElementById("game"); - this.ctx = this.cvs.getContext("2d"); - this.startBtn = document.getElementById("start"); - this.description = document.getElementById("description"); - this.box = 32; + const cvs = document.getElementById("game"); + const ctx = cvs.getContext("2d"); + const startBtn = document.getElementById("start"); + const description = document.getElementById("description"); + const box = 32; - this.ground = new Image(); - this.ground.src = "img/ground.png"; + const ground = new Image(); + ground.src = "img/ground.png"; - this.foodImg = new Image(); - this.foodImg.src = "img/food.png"; + const foodImg = new Image(); + foodImg.src = "img/food.png"; - this.sounds = { - dead: new Audio("audio/dead.mp3"), - eat: new Audio("audio/eat.mp3"), - up: new Audio("audio/up.mp3"), - right: new Audio("audio/right.mp3"), - left: new Audio("audio/left.mp3"), - down: new Audio("audio/down.mp3"), - }; + let dead = new Audio("audio/dead.mp3"); + let eat = new Audio("audio/eat.mp3"); + let up = new Audio("audio/up.mp3"); + let right = new Audio("audio/right.mp3"); + let left = new Audio("audio/left.mp3"); + let down = new Audio("audio/down.mp3"); - this.snake = [{ x: 9 * this.box, y: 10 * this.box }]; - this.food = this.getRandomFoodPosition(); - this.score = 0; - this.direction = null; - this.game = null; + let snake = [{ x: 9 * box, y: 10 * box }]; + let food = { + x: Math.floor(Math.random() * 17 + 1) * box, + y: Math.floor(Math.random() * 15 + 3) * box, + }; + let score = 0; + let d; + let game; - document.addEventListener("keydown", (event) => - this.handleKeyPress(event) - ); - this.initControls(); - this.startBtn.addEventListener("click", () => this.startGame()); - } + document.addEventListener("keydown", direction); + document + .getElementById("up") + .addEventListener("click", () => changeDirection("UP")); + document + .getElementById("down") + .addEventListener("click", () => changeDirection("DOWN")); + document + .getElementById("left") + .addEventListener("click", () => changeDirection("LEFT")); + document + .getElementById("right") + .addEventListener("click", () => changeDirection("RIGHT")); + startBtn.addEventListener("click", startGame); - getRandomFoodPosition() { - return { - x: Math.floor(Math.random() * 17 + 1) * this.box, - y: Math.floor(Math.random() * 15 + 3) * this.box, - }; - } - - handleKeyPress(event) { - const key = event.key.toLowerCase(); - if ((key === "arrowleft" || key === "a") && this.direction !== "RIGHT") - this.changeDirection("LEFT"); - if ((key === "arrowup" || key === "w") && this.direction !== "DOWN") - this.changeDirection("UP"); - if ((key === "arrowright" || key === "d") && this.direction !== "LEFT") - this.changeDirection("RIGHT"); - if ((key === "arrowdown" || key === "s") && this.direction !== "UP") - this.changeDirection("DOWN"); - } - - initControls() { - document - .getElementById("up") - .addEventListener("click", () => this.changeDirection("UP")); - document - .getElementById("down") - .addEventListener("click", () => this.changeDirection("DOWN")); - document - .getElementById("left") - .addEventListener("click", () => this.changeDirection("LEFT")); - document - .getElementById("right") - .addEventListener("click", () => this.changeDirection("RIGHT")); - } - - changeDirection(newDirection) { - this.direction = newDirection; - this.sounds[newDirection.toLowerCase()].play(); - } - - collision(head, array) { - return array.some( - (segment) => segment.x === head.x && segment.y === head.y - ); - } - - draw() { - this.ctx.drawImage(this.ground, 0, 0); - - this.snake.forEach((segment, index) => { - this.ctx.fillStyle = index === 0 ? "green" : "white"; - this.ctx.fillRect(segment.x, segment.y, this.box, this.box); - this.ctx.strokeStyle = "red"; - this.ctx.strokeRect(segment.x, segment.y, this.box, this.box); - }); - - this.ctx.drawImage(this.foodImg, this.food.x, this.food.y); - - let snakeX = this.snake[0].x; - let snakeY = this.snake[0].y; - - if (this.direction === "LEFT") snakeX -= this.box; - if (this.direction === "UP") snakeY -= this.box; - if (this.direction === "RIGHT") snakeX += this.box; - if (this.direction === "DOWN") snakeY += this.box; - - if (snakeX === this.food.x && snakeY === this.food.y) { - this.score++; - this.sounds.eat.play(); - this.food = this.getRandomFoodPosition(); - } else { - this.snake.pop(); - } - - let newHead = { x: snakeX, y: snakeY }; - if ( - snakeX < this.box || - snakeX > 17 * this.box || - snakeY < 3 * this.box || - snakeY > 17 * this.box || - this.collision(newHead, this.snake) - ) { - clearInterval(this.game); - this.sounds.dead.play(); - } - - this.snake.unshift(newHead); - this.ctx.fillStyle = "white"; - this.ctx.font = "45px Changa one"; - this.ctx.fillText(this.score, 2 * this.box, 1.6 * this.box); - } - - startGame() { - this.description.style.display = "none"; - this.game = setInterval(() => this.draw(), 100); - } + function direction(event) { + const key = event.key.toLowerCase(); + if ((key === "arrowleft" || key === "a") && d !== "RIGHT") + changeDirection("LEFT"); + if ((key === "arrowup" || key === "w") && d !== "DOWN") + changeDirection("UP"); + if ((key === "arrowright" || key === "d") && d !== "LEFT") + changeDirection("RIGHT"); + if ((key === "arrowdown" || key === "s") && d !== "UP") + changeDirection("DOWN"); } - new SnakeGame(); + function changeDirection(newDirection) { + d = newDirection; + if (newDirection === "LEFT") left.play(); + if (newDirection === "UP") up.play(); + if (newDirection === "RIGHT") right.play(); + if (newDirection === "DOWN") down.play(); + } + + function collision(head, array) { + return array.some( + (segment) => segment.x === head.x && segment.y === head.y + ); + } + + function draw() { + ctx.drawImage(ground, 0, 0); + snake.forEach((segment, index) => { + ctx.fillStyle = index === 0 ? "green" : "white"; + ctx.fillRect(segment.x, segment.y, box, box); + ctx.strokeStyle = "red"; + ctx.strokeRect(segment.x, segment.y, box, box); + }); + ctx.drawImage(foodImg, food.x, food.y); + + let snakeX = snake[0].x; + let snakeY = snake[0].y; + if (d === "LEFT") snakeX -= box; + if (d === "UP") snakeY -= box; + if (d === "RIGHT") snakeX += box; + if (d === "DOWN") snakeY += box; + + if (snakeX === food.x && snakeY === food.y) { + score++; + eat.play(); + food = { + x: Math.floor(Math.random() * 17 + 1) * box, + y: Math.floor(Math.random() * 15 + 3) * box, + }; + } else { + snake.pop(); + } + + let newHead = { x: snakeX, y: snakeY }; + if ( + snakeX < box || + snakeX > 17 * box || + snakeY < 3 * box || + snakeY > 17 * box || + collision(newHead, snake) + ) { + clearInterval(game); + dead.play(); + } + + snake.unshift(newHead); + ctx.fillStyle = "white"; + ctx.font = "45px Changa one"; + ctx.fillText(score, 2 * box, 1.6 * box); + } + + function startGame() { + description.style.display = "none"; + game = setInterval(draw, 100); + } }); -- 2.39.5 From c8457d3b1c6dccc5a42d9a2e7f4174f8b76f48b7 Mon Sep 17 00:00:00 2001 From: sageTheDM <info@photofuel.tech> Date: Tue, 25 Feb 2025 12:00:40 +0100 Subject: [PATCH 3/4] WHY IS THIS BULLSHIT WORKING --- secret/snake/game.js | 251 +++++++++++++++++++++++----------------- secret/snake/index.html | 2 +- secret/snake/test.html | 171 +++++++++++++++++++++++++++ 3 files changed, 314 insertions(+), 110 deletions(-) create mode 100644 secret/snake/test.html diff --git a/secret/snake/game.js b/secret/snake/game.js index 22cf87f..2f6ea42 100644 --- a/secret/snake/game.js +++ b/secret/snake/game.js @@ -1,123 +1,156 @@ +// testing from old tutorial + "use strict"; -document.addEventListener("DOMContentLoaded", () => { - const cvs = document.getElementById("game"); - const ctx = cvs.getContext("2d"); - const startBtn = document.getElementById("start"); - const description = document.getElementById("description"); - const box = 32; +const cvs = document.getElementById("snake"); +const ctx = cvs.getContext("2d"); - const ground = new Image(); - ground.src = "img/ground.png"; +// create the unit +const box = 32; - const foodImg = new Image(); - foodImg.src = "img/food.png"; +// load images - let dead = new Audio("audio/dead.mp3"); - let eat = new Audio("audio/eat.mp3"); - let up = new Audio("audio/up.mp3"); - let right = new Audio("audio/right.mp3"); - let left = new Audio("audio/left.mp3"); - let down = new Audio("audio/down.mp3"); +const ground = new Image(); +ground.src = "img/ground.png"; - let snake = [{ x: 9 * box, y: 10 * box }]; - let food = { - x: Math.floor(Math.random() * 17 + 1) * box, - y: Math.floor(Math.random() * 15 + 3) * box, +const foodImg = new Image(); +foodImg.src = "img/food.png"; + +// load audio files + +let dead = new Audio(); +let eat = new Audio(); +let up = new Audio(); +let right = new Audio(); +let left = new Audio(); +let down = new Audio(); + +dead.src = "audio/dead.mp3"; +eat.src = "audio/eat.mp3"; +up.src = "audio/up.mp3"; +right.src = "audio/right.mp3"; +left.src = "audio/left.mp3"; +down.src = "audio/down.mp3"; + +// create the snake + +let snake = []; + +snake[0] = { + x: 9 * box, + y: 10 * box, +}; + +// create the food + +let food = { + x: Math.floor(Math.random() * 17 + 1) * box, + y: Math.floor(Math.random() * 15 + 3) * box, +}; + +// create the score var + +let score = 0; + +//control the snake + +let d; + +document.addEventListener("keydown", direction); + +function direction(event) { + let key = event.keyCode; + if (key == 37 && d != "RIGHT") { + left.play(); + d = "LEFT"; + } else if (key == 38 && d != "DOWN") { + d = "UP"; + up.play(); + } else if (key == 39 && d != "LEFT") { + d = "RIGHT"; + right.play(); + } else if (key == 40 && d != "UP") { + d = "DOWN"; + down.play(); + } +} + +// cheack collision function +function collision(head, array) { + for (let i = 0; i < array.length; i++) { + if (head.x == array[i].x && head.y == array[i].y) { + return true; + } + } + return false; +} + +// draw everything to the canvas + +function draw() { + ctx.drawImage(ground, 0, 0); + + for (let i = 0; i < snake.length; i++) { + ctx.fillStyle = i == 0 ? "green" : "white"; + ctx.fillRect(snake[i].x, snake[i].y, box, box); + + ctx.strokeStyle = "red"; + ctx.strokeRect(snake[i].x, snake[i].y, box, box); + } + + ctx.drawImage(foodImg, food.x, food.y); + + // old head position + let snakeX = snake[0].x; + let snakeY = snake[0].y; + + // which direction + if (d == "LEFT") snakeX -= box; + if (d == "UP") snakeY -= box; + if (d == "RIGHT") snakeX += box; + if (d == "DOWN") snakeY += box; + + // if the snake eats the food + if (snakeX == food.x && snakeY == food.y) { + score++; + eat.play(); + food = { + x: Math.floor(Math.random() * 17 + 1) * box, + y: Math.floor(Math.random() * 15 + 3) * box, + }; + // we don't remove the tail + } else { + // remove the tail + snake.pop(); + } + + // add new Head + + let newHead = { + x: snakeX, + y: snakeY, }; - let score = 0; - let d; - let game; - document.addEventListener("keydown", direction); - document - .getElementById("up") - .addEventListener("click", () => changeDirection("UP")); - document - .getElementById("down") - .addEventListener("click", () => changeDirection("DOWN")); - document - .getElementById("left") - .addEventListener("click", () => changeDirection("LEFT")); - document - .getElementById("right") - .addEventListener("click", () => changeDirection("RIGHT")); - startBtn.addEventListener("click", startGame); + // game over - function direction(event) { - const key = event.key.toLowerCase(); - if ((key === "arrowleft" || key === "a") && d !== "RIGHT") - changeDirection("LEFT"); - if ((key === "arrowup" || key === "w") && d !== "DOWN") - changeDirection("UP"); - if ((key === "arrowright" || key === "d") && d !== "LEFT") - changeDirection("RIGHT"); - if ((key === "arrowdown" || key === "s") && d !== "UP") - changeDirection("DOWN"); + if ( + snakeX < box || + snakeX > 17 * box || + snakeY < 3 * box || + snakeY > 17 * box || + collision(newHead, snake) + ) { + clearInterval(game); + dead.play(); } - function changeDirection(newDirection) { - d = newDirection; - if (newDirection === "LEFT") left.play(); - if (newDirection === "UP") up.play(); - if (newDirection === "RIGHT") right.play(); - if (newDirection === "DOWN") down.play(); - } + snake.unshift(newHead); - function collision(head, array) { - return array.some( - (segment) => segment.x === head.x && segment.y === head.y - ); - } + ctx.fillStyle = "white"; + ctx.font = "45px Changa one"; + ctx.fillText(score, 2 * box, 1.6 * box); +} - function draw() { - ctx.drawImage(ground, 0, 0); - snake.forEach((segment, index) => { - ctx.fillStyle = index === 0 ? "green" : "white"; - ctx.fillRect(segment.x, segment.y, box, box); - ctx.strokeStyle = "red"; - ctx.strokeRect(segment.x, segment.y, box, box); - }); - ctx.drawImage(foodImg, food.x, food.y); +// call draw function every 100 ms - let snakeX = snake[0].x; - let snakeY = snake[0].y; - if (d === "LEFT") snakeX -= box; - if (d === "UP") snakeY -= box; - if (d === "RIGHT") snakeX += box; - if (d === "DOWN") snakeY += box; - - if (snakeX === food.x && snakeY === food.y) { - score++; - eat.play(); - food = { - x: Math.floor(Math.random() * 17 + 1) * box, - y: Math.floor(Math.random() * 15 + 3) * box, - }; - } else { - snake.pop(); - } - - let newHead = { x: snakeX, y: snakeY }; - if ( - snakeX < box || - snakeX > 17 * box || - snakeY < 3 * box || - snakeY > 17 * box || - collision(newHead, snake) - ) { - clearInterval(game); - dead.play(); - } - - snake.unshift(newHead); - ctx.fillStyle = "white"; - ctx.font = "45px Changa one"; - ctx.fillText(score, 2 * box, 1.6 * box); - } - - function startGame() { - description.style.display = "none"; - game = setInterval(draw, 100); - } -}); +let game = setInterval(draw, 100); diff --git a/secret/snake/index.html b/secret/snake/index.html index 183027f..7f81ed2 100644 --- a/secret/snake/index.html +++ b/secret/snake/index.html @@ -38,7 +38,7 @@ <p>▲ or W or arrow up = move up</p> <p>▼ or S or arrow down = move down</p> </div> - <canvas id="game"></canvas> + <canvas id="snake" width="400" height="400"></canvas> </article> </div> diff --git a/secret/snake/test.html b/secret/snake/test.html new file mode 100644 index 0000000..a10dce8 --- /dev/null +++ b/secret/snake/test.html @@ -0,0 +1,171 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>Snake Game</title> + <style> + canvas { + border: 1px solid black; + } + #restartBtn { + padding: 10px 20px; + font-size: 16px; + cursor: pointer; + margin-top: 20px; + } + </style> + </head> + <body> + <canvas id="snake" width="608" height="608"></canvas> + <button id="restartBtn" style="display: none">Restart</button> + + <script> + "use strict"; + + const cvs = document.getElementById("snake"); + const ctx = cvs.getContext("2d"); + + const box = 32; + + const ground = new Image(); + ground.src = "img/ground.png"; + + const foodImg = new Image(); + foodImg.src = "img/food.png"; + + let dead = new Audio(); + let eat = new Audio(); + let up = new Audio(); + let right = new Audio(); + let left = new Audio(); + let down = new Audio(); + + dead.src = "audio/dead.mp3"; + eat.src = "audio/eat.mp3"; + up.src = "audio/up.mp3"; + right.src = "audio/right.mp3"; + left.src = "audio/left.mp3"; + down.src = "audio/down.mp3"; + + let snake = []; + snake[0] = { x: 9 * box, y: 10 * box }; + + let food = { + x: Math.floor(Math.random() * 17 + 1) * box, + y: Math.floor(Math.random() * 15 + 3) * box, + }; + + let score = 0; + + let d; + let game; + + document.addEventListener("keydown", direction); + + function direction(event) { + let key = event.keyCode; + + if ((key == 37 || key == 65) && d != "RIGHT") { + left.play(); + d = "LEFT"; + } else if ((key == 38 || key == 87) && d != "DOWN") { + d = "UP"; + up.play(); + } else if ((key == 39 || key == 68) && d != "LEFT") { + d = "RIGHT"; + right.play(); + } else if ((key == 40 || key == 83) && d != "UP") { + d = "DOWN"; + down.play(); + } + } + + function collision(head, array) { + for (let i = 0; i < array.length; i++) { + if (head.x == array[i].x && head.y == array[i].y) { + return true; + } + } + return false; + } + + function draw() { + ctx.drawImage(ground, 0, 0); + + for (let i = 0; i < snake.length; i++) { + ctx.fillStyle = i == 0 ? "green" : "white"; + ctx.fillRect(snake[i].x, snake[i].y, box, box); + + ctx.strokeStyle = "red"; + ctx.strokeRect(snake[i].x, snake[i].y, box, box); + } + + ctx.drawImage(foodImg, food.x, food.y); + + let snakeX = snake[0].x; + let snakeY = snake[0].y; + + if (d == "LEFT") snakeX -= box; + if (d == "UP") snakeY -= box; + if (d == "RIGHT") snakeX += box; + if (d == "DOWN") snakeY += box; + + if (snakeX == food.x && snakeY == food.y) { + score++; + eat.play(); + food = { + x: Math.floor(Math.random() * 17 + 1) * box, + y: Math.floor(Math.random() * 15 + 3) * box, + }; + } else { + snake.pop(); + } + + let newHead = { x: snakeX, y: snakeY }; + + if ( + snakeX < box || + snakeX > 17 * box || + snakeY < 3 * box || + snakeY > 17 * box || + collision(newHead, snake) + ) { + clearInterval(game); + dead.play(); + + // Delay Game Over message + setTimeout(() => { + alert("Game Over!"); + document.getElementById("restartBtn").style.display = "block"; + }, 500); // Wait 0.5 seconds before showing the message + return; + } + + snake.unshift(newHead); + + ctx.fillStyle = "white"; + ctx.font = "45px Changa one"; + ctx.fillText(score, 2 * box, 1.6 * box); + } + + function restartGame() { + snake = [{ x: 9 * box, y: 10 * box }]; + food = { + x: Math.floor(Math.random() * 17 + 1) * box, + y: Math.floor(Math.random() * 15 + 3) * box, + }; + score = 0; + d = ""; + document.getElementById("restartBtn").style.display = "none"; + game = setInterval(draw, 150); // Reduced speed (increased interval time to 150ms) + } + + document + .getElementById("restartBtn") + .addEventListener("click", restartGame); + + game = setInterval(draw, 150); // Start the game with reduced speed + </script> + </body> +</html> -- 2.39.5 From cd401ee5b65d28e453e93845621bdf17980ee51e Mon Sep 17 00:00:00 2001 From: sageTheDM <info@photofuel.tech> Date: Tue, 25 Feb 2025 13:33:17 +0100 Subject: [PATCH 4/4] why is one working and the other isn't --- secret/snake/game.js | 143 +++++++++---------------------- secret/snake/test.html | 186 +++++++++++++++++++++++------------------ 2 files changed, 147 insertions(+), 182 deletions(-) diff --git a/secret/snake/game.js b/secret/snake/game.js index 2f6ea42..f94dc2e 100644 --- a/secret/snake/game.js +++ b/secret/snake/game.js @@ -1,156 +1,95 @@ -// testing from old tutorial - "use strict"; const cvs = document.getElementById("snake"); const ctx = cvs.getContext("2d"); +const box = 20; -// create the unit -const box = 32; - -// load images - -const ground = new Image(); -ground.src = "img/ground.png"; - -const foodImg = new Image(); -foodImg.src = "img/food.png"; - -// load audio files - -let dead = new Audio(); -let eat = new Audio(); -let up = new Audio(); -let right = new Audio(); -let left = new Audio(); -let down = new Audio(); - -dead.src = "audio/dead.mp3"; -eat.src = "audio/eat.mp3"; -up.src = "audio/up.mp3"; -right.src = "audio/right.mp3"; -left.src = "audio/left.mp3"; -down.src = "audio/down.mp3"; - -// create the snake - -let snake = []; - -snake[0] = { - x: 9 * box, - y: 10 * box, -}; - -// create the food - +let snake = [{ x: 9 * box, y: 10 * box }]; let food = { - x: Math.floor(Math.random() * 17 + 1) * box, - y: Math.floor(Math.random() * 15 + 3) * box, + x: Math.floor(Math.random() * 19 + 1) * box, + y: Math.floor(Math.random() * 19 + 1) * box, }; - -// create the score var - let score = 0; - -//control the snake - let d; +let game; document.addEventListener("keydown", direction); - function direction(event) { let key = event.keyCode; - if (key == 37 && d != "RIGHT") { - left.play(); - d = "LEFT"; - } else if (key == 38 && d != "DOWN") { - d = "UP"; - up.play(); - } else if (key == 39 && d != "LEFT") { - d = "RIGHT"; - right.play(); - } else if (key == 40 && d != "UP") { - d = "DOWN"; - down.play(); - } + if ((key == 37 || key == 65) && d != "RIGHT") d = "LEFT"; + else if ((key == 38 || key == 87) && d != "DOWN") d = "UP"; + else if ((key == 39 || key == 68) && d != "LEFT") d = "RIGHT"; + else if ((key == 40 || key == 83) && d != "UP") d = "DOWN"; } -// cheack collision function function collision(head, array) { - for (let i = 0; i < array.length; i++) { - if (head.x == array[i].x && head.y == array[i].y) { - return true; - } - } - return false; + return array.some((part) => head.x == part.x && head.y == part.y); } -// draw everything to the canvas - function draw() { - ctx.drawImage(ground, 0, 0); + ctx.fillStyle = "#0f380f"; + ctx.fillRect(0, 0, cvs.width, cvs.height); + + ctx.fillStyle = "red"; + ctx.fillRect(food.x, food.y, box, box); for (let i = 0; i < snake.length; i++) { - ctx.fillStyle = i == 0 ? "green" : "white"; + ctx.fillStyle = i == 0 ? "lime" : "white"; ctx.fillRect(snake[i].x, snake[i].y, box, box); - - ctx.strokeStyle = "red"; + ctx.strokeStyle = "black"; ctx.strokeRect(snake[i].x, snake[i].y, box, box); } - ctx.drawImage(foodImg, food.x, food.y); - - // old head position let snakeX = snake[0].x; let snakeY = snake[0].y; - // which direction if (d == "LEFT") snakeX -= box; if (d == "UP") snakeY -= box; if (d == "RIGHT") snakeX += box; if (d == "DOWN") snakeY += box; - // if the snake eats the food if (snakeX == food.x && snakeY == food.y) { score++; - eat.play(); food = { - x: Math.floor(Math.random() * 17 + 1) * box, - y: Math.floor(Math.random() * 15 + 3) * box, + x: Math.floor(Math.random() * 19 + 1) * box, + y: Math.floor(Math.random() * 19 + 1) * box, }; - // we don't remove the tail } else { - // remove the tail snake.pop(); } - // add new Head - - let newHead = { - x: snakeX, - y: snakeY, - }; - - // game over + let newHead = { x: snakeX, y: snakeY }; if ( - snakeX < box || - snakeX > 17 * box || - snakeY < 3 * box || - snakeY > 17 * box || + snakeX < 0 || + snakeX >= cvs.width || + snakeY < 0 || + snakeY >= cvs.height || collision(newHead, snake) ) { clearInterval(game); - dead.play(); + document.getElementById("restartBtn").style.display = "block"; + return; } snake.unshift(newHead); ctx.fillStyle = "white"; - ctx.font = "45px Changa one"; - ctx.fillText(score, 2 * box, 1.6 * box); + ctx.font = "20px Arial"; + ctx.fillText("Score: " + score, 10, 20); } -// call draw function every 100 ms +function restartGame() { + snake = [{ x: 9 * box, y: 10 * box }]; + food = { + x: Math.floor(Math.random() * 19 + 1) * box, + y: Math.floor(Math.random() * 19 + 1) * box, + }; + score = 0; + d = ""; + document.getElementById("restartBtn").style.display = "none"; + game = setInterval(draw, 150); +} -let game = setInterval(draw, 100); +document.getElementById("restartBtn").addEventListener("click", restartGame); +game = setInterval(draw, 150); diff --git a/secret/snake/test.html b/secret/snake/test.html index a10dce8..12a5cfb 100644 --- a/secret/snake/test.html +++ b/secret/snake/test.html @@ -3,106 +3,140 @@ <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <title>Snake Game</title> + <title>Snake Game - GameBoy Style</title> <style> + /* Base Reset */ + body, + html { + margin: 0; + padding: 0; + font-family: monospace; + background-color: #3a2d56; + display: flex; + justify-content: center; + align-items: center; + height: 100vh; + } + + /* GameBoy Layout */ + .gameboy { + background-color: #5f4c82; + width: 441px; + height: 735px; + border-radius: 20px; + box-shadow: 0 8px 16px rgba(0, 0, 0, 0.6); + display: flex; + flex-direction: column; + align-items: center; + padding: 10px; + position: relative; + } + + @media (max-width: 768px) { + .gameboy { + width: 100vw; + height: 100vh; + border-radius: 0; + } + } + + /* Screen */ + .screen { + background-color: black; + border: 4px solid #0f380f; + width: 90%; + height: 55%; + margin-top: 20px; + border-radius: 10px; + display: flex; + justify-content: center; + align-items: center; + box-shadow: inset 0 4px 8px rgba(0, 0, 0, 0.5); + overflow: hidden; + } + canvas { border: 1px solid black; } + + /* Restart Button */ #restartBtn { padding: 10px 20px; font-size: 16px; cursor: pointer; margin-top: 20px; + background-color: #0f380f; + color: white; + border: none; + border-radius: 5px; + display: none; + } + + #restartBtn:hover { + background-color: #9bbc0f; + } + + /* Titles */ + h1 { + font-size: 1.8rem; + margin-bottom: 10px; + text-transform: uppercase; + color: #9bbc0f; } </style> </head> <body> - <canvas id="snake" width="608" height="608"></canvas> - <button id="restartBtn" style="display: none">Restart</button> + <div class="gameboy"> + <h1>Snake Game</h1> + <div class="screen"> + <canvas id="snake" width="400" height="400"></canvas> + </div> + <button id="restartBtn">Restart</button> + </div> <script> "use strict"; const cvs = document.getElementById("snake"); const ctx = cvs.getContext("2d"); + const box = 20; - const box = 32; - - const ground = new Image(); - ground.src = "img/ground.png"; - - const foodImg = new Image(); - foodImg.src = "img/food.png"; - - let dead = new Audio(); - let eat = new Audio(); - let up = new Audio(); - let right = new Audio(); - let left = new Audio(); - let down = new Audio(); - - dead.src = "audio/dead.mp3"; - eat.src = "audio/eat.mp3"; - up.src = "audio/up.mp3"; - right.src = "audio/right.mp3"; - left.src = "audio/left.mp3"; - down.src = "audio/down.mp3"; - - let snake = []; - snake[0] = { x: 9 * box, y: 10 * box }; - + let snake = [{ x: 9 * box, y: 10 * box }]; let food = { - x: Math.floor(Math.random() * 17 + 1) * box, - y: Math.floor(Math.random() * 15 + 3) * box, + x: Math.floor(Math.random() * 19 + 1) * box, + y: Math.floor(Math.random() * 19 + 1) * box, }; - let score = 0; - let d; let game; document.addEventListener("keydown", direction); - function direction(event) { let key = event.keyCode; - - if ((key == 37 || key == 65) && d != "RIGHT") { - left.play(); - d = "LEFT"; - } else if ((key == 38 || key == 87) && d != "DOWN") { - d = "UP"; - up.play(); - } else if ((key == 39 || key == 68) && d != "LEFT") { - d = "RIGHT"; - right.play(); - } else if ((key == 40 || key == 83) && d != "UP") { - d = "DOWN"; - down.play(); - } + if ((key == 37 || key == 65) && d != "RIGHT") d = "LEFT"; + else if ((key == 38 || key == 87) && d != "DOWN") d = "UP"; + else if ((key == 39 || key == 68) && d != "LEFT") d = "RIGHT"; + else if ((key == 40 || key == 83) && d != "UP") d = "DOWN"; } function collision(head, array) { - for (let i = 0; i < array.length; i++) { - if (head.x == array[i].x && head.y == array[i].y) { - return true; - } - } - return false; + return array.some((part) => head.x == part.x && head.y == part.y); } function draw() { - ctx.drawImage(ground, 0, 0); + ctx.fillStyle = "#0f380f"; + ctx.fillRect(0, 0, cvs.width, cvs.height); + + ctx.fillStyle = "red"; + ctx.fillRect(food.x, food.y, box, box); for (let i = 0; i < snake.length; i++) { - ctx.fillStyle = i == 0 ? "green" : "white"; + ctx.fillStyle = i == 0 ? "lime" : "white"; ctx.fillRect(snake[i].x, snake[i].y, box, box); - - ctx.strokeStyle = "red"; + ctx.strokeStyle = "black"; ctx.strokeRect(snake[i].x, snake[i].y, box, box); } - ctx.drawImage(foodImg, food.x, food.y); - let snakeX = snake[0].x; let snakeY = snake[0].y; @@ -113,10 +147,9 @@ if (snakeX == food.x && snakeY == food.y) { score++; - eat.play(); food = { - x: Math.floor(Math.random() * 17 + 1) * box, - y: Math.floor(Math.random() * 15 + 3) * box, + x: Math.floor(Math.random() * 19 + 1) * box, + y: Math.floor(Math.random() * 19 + 1) * box, }; } else { snake.pop(); @@ -125,47 +158,40 @@ let newHead = { x: snakeX, y: snakeY }; if ( - snakeX < box || - snakeX > 17 * box || - snakeY < 3 * box || - snakeY > 17 * box || + snakeX < 0 || + snakeX >= cvs.width || + snakeY < 0 || + snakeY >= cvs.height || collision(newHead, snake) ) { clearInterval(game); - dead.play(); - - // Delay Game Over message - setTimeout(() => { - alert("Game Over!"); - document.getElementById("restartBtn").style.display = "block"; - }, 500); // Wait 0.5 seconds before showing the message + document.getElementById("restartBtn").style.display = "block"; return; } snake.unshift(newHead); ctx.fillStyle = "white"; - ctx.font = "45px Changa one"; - ctx.fillText(score, 2 * box, 1.6 * box); + ctx.font = "20px Arial"; + ctx.fillText("Score: " + score, 10, 20); } function restartGame() { snake = [{ x: 9 * box, y: 10 * box }]; food = { - x: Math.floor(Math.random() * 17 + 1) * box, - y: Math.floor(Math.random() * 15 + 3) * box, + x: Math.floor(Math.random() * 19 + 1) * box, + y: Math.floor(Math.random() * 19 + 1) * box, }; score = 0; d = ""; document.getElementById("restartBtn").style.display = "none"; - game = setInterval(draw, 150); // Reduced speed (increased interval time to 150ms) + game = setInterval(draw, 150); } document .getElementById("restartBtn") .addEventListener("click", restartGame); - - game = setInterval(draw, 150); // Start the game with reduced speed + game = setInterval(draw, 150); </script> </body> </html> -- 2.39.5