From 9d732a4ccb359f479afbaf5ea07eafa76f2b2df3 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Fri, 9 Feb 2018 17:27:04 -0800 Subject: [PATCH] minesweeper: adding a fun minesweeper game. --- extra/minesweeper/_resources/blank.gif | Bin 0 -> 3460 bytes extra/minesweeper/_resources/digit-.gif | Bin 0 -> 3628 bytes extra/minesweeper/_resources/digit0.gif | Bin 0 -> 3643 bytes extra/minesweeper/_resources/digit1.gif | Bin 0 -> 3667 bytes extra/minesweeper/_resources/digit2.gif | Bin 0 -> 3636 bytes extra/minesweeper/_resources/digit3.gif | Bin 0 -> 3636 bytes extra/minesweeper/_resources/digit4.gif | Bin 0 -> 3669 bytes extra/minesweeper/_resources/digit5.gif | Bin 0 -> 3638 bytes extra/minesweeper/_resources/digit6.gif | Bin 0 -> 3625 bytes extra/minesweeper/_resources/digit7.gif | Bin 0 -> 3663 bytes extra/minesweeper/_resources/digit8.gif | Bin 0 -> 3570 bytes extra/minesweeper/_resources/digit9.gif | Bin 0 -> 3630 bytes extra/minesweeper/_resources/flagged.gif | Bin 0 -> 3587 bytes extra/minesweeper/_resources/mine.gif | Bin 0 -> 3543 bytes extra/minesweeper/_resources/mineclicked.gif | Bin 0 -> 3543 bytes extra/minesweeper/_resources/misflagged.gif | Bin 0 -> 3664 bytes extra/minesweeper/_resources/open0.gif | Bin 0 -> 3393 bytes extra/minesweeper/_resources/open1.gif | Bin 0 -> 3471 bytes extra/minesweeper/_resources/open2.gif | Bin 0 -> 3485 bytes extra/minesweeper/_resources/open3.gif | Bin 0 -> 3480 bytes extra/minesweeper/_resources/open4.gif | Bin 0 -> 3506 bytes extra/minesweeper/_resources/open5.gif | Bin 0 -> 3479 bytes extra/minesweeper/_resources/open6.gif | Bin 0 -> 3494 bytes extra/minesweeper/_resources/open7.gif | Bin 0 -> 3465 bytes extra/minesweeper/_resources/open8.gif | Bin 0 -> 3485 bytes extra/minesweeper/_resources/question.gif | Bin 0 -> 3566 bytes extra/minesweeper/_resources/smiley.gif | Bin 0 -> 4043 bytes extra/minesweeper/_resources/smileylost.gif | Bin 0 -> 4074 bytes extra/minesweeper/_resources/smileyuhoh.gif | Bin 0 -> 4228 bytes extra/minesweeper/_resources/smileywon.gif | Bin 0 -> 4113 bytes extra/minesweeper/authors.txt | 1 + extra/minesweeper/minesweeper.factor | 299 +++++++++++++++++++ extra/minesweeper/resources.txt | 1 + extra/minesweeper/summary.txt | 1 + extra/minesweeper/tags.txt | 1 + 35 files changed, 303 insertions(+) create mode 100644 extra/minesweeper/_resources/blank.gif create mode 100644 extra/minesweeper/_resources/digit-.gif create mode 100644 extra/minesweeper/_resources/digit0.gif create mode 100644 extra/minesweeper/_resources/digit1.gif create mode 100644 extra/minesweeper/_resources/digit2.gif create mode 100644 extra/minesweeper/_resources/digit3.gif create mode 100644 extra/minesweeper/_resources/digit4.gif create mode 100644 extra/minesweeper/_resources/digit5.gif create mode 100644 extra/minesweeper/_resources/digit6.gif create mode 100644 extra/minesweeper/_resources/digit7.gif create mode 100644 extra/minesweeper/_resources/digit8.gif create mode 100644 extra/minesweeper/_resources/digit9.gif create mode 100644 extra/minesweeper/_resources/flagged.gif create mode 100644 extra/minesweeper/_resources/mine.gif create mode 100644 extra/minesweeper/_resources/mineclicked.gif create mode 100644 extra/minesweeper/_resources/misflagged.gif create mode 100644 extra/minesweeper/_resources/open0.gif create mode 100644 extra/minesweeper/_resources/open1.gif create mode 100644 extra/minesweeper/_resources/open2.gif create mode 100644 extra/minesweeper/_resources/open3.gif create mode 100644 extra/minesweeper/_resources/open4.gif create mode 100644 extra/minesweeper/_resources/open5.gif create mode 100644 extra/minesweeper/_resources/open6.gif create mode 100644 extra/minesweeper/_resources/open7.gif create mode 100644 extra/minesweeper/_resources/open8.gif create mode 100644 extra/minesweeper/_resources/question.gif create mode 100644 extra/minesweeper/_resources/smiley.gif create mode 100644 extra/minesweeper/_resources/smileylost.gif create mode 100644 extra/minesweeper/_resources/smileyuhoh.gif create mode 100644 extra/minesweeper/_resources/smileywon.gif create mode 100644 extra/minesweeper/authors.txt create mode 100644 extra/minesweeper/minesweeper.factor create mode 100644 extra/minesweeper/resources.txt create mode 100644 extra/minesweeper/summary.txt create mode 100644 extra/minesweeper/tags.txt diff --git a/extra/minesweeper/_resources/blank.gif b/extra/minesweeper/_resources/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..5c50d90375287c35b87717debe8218fb3f990e1d GIT binary patch literal 3460 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 O(+kfa(zG4~EdB`&o{|Ot literal 0 HcmV?d00001 diff --git a/extra/minesweeper/_resources/digit-.gif b/extra/minesweeper/_resources/digit-.gif new file mode 100644 index 0000000000000000000000000000000000000000..025cd8a53af62d1f7188f7e7fd6a39c05dd15090 GIT binary patch literal 3628 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 WYCKxF{^Ij0pOeSNuPI6cVEZpT72Fm8 literal 0 HcmV?d00001 diff --git a/extra/minesweeper/_resources/digit0.gif b/extra/minesweeper/_resources/digit0.gif new file mode 100644 index 0000000000000000000000000000000000000000..304bc14148247a139b0d6f3c140d6b47353bc031 GIT binary patch literal 3643 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 literal 0 HcmV?d00001 diff --git a/extra/minesweeper/_resources/digit2.gif b/extra/minesweeper/_resources/digit2.gif new file mode 100644 index 0000000000000000000000000000000000000000..f3e1b8905769d089d97f4ceb1be9fee5b3fabcd8 GIT binary patch literal 3636 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 P-<~}2=;{&|7})&_8EEdU literal 0 HcmV?d00001 diff --git a/extra/minesweeper/_resources/digit5.gif b/extra/minesweeper/_resources/digit5.gif new file mode 100644 index 0000000000000000000000000000000000000000..589a1a14097f3a15244ef9c88338252d7cd42935 GIT binary patch literal 3638 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 literal 0 HcmV?d00001 diff --git a/extra/minesweeper/_resources/digit6.gif b/extra/minesweeper/_resources/digit6.gif new file mode 100644 index 0000000000000000000000000000000000000000..232f606e94b7bffcd8c098e05d10059762091c79 GIT binary patch literal 3625 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 Vc1zM^CfaH0UbWs`rjux3`!8(0*Np%G literal 0 HcmV?d00001 diff --git a/extra/minesweeper/_resources/digit7.gif b/extra/minesweeper/_resources/digit7.gif new file mode 100644 index 0000000000000000000000000000000000000000..56ab859b5856de2cedd6f6296703b018195e374d GIT binary patch literal 3663 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 Y|JkkM-B~%68|g>;8u|TRMgTbd8zs2AGXMYp literal 0 HcmV?d00001 diff --git a/extra/minesweeper/_resources/digit9.gif b/extra/minesweeper/_resources/digit9.gif new file mode 100644 index 0000000000000000000000000000000000000000..f4ee44ef044df95bce0c87f11928be0f8be1917d GIT binary patch literal 3630 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 literal 0 HcmV?d00001 diff --git a/extra/minesweeper/_resources/flagged.gif b/extra/minesweeper/_resources/flagged.gif new file mode 100644 index 0000000000000000000000000000000000000000..46dc1b21b91db788b6012b2dd7abe6ed0ef5dbe2 GIT binary patch literal 3587 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 literal 0 HcmV?d00001 diff --git a/extra/minesweeper/_resources/mine.gif b/extra/minesweeper/_resources/mine.gif new file mode 100644 index 0000000000000000000000000000000000000000..f7b12c27e4d762cdd8272c7f5fcc1d61d2827fc6 GIT binary patch literal 3543 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 literal 0 HcmV?d00001 diff --git a/extra/minesweeper/_resources/mineclicked.gif b/extra/minesweeper/_resources/mineclicked.gif new file mode 100644 index 0000000000000000000000000000000000000000..f7416c9cd286653792daa9012bc208ebf2254fa5 GIT binary patch literal 3543 zcmbW4cUTk47QkmWorIczfRxaCl@dTS5LyHTks^pnOacT#z>rV`JEDS$l`cpT1r%&l zJ0e(+qGB&_y$C4Riv>|p^ETJ-Q@{7Ud*Aoo`D6FDXU^FBC(BN$RjPgS`JB7!Uq#_S@kOzIfIDv=oM}#Q}TvjrYE0R<%;<95AwnmsF3=U!- zJQn~wDdrbm`3sA|FcOo}g}j(p5!IM&LbY*nqEUUgseG$FqbSDkCu= zi6uw};QOGZUO-8jTq=@f2OB2`2Mb$EB>z9;9~*yI{WC}>_q)ZrMF5hP2&B^UQ~A^R zr!EmGE7}y2oLxV4D~kYV*$jZ{!=F0+g8;~90nps{%Yam*6%#8GB{^GJrKYA@^0;hE zX-0p@e>M1F`Sfr_CDs1`Z_wLzDlYtR7n02+qIp|{Xy z7zLAH2?f@K4Ph&o2D`z&a4@_Kj)7OftKlqoCtL_u!bjm|_!4{r9)ySBSMU@Hpol0H zln%-QMME)A0jLO6G)jnCi^@UeqbgAisCHC0>NaW!HG%qs#-hn+D%t|=g7!g&pxNkE z=(XtW=wkE{bThgWeH%TDo%phh2^8t&+ zs$h+Hm(SF6n6o43paxM zh$rH;@wRv`d<0&A--yr0*Wu6OZ{bJrGXw>K0l}FNK;TFS>4ZE&HKCo*M;IZ@$SBGf z$+*e{%f!iSkSUaDkhvoBSmqs(NYo`d5f>48#P!5N;&I|t;xO?ONr_}iVvr(9V$x31 zVbVp?1JXNLSy@9_x@?53NOq@et?Xslr?MaA$a0o)OgWC+I=K?LX1QB(ujL8y2J&w5 z%jH+g=gXgx?~|WUASf6rFceq{YZXcq+7#|7OevBTZ4?6(6BM^A)+t_7988?$)y~l^in33m6Yw2LzUB%OO($k z52>J33{{vae3d+vlPY&rKF`ven7grd4OF(p9;tIjW7SgQ}m^sA`^S z@oKx(TGXDXqt#8-7pbSJm#JS-pO{UV?J}D^J7@OE*$*{f4O5LEjSP({jUJ6DO)X7t z%_Pkt&C8k-S}Iy}tvIcHTIaRKwaMD^w0YY5v@dACq$*S0sC;T6wUaujqoL!YBi5D8IhHPQ{y-Kg8B`$SJhkER!`w@ zxW%x=aLh>6h-tLisNU$Yv8?fY<5k9$#&=AxCNz_HlLIFGrm(5KX{>39X`dNv=3vG% zJ76|ojxl#K7noO?-?JcDxLKrF)LRToELAN1EH_%VSiZK>w~DaZZPjh{&D!3YZ(VKu z$VSO#fz3vncAK}hrnYR`65Bg-WaoIzSvRM3&Ko;3JFZ=s-F3FGAMw9e_Q(_3?SI+;9u1Dw4Yv`kHCT?+VN8Mh#Te}P0o7|@v z&WtsTiykNsZ;u?0UQZ>@5YJ-Ir(U{VF<$jvliv2;8QvFtFh0IMyM694HJNN?Epu{# z3Rh5QQEic?XTsIaKI zs4uJlRwZj{C39uz%1JhZUBG_Dp>y_e#<{NCJ>1b~*XTXbV==BVdt=69=f~#9PVgAK zV&0oLpSbe4>G**7!|@V+7{4(ApAePMCQuT@3px|E64Md~lFX8_lZI9~uiC$AQs^tJ zNrsY_CAW$w$f>GFY%Ja^9!{AjNhwMBm>QaTDors>kk*rKn!YW4bhX#&LmB7{c1B00 zPUeQp;Wch+D%L`4SFY_?r?)O^-N<_H^+z_yY>3}*bEEafJsaO|3ft74rJ1!p>-lEy z&Gp%G*~095TU@r3Z$)qAZSCDQXIs&>Z#kTt>$%ps`MF=Vv$tR0VY8!fhh%5;&fYwS zys}-`U4mVAchBE_WRK#W)q9@r_21jPkGd~s-~0V5_Fv1l%P%jGDG(P775Wvn7U>u5 zD*93!TRd3eUeZ{qQM#>k`T*y^tulI9L%C*oZu#efyo2{Eyepb34J-4juvIBlFRDYU zyARP0)z+xj^Ma`)o|M2bZHa0DW@4~PH&!UiESBb4R0N2ThP|g?$X|L#`4VJ zvpQ!>&MBYEJ1=uS>%8Q`>I+jBlP*qNin;W>V@1cK%S$fb>0H#=d&T$4)h@5D%iV6> z7p}TqJ$udhTHAHn^_CkBH=29wdzx}&0J>Te&IJ8=Hi{9Bi9d))52 z!@P52aN*#<-H^NY??v7ly3e^k_JIH3&BK(3Gmq9k#yrk>qVOdDsm9aFXC}`Yha85^ z4SNjt{I>YFN6*>MU;Uo^`{_jd0)rUIv)en|K*GoABM?cZhS&H6gC{+#XD%`=iHKYV zsGAc@OUsf)MwM07hc+E7)TymIaMY@idZO;=vCJbeCrjF!&Yf?&bhxPVV*42_ryG4q z^v3=>+*`uI!F#z6`XA{%8R#Awj_J5MQj^uJJsv&!`|FoF{I})L-n@>VX!$&2K5p5B zcidLKmA{ju^*&!=v${Cv zG`;`;C;+jxjOC=W5iUSDIa81(*3TeJU6mwe7%gT#5+K3~Vvhg9Mt|CTVP`SNrto4B z8*$8Ou_>`)?n8J>hLD3W$`|3n3@%5Mi8O8@4eexM3K!uI2vbuytaJd-B(Yw=VJ9GL zhA@dA66A)k0|0nZ{CB+SI~H)VkU#-&OHIq>bK?^PG(EOH&D_?OLG$KhCUXP=;{X;r ziN%klxuvG0v3S`4d|9;E3&@I-OGC13ZEkCAZERtJj|4}eqw0PREHEl6HmF$n@enw_a> zW@e@dm%}y@XY{N5M}x1He+}QwXCj{OYw~FBoH&*+SwItKm7SWLD&*7B(^zZ{&G^qU z{^#NNbL9Wc^WO*aT_8q5oH!1j!$al@<#IB)ym(~8d9hppH2#5eH z0UIQM6u<|WU@gc8g`fm%2fINP*asRw6KDl(paXP+3*a)i4sL+k;2{_V6JQ$5fcIbl zf*>43hA5CCqz>sohL8osfSe!?$QKHNBA^&39^yelXf3o6DuK$NDyR->f=)oEp$pJe zXc)Q=jX_h;@6bGqf=RH53ai4puqn)dU0@$L1YQBh!>i#nZ~?pxu7K;|BXB!>0lp63 zhDYIPcoqdvM3g*A17(b2pxjXYs7O>CijP{4Dn^x~>QSwzE>u72CTbM*67>;{MN`l; zv@zNq?TucJW}{c5*Q2+htI&th?dU%AP4pOg2K^aB#;9NnF?JXxCL9xw$;1?5$}x?Y zQy=Y7%XUfkZAbk61xGPP{@KBYq^w zk_yn+xkz@gR8@Y*mk^F@GL6RbABFU7DmCTi_mTZ?C zk$f#hkkXNIkyqfo4H zOyRb|ydq7}LorElhhm4~V zJv#k5bGmfhFx}0%9lDcr1v-9~WsqP{ zZ7^gA8(JH34fh%j8)1xWjd(`&Mt6-##xBMg#x2HUA`^KNUy}_c9VV|$wM`>UcbN8@ zem1i*OEzmTduT3ezSMk!d6)U`76uk%y-`C`E81IwNtBp^=S|vp;zJu=|IJD66Q#s5>j@E3#HxU8%G(d1X(uR5UC4 zWDF)IET%c;6U(1f&zfDuTvfAbhV91Q!=8?Hj@=bI#c|}6ah}IH#+AiQ#yiIEjGsza zl2D%TlIzB;;=W1rPTZF`m*k&xC`ptYmV7J)pAwUDnkUOk;`ODfrDmlLrx~Udrj4$) zTfKYr4Bv;}m=2|{NbeL-kz3V(P*1o?IF{ig%BarxkQthJGD{|lmo<=WkX@Ahe2wRt zgE{CNc24hFjkWn}$JV*5t6LAPU$wqBS1Y$5cOuU#?{L0Eep3F=8_YJ8ZFsjaY-3k} zYC&GX_$IGSErpVW{KC7N?Kkh+g5JX2GFW6;R9W=7IJWp&iCIZ`$)~OCt=E1u|FPmn z(YCm4gQeD`wcD}VdE4*oShC}AnM~Q5vhkgMJKJ~Bb`|e>w>x_G)$+yV`}Roe5$+kS z@U7^q)UMoK`KcUOnj^|2b2nxdMyy|H^oYMpCa_o?nH**CwRyZ>IDS6zF(ZhiRy z?178}&l*A-`VTS=HZ>|WmNfoxh<9l8aM0ntCYz?FW|2yBX$#yUY?(R|b>zlT_oJPy z#;tY7O~oGNaI+OykdIubfYJ0m)WPcJ>) z+hyN%>Ws;mL){wP)je`OrDrA17MvBGTXSyqeA@Y!7ve9B_eS?VycmA*R$pM>;3c0+ zS1x;AzS!^5f9{IomF}x{S5IGKTt39vKi{UVSA%%*kSnW z$dZu@H{EYuzQw$C{r0lk!*`b7xpz0}?&!VPdz1H*@4tDF@nGR$-XqMT;>XgD%b%z` zssBa)mt&*WqdjBpV*^ivpFSLCk5B)a{_CfSf@kDs<zxgleeyo#{lZ-F2gMJE zKQcb{&xg%FU&#D~`&99V{vTbReLg=Dr64~X;@dd#$#+Jsj3P$Yqt9m7m@PeJlRuvk z#ptcSmQZ^*qA@wAm1mSXlYDaaDCDp|({{zs+ySy(e#3~BKz~ooBT7|bTO)H+ric>} zcrTCcjStJwf15QOSbbKj!&+PF!qf`s>|i=cl;^IpE-;zK&o4??o2`+vF}t|Ty&zpT zZf7y)N6pfx;L4)iN!;+d+ye~<_a6dH&3dhkb*v4hg<6g*45sXqgMO{b;qdPIlO+b7 zwEQzYeMfRT=>5S%T~|h~-O9(DbND6iX6oZ7C&!*X{B?pgIi=NWU)=r5zj9ppXx=O| z|G-oAlS_&24f%W(%n1%9K|k7cJ%N1rtz}VkSU>E=)K+#51OwPxvsAxbY3{B|$+j-|~r^^KPq zjiZll5z;G;R<4A)(eGdED&4FpcZ(LPpqaaUaLpyH%LFSd0Q-LcNm=KN literal 0 HcmV?d00001 diff --git a/extra/minesweeper/_resources/open0.gif b/extra/minesweeper/_resources/open0.gif new file mode 100644 index 0000000000000000000000000000000000000000..1ae6d3a4d6e8ddb15131923162eed893964b7cc5 GIT binary patch literal 3393 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 bzSzE9q>10m3tPVZjHt73aeie!8d&`U?NF8m literal 0 HcmV?d00001 diff --git a/extra/minesweeper/_resources/open2.gif b/extra/minesweeper/_resources/open2.gif new file mode 100644 index 0000000000000000000000000000000000000000..465aa36d6b8d925f67516cd44027c208ff72bfd1 GIT binary patch literal 3485 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 literal 0 HcmV?d00001 diff --git a/extra/minesweeper/_resources/open3.gif b/extra/minesweeper/_resources/open3.gif new file mode 100644 index 0000000000000000000000000000000000000000..58d96b5583c87aa8f494eea01e526a8c5fcddab5 GIT binary patch literal 3480 zcmbW4c|25WAHbh;W;152Gh{dReJu>a*iFciB~qDY1{20K1_>>a3O6Om7LhAU(XDGq zX_3+*MSH1BULkI2k))dU%=Nz2=l#6*zRT~A=X}ra`TfrGdw$RFIp;Z^bPuWxg9d1z z8i+&)Kw4T_XJ@BSh~Pg&V-Af600T6H1iGthpr?zcg}H?#(ogjA;cydRX#nE60zT3~ zSs4~i!Sw+c-~kp`0Ki}-@_bi#1c{zRcXy>EB1Zpw?85cKeE^B*j)|8)g|eXguUi== zk1qfK@<%)tv)GADgtHKiOA+uy`e}s8>taO=qeaX|0z_Cr#L)|E{D;i~(?raQ=dutR zQOrD6JWIsg2=7WxVk3<5K{z{^!xp9>H+PX6?YN|P4#FQ1CdacGi2$I9BE5jkj6v8O zVIn^$&=ujO0EiKzf8cdLuz)>}VJNM2MiF#-Y4&de+& zCB>A(W}1pJ`c3|$!8gl4habi>6^-{Tc@#Hx6eB54KoMn?nGlzd#HS?k7)&+SzYjhHh<0D7`q)D0i#!*0^dI!Cf%6fB z6FJcok;*kNh{8zAu8kuxkElsAQT2gLeUTxN`lg%?NBaM0F^>jP(AbubQ-z{U4#0e zN6;`d0lkGj!6=vr3(2r5tP7jLRM;8zhJ)bMa5TID-UMgCd*EWY8a@WM!WZEi@I814 zo`h#m07XE_qcl(^C@RVo<%bGKMWOhp&8Qqy5vm&1gz7-`pzffCP*bQmG!{)lQ_v=8 zd$boi7|ld)KyOCpp-a(q=vH($`VM*+J&pc~k-(^6j4*Z>I%Xv%8k2&_#uQ;{F)f(O zn0uH}%m*wME05K~+F-q~Vc7N9G;ALB5Vje60o#uq!Oq}tI7OTh&H?9#W8eh1Y+MQM z816i705^*JC`J%d7qb-e5DORMie-uwi8Y9w6B`g46Pw3N<8|1m<7@C8 z_*?i<{Jgk~xSqI!c#!yd@onP8;!Wb0#RtXT5eNiLf-NC{z#(iU6cbJmt`dd`b3|F9 zA<>l>K};glWItpNuy*eS&vL7uP5h{kCXez({i$M zOXNc2Hp-RBb;=FNqvUnv>GE;%`SK^_@5_H$q`Js?5qr_@MZ%^<1B+%AloenQwJym(CC90QHr_|)tXlm=#3f0c3O{kO99o0GNh3e2|)rrwL zsMDh}tE;CQs=HISO?O;RL65GtNv~0FP+vmdNq>WWwf3mX3r*!seM~b=+e}}XX`6+c?KA5! z`)Y1w9%o)-{=`DoVwpvzMTf;(OG8VhWtrvO#S)7>7H?VHzWB`&qb2Mm6-ypkk*s{J zc3O2=eX+K&=36&ePuOVNMB0?wJfM=P{?t6`Ra=a$i|rQMv$k_~)^-BBlXkD|P3&Xs z8|=rI>Mdn2tywzapy|MHsB#!`q&P-89(EjZ(r{upRXaVWY0+4;TH2Vif%AIjW6rN! z%w6~{EiSXJcCHz&7u-;8o^CmAeeSaE!S1E*&pb3eqCFZtrai4Z(>yPDVZ6M(_IW*^ ztJ0bDdiwM-n`Ifxy1j|sE4)j+pZgg4@O?UbVPD}g-~GOW%XOA>m$&%=Kf2$3zo-6s z{u}(y1YiUF1Ihwk1X={92llKWtysIFVa10am!SNhC&Bu`Nx@wqQXvr`^&zvNZlMLC zLo3ZzW~{ssrWD2rYY)eThlJOL&#ZD^bzs$KgjGa##QoKJt2eH`wnk}9+?vj{QfnD& zPeo!PLn9j^KQsIo)r^^S^mXOyrkSqHgUm@5jaA5+U^}o2*ke%+Q3X-s(GJo3qbFjV zVv1s>IIf&h&YSgK>nqpK#`?t`jTOd)#x=)_#Ye`U=E`zox!nnB2^$moc}Bc!-p~fS z4F@(%^S$}CiBRI|#C8E0IaT#0=_l<-8cuc;CYL3DObJOjwNYjxcVlm=Ve0PGu}vPE zeojNDG1I!zHPW}G4`(=MRBeVfuiMC3myuh@&-%iVi_pVPj&0-1tM1ta@?_qP^O3UdnIA6R?fTG5iC%7fwulMW6Q z`xLjAXqW6Q`CJ-Pdaul-thrpJe0TZmA=aUR3R*=|rD|nv<)_1(!w;)Gt6HmdtBa0c zk0c*?Q4>^em~)%2^*ujMVImYi0oHMMoREv9X#J*>U|^s>`k z9rhh9XH3r=J*#oHtW&Nt|D5=_taHNio6gT%;9Z!y7=3Z1Yi-w)ODiwk?GEVfyX<}W z>J^VGmwKFg&R=!7diI*#wbR$B*V}Gb-)QZ%>TS7cb+e_cQw}B1agTOdmS4p7 z14;*rOIC4hG6Fb-rd6p&4p*^iOllkJGn%cN>P|JZEUrB&C{eCB+gTJ-exQJM%;$>g zUi<4Ry>@*|uF?mTZlAc6d$+VBs$1>ZZ#xIOo$M$+Kr> kE?PYNx(5>%$fekBw*;EnfxIf(&NUQ|!iV{qyU@V??>bG9&;S4c literal 0 HcmV?d00001 diff --git a/extra/minesweeper/_resources/open4.gif b/extra/minesweeper/_resources/open4.gif new file mode 100644 index 0000000000000000000000000000000000000000..ae123dcd1b586711b11980727a20c1958e15b6f2 GIT binary patch literal 3506 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 K(KUmB%|8H9sHM*U literal 0 HcmV?d00001 diff --git a/extra/minesweeper/_resources/open5.gif b/extra/minesweeper/_resources/open5.gif new file mode 100644 index 0000000000000000000000000000000000000000..e93896718cf427b0f02bca8d5f426848e64697bb GIT binary patch literal 3479 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Ξ$`CJ#7D*FB}ft`5?&Iq5_uBGC9X@% zNa7?lC7mUil39{RCA%djNhp#U$&th$Z70=`dP!4cELn?8BS(>Q$tTGJ)5JQ{*e;d*xp(Auq96!dQ~C8izx6t(G80|OeGx}z1 zZX9D=WBkZO(qyH{Hj@sMKTUN_8Kz~XcbAGRby>Q3Y5UT*W_o5UvkJ5O<|K1Z^PT2h z=3gx=Ew~nq7SAo!EyFC!Ek~(jsy8){dd&)BwZdw%)dj0h))v-0>oeAGYz%CoZI0W_ zEYn)XT2`}c(pJ@$Zd+wLzMQf=Z26Jp<8~@`bh~Q1r}k?0O#52 zAfup7K{tctgW19DA-Ir$klK*>HO^}eu9*ro56uo8S*x`+b?xj%Pha00 zh6xJ{J0A9h?nSSr&u^e@DBm#4aAX`}yky!l3z^SZwyXlybhvGJLHJCBZN!0y=aF`i zMUk)Aj_gwQ+bFlF%BT;~UeU**`7wbpO|e3;VX@~plALHxPn=R*YTQt~UVL`^c!G7p z!Gu|^JGV9wN?e=R&LbnYs{SPHq#a2U$;R?%p_^=92bX zIy#+^-j$(}u{C32lf$N}Oek|hX4hu5%~_kLwzzJo+e+9Pz4g{M<81}o-fa)u-jSu4 zwIyqEhwF}pY|(6P_UKNVot3-LyV$!1b}!vsvin;OGv`LGac)uWmpn$^jXfrNiudsM zhVLE7x5%&9huz27H?rSue_eq@L0ZA&0nY=ig_Oda!gmMPAG}^wj0t1A&#CcD;mJ?akXzT4x|Gtlead+n;r z)$TrrzDw6^uU)uqef``G>W#LW7B^e_&HGz!ncr#|uo!3^v>a@|ZFRe2XxY%kVY}fg zcbx8Ay-T}$^WLg^LnEt4?vI9!j^AhApLr1T;O)cYhYOFkjA6!d9*aLNdZO^8`gfh* zo5n51J13kb`k(qeeKg6KeEE;We|(wBdM5I$Xj*x?e#Ug>g8y@u=eJ+1c`@}e{^i1} z>^~&_D1WW}`s^F~H~q6gvr})mZ~1@b&B@IjduR5pYuuJLdqB1m*THFUpv0Je;eb+BL5tM+c@&cw@0pweC>|0Z^k!h4V~PXTj%*<+L<>Z zE9!!4W6~Qr`f;-{&GRSoKfO-xtc({|_?+XSC`pdAuDo4$wj?C2_WrA8T{rfnAVY%3 z-W<=Vvvc~s=O1{q$$#5F=ra;0SvdNdwl+3%v*M=UtQ}ib(sr5UB<$QHpG_}t%1_!} zP?)@*7kD^~T70A`&!|SRmYG_w&~QSxamlIEs^u*QRoc(_E^C%Qrq#7Yt>+iwZC~Q_rdO=(L2Kr$Nluj_D*$PY~i$25n0G(Vn xS2+^3Cu*o+hm?Dr_!DZ~skPm5MCE`3k@0f9yJZ$w=ynNQNMDw+r#b*O{{-Cwoi_jg literal 0 HcmV?d00001 diff --git a/extra/minesweeper/_resources/open7.gif b/extra/minesweeper/_resources/open7.gif new file mode 100644 index 0000000000000000000000000000000000000000..5618e641a94446f619b2c48c1e1e5ede525f77ff GIT binary patch literal 3465 zcmbW4c|4Tg8oCN@dC1cj|tsdq4O0`+e?x{&+v%^PJ~-&vTyhob#U7neIe253vQd zpbQ8kB_*Y$rG?Mue{22gp*(}e1Aqp~d=Wa0=Iw0nY;0s~f|w9o+}NBLSR8<84v&j; zP*w*7QgB@W26%u4#sGvc;$q!>oO}guqC3(kafs2cuLj`L0DuIVhx#s_6w1H%{cTHv z5zFNP0C^&oOPH)U2ErK#MgKGNYLSZbNuiLOcs$lpDgC32YWW5oz=x4YjEFXg0!M5GF^nLgJ8I5d?Z3ixG~n z5yAwnuQv_hWdH~f!hYcmzc7!r2?-PcT1;#bmmL<)qi8X-DaIBSREi5LF^a|G>3fDS zB15=L3N0o&HiVM|!1qZDynv)2xfCSJX2up~X8I-uNdAAwUv~bm`fCs@?stn1UH}r5 z2qfM4Q~A^Rr!EF5E9x|ooP9ra8x8}|xB~#0CqH#+#{dw^0HC4!mkCJ=DkhxAi?uW~ zOiWBPV6zwof{gxuQdL>^aY;Zcl0;<@qlv? zgyYy@6oHE7?Mq?Aa}xwCI9d?F0AU~o$Uqh-0#%>|^nnR52Uf_@_o!FkXKu7Dfh7Ptop z4kAJ%NET9p)FEBS1foLAAxFp!@`eJSU?>dYK=IIKXgib*Xefca!t0oH&GVJd6~yTZQkS~v{e2q(iC@LsqOE`v|Q4e$;49^4O) zz^~zH6hMifq*2N!eH0Z%LwTSAQK2X;bd{TIBT2-E(FKJW#SIw zPUEiOdU0d8FG3 zBteHjBLorR33~~r2-gXZ2_J|=q6X2H7)az1_Y$j!H;K=PUqnfw2BLIPrf8aIv1o&6 zujpGbyqLO}o!C0DWU&IV3u4`3Z^ZH98saqZ5b;#;V)0AjgW}T?Bne{)4~b}r9Eoa) zI}#I;I7tmjM@gn+hU5v!o06j>6iJmtBQZ$ZN#&$=(ij;_)+E!(5#((08FCkSN=i~{ zsg$48CaGen7O4?wl(dF4T{=oSSNgp4fb{Glg++FYSc`Tq;@2+fUG!OIv5c(@OD0RE zPNrXGR+b{`C>treU$#;9sT^8PN6t$wQLaR;UGB|d@?xvSjKx`t&o6!=56kPwd&{TD zpOEjApH@&*a8`&_IIM6};fDo>S3OS*4P$Qm67%Ralj(8mgMF+NwIGrljVswpp!4?TI>GovI$L zen`DT{j-LqhQG#6jYf?LO&LwPX0m3D=CBq~%SLOXR+(0xHddRe9jSd(`+*LuW2zIb zQ>@di3+tNcvUQK@_UK{sEc7^fWqO191bsXG1pONQ=X?Wc12=S<{jiQXojfRXRjaL|_8#f#OVWMNgFex_aTS8pov?Ogw(~|c~b(gZ1mMnc_N-}jf z-D%ot`qj+bjB8eFHfgSA9&CQZe2_|}dQx+!w=FOh_7-UtS1e{M%`ADA=Pln^>03ow zRa;Fg(_F?{R=#Z1TE#lV`ndJTa?0}H<;Rwf*eKhC*p%74uvN8X+E&<(+iBZH*qyd} zYj0%FwXe7TOtYkIpYUayQu zkgh;y(5vWEE6i7HS<&W7aP@I5a(&^ZNqB5-<*wrt(%oMZ`=HQi`|yvsZi>M)YdfBw2ZW|t^{!Ef&Di7EAu4slJiCnxF2Z9r{rhle>}MU;GKe{1*M0C55*rE zDRe7rI;?hh-{JY9@S^@=`{KGI@<(682i|xnYBukxK8%wkq?gs%pM`b#4t@6JIlVI_UI+GY)5( zYV~W6*Gbo9p9N>*&%Qbrd~V>p>-p9T)C;v2)h`~YC)H;)Kn+O^Q;p$`BTWHKJ(pHo zYHhY^uD@(>`P3EVE5$8RExA{PuV!53UrW9=eLeR2n;T&_MqAgn4&7XRv#-sot*hO& z{q`-VTQ@uGIAyuYYBK&%mmIM}t9wBafJmCLTvUe*Yxl$=uM^Va#yWQ}L$-&*Yz# z{igj}-H6#p%X5e4oiBV|42?2IU;iWSAM;}wFNrS;#+AmaCQK%-_)a=aK6tg})!6IU z*K=<&f0y|E$Xl(q7vI^w>zrCWHTItSp8rSA2iXs&J}&*(I_)|A>{IloxzAZ&WWQ9- zP-i-3{b$GL66bOAgM1Tio8_e74ZU(=&EtF3!%`lj5W0YLmM! z^N`9xtD@r6!@Kg2C6|=$sZc&*R#jc@bcRx6a_)SceZ5-a@=MJp%k(ekw_H7Y{l;bU zw)Uou+q8R~SGu|j`uZOpFmKi9X&87ibjRS?Z$}3WhSx#&_F{>WV*NndN_NSo0(f6CL~WE9zO||1t5{1DnvTy zi^Ia{xPAZwJir2T09fo4f$t*sAjzAUZZ7l`#OT*o1MuNCfFzn5#-9Fk`oH)6ZA*?V z5T*hE`6HH=9Bv95;T(h$(o+Qz{RG0)#ug?>{(s0{cK)#XYmhANcZ+uc0Fsml zMC<#h{OSBtmxPoRV-iWuwx7D?WdO8q06_8HPn~uR05UlMv<>_+A)2IOVpCHEcBZE3 z>FFjsF55(s(I4`+20twS9DW(kL^9rw@wYPm zb&LFOp8q|VUjmsE$c^R-xqM`-5FR(3$B#i4oX_E<@{;&;9{NwLKpz+b3t$86k)z2CcmY2U1j4{Fzy`4( z5ePv#SOu~`F31Plz)nyOszE(y0xjSOXa}djIdBnN1=qnXa373-G4K*hfDd2_f*>43 zhA5B{qz>soMvw)>faXJPkPj3Hg+WnJ48(^-&?;y>ln)g_K(ad zdJK(2e?VVg6ikA}R9F?(g-u}w>;!wmLGV&I22O@o!a49(xD>8~55R5kIru7k3m$=A z!jmX~BBE$04U{p8fpS6lp~6woC?RSMDi2kHszbG)I#Io-8>kV~E7WH+7EM9Z(Z**Fq8@dO51N|61fu6yTF)A1%j2(uFS&WInq+@b1C71@xam)qG zEzB6^0~U*=VfC;!SWj#iHV&JKEx_)^wqnm>2eG5rNgNKRgfqf9;QVkbTq-UXSB5)) zJA)g-jp05?5vA0nETr6}!ln39*-|A^`=w4x4M{zdn!?NCb?|n0KRic_&%hVr>+zlV z0sI(#iXcbOBRCL(2yuigLMfqzaDniE@Qz3%Y7%XU0Yn~g9kG;nh;+rko0RA zyo`>Flgu)il`YM z7bUuqn^L^ecBOWuhstPWL*)SFbmc1L3(Bu%Q)k=HX3x%>ePs4M6MJ#xnxk5rTCv(`wQ+Td`h0bsda?Q$^%rynx)VKtUP|wwPiUxU zcxs3=YBl;brZn|5gEg}?TQwhQ5wsXu(OSh?-C7gc>e{~AtF)W7@9E%m7&@^!yL5VW zKI-b}hU#wAZP$ISr>Mu&TdCKq_duVlzd%1(zfS+A0oH(F5O1*C;JP7fXk{2{SYbF| z1RGf!@r-sG4bH*Lv7N)8Q#WVWm}Kl^oMzl?{8(&4Gx0IWHfc9`ZK`b=Zo1vH*L23r z$}GXG-t4})yt$Wowt1)d9~OodY>Ntuo0eotcgwYw9hPtB8qMX-t(tqsielw!wb82E z>Z`Slwa~i7dfZ0aCd#JLW|%=`_%jL^muxY%&bDi9PuYI9v$jjMJ7V|7-q=3ge!u^Xlh~I%qnu9BLg#=F{g#&99k1vOr@2YeC(DCyrW<9LEO7XHEuAaZU%EUOSsP z3!RTUe{`{PS?zMx73J#Tn&;Z@Chr#PR_^x5UDG|rz1e-j!^$JmA46S3i$X^h zn=W3x_-dGP7%!|N92XuE-Vi>y#BIsWC1Vj*5xEh!m+CEDvGnpXJh zFj1jV`=h2=eylpyjMR4Q_->J#aUHi#al%@?OtqYxS$0wO`}LvgJ9AWX z*5! zJgpC@@7>GT+ti@kkl*liAAjFSV_;)XlTB08ezD5_!e+Qx)I5G5;=uKTt_M3>j9Y43 zX|4H(z#-A07l)$`-#+4fr28o2Xv;C3W0l7#$Mf2twv4uk_Sp83j(b=T+F%A?#S-@=NF&9*%Q#yf5H30rHk$t z&-Xg@p1I_3>C|Pr%O|cduC!mZzS`Dj)pz`w)wSdO*8Ob*HUk~kZLfC@&Ko>Ev|#Am z4c8kNZ!&LQy|wVx;O*escZMT|NA7U$JinW8_wBv3dsFw3Zz?xbMlLC-+C$qc8uF@{j4UoTuccCC}8KH9fa@eky3(ef;{1B`?Na3SLgV z%KcsL_sZA$uaCWPeA73vcw+3W@U8fdf_F;q_Pw9`zI)Pt^3jLH4^toWJ}G@_{LJ{= z`z7?tv#IoH+;r(zgRh-4-ZKxxiO6q<j!;m=8$NH{uqu<-Ni%&uyGS(Pt&?yB-RwZ}@%HdtcDJdJOH7c1|^1wSxR zRH5b9a1Gwf_Ocm%=@arO+ER}(eRttd=6HItT*kW9*|It7GdId?-jrWJ-YU)JY)RQA zFy-g%tf(wnR$3E0cU5LRF>FtL^V+6;q60N8C5H~@w$-*4SBZ947j8RqwzKO<t-vZO>* zT0}&viX>WorA3=+?mKlq)xDql``ypI&mZsSd!F+=?|II1o^#&wdU&}rteK9$5mW$) zq@|^`wzi7J;_t10J~Td|2>_shhM45#;u7fL>|t(ZZh@GPJ$<>nL|6uZ1fEcUbkG-u zN6>LS00snr1?B)SSxNl)LGHnlH+i|a(323O-(L;D`Ngg0Rw97{;F8E+CE&)y3hDYR1G>454TJ8|F{B7q?tG@@y;{LFB8vr0li9ib7 zzm&h6f9VpDvSLgj$=Uu(7qu6FrcD4S-uY>2G$kd) zgv()>NHY3U{;R=H%fE)-#xs$O_cM8PS57oj6fdMpvdT(~PZSC0Nqi=YLpT0j#=mco z|IPD12lHDXvjREM907-ij1|h|q;PpL$b$3OTp>4+N9XeXYK{L-w|@%(5uqOZ z258GnfJ`q9p#JOzXetSy7MCJDkYwS0%-@#~3M9KPOnv-E=}SC+?C9_G^8x1}2q$r4 z=n|DnU@)B}5+qAlabrT97KVr zkP@U0=|D!11;l{nL2i&Q6bOYwkx&f8gGA73Xd{#ZYAq@oRe-8M)uCEYU8ozVVblxMCo~pKMbpv7Xgjng zIt0x^uRyOw=c0?yRp>_adGrnR2znCz4MV}GV2m)f7%$91ObjLklZh$7RAL%17chgE zG0b}`7OQ~O!&+lKvEkU|*feY|b|1DL+m7wSj$)^9IGhsB2xpJ;!!dC}TqbTW?g*|8 z*N+>+eZ-US>UayhJ3a!>!>8j5@HP0e_`3o{0M9@VHF{daFEbK=p~F1 zrirpdJ)%7^n7Ev{fmleaBVHg55#N$XBu$bHDS*T!ttSnEEan=4x*ds%iu4kxE8 z=O)LN%aA)D*C{tjMNze=E>sqEBlRHl0(FdrrRmYUXv=9iw4<~h+N8Xk{2cjE`IYj; z@~!g23Md6#1uunog*=7h3O5x#&rqG=G=noEYlgUPM*oZtiZc}*6*-F8iuHlE9JsQ)RdYU1c>6-PL_qB*x46SIbU0NMlliKRq^R-uN*J|I@A?Pr4Vs-ZDbm@H1 z)zb~r-K^WBJE5nj=cSjbSF1OqPtkYKU!h;2KVX10U>L+1>@&D-2pd`&#u^qI_8P%P zRz_T-eMWt=FtcoC@n%)bx@Al@b}~*jt~DMJn<$w0nxvaFnY=XBHjOadVcKQ-&CJp) z-t3^+J##s8Z}W8X7V|e2h88S~VvB*w344jrb9dUZ;Z00O* zZgBqKV(YTTrQH?f>fxI0+T$kY7UEXq_P|}!J;uG(ebU3yBh91T6XWUQxx@38m#P=b ztJ-VQ+uD1L_jw<(PmoWM&m&($Ux9DSe0aXtd;ZS(Lkn~k@D?=r0Y5LloqqTI_54@( zpANtV_y-gRJP9-pTpidIL=9RNR1@?**f}^a_+E&9h$y5ZR62BVXm#j^FxRmBu;GQK z3)d{X8m=794R4OXMTACFMocYoTeN%8*ka4YnTu~O(Oa@|$>pWWOXHWeE|XryTy`Q7 z6B!m+6ZwVd$E;vZMR`S)L`||>SbJE{*^ca8?57-iPCjQm+CDlzdLqU?W@pUPSclkx z*cV(EZV~tOa?j;u%Rj{V#T||l$A`t&C*Ttz6Hf8ucyYY*iE4=}6Z`l^{7nAv3fmRC zS4;|g1eHlp(vqZRAq}}zb&K>xn?xhY^Tf%;$sbcfQ%vx{P&W>pj+2Z6I!l+i)%2EImK{-NvwuEg7mA z>oZ0-d2Fi9l*$xj-r8)pxoiu13wKLT*6ggkS>LkR*;jJRatd<3~`Mvn>!qKROQR&r{<6DoWHYi7kyXuu6Mha?Y>+vr=V;PagS)vaG`Hu z^Iq+}+xLDciY*!}b}p_jQ7OqP`LK_@ufNo>w609GET`=Ae(wI;_a%E2C*TcNS!&QM*=c}!&t82t6HF>pgt*G|tk;O-@A9X$2TxVQY zUawG}a||349eegiEA#+9b4R#zLlExQ}8Szc@CvFd5;weD@cZgah*Z*Je&euw^Z zH(YOA9Pk>rI=Eo4?`Fu&+qV|q8otfGJ#i=g&g;9$cc<^IAHob}-

x@Id83#Y2OK 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 literal 0 HcmV?d00001 diff --git a/extra/minesweeper/_resources/smileylost.gif b/extra/minesweeper/_resources/smileylost.gif new file mode 100644 index 0000000000000000000000000000000000000000..53ecfae8c5cc3c9603a6c6e288ff77dc98f86a9d GIT binary patch literal 4074 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 Qe#dAmcB9srG7!MzAN|nDxc~qF literal 0 HcmV?d00001 diff --git a/extra/minesweeper/_resources/smileyuhoh.gif b/extra/minesweeper/_resources/smileyuhoh.gif new file mode 100644 index 0000000000000000000000000000000000000000..06ab22615bb6fc7f0b291e59f93d572dc45a77b3 GIT binary patch literal 4228 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 TOhcn*64sa3pC%_20buYCO*s=Q literal 0 HcmV?d00001 diff --git a/extra/minesweeper/_resources/smileywon.gif b/extra/minesweeper/_resources/smileywon.gif new file mode 100644 index 0000000000000000000000000000000000000000..738575d3fcb7fb76c644405f138cbb9208168f09 GIT binary patch literal 4113 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 FKL9Gg-Vgu) literal 0 HcmV?d00001 diff --git a/extra/minesweeper/authors.txt b/extra/minesweeper/authors.txt new file mode 100644 index 0000000000..e091bb8164 --- /dev/null +++ b/extra/minesweeper/authors.txt @@ -0,0 +1 @@ +John Benediktsson diff --git a/extra/minesweeper/minesweeper.factor b/extra/minesweeper/minesweeper.factor new file mode 100644 index 0000000000..c44df91f1b --- /dev/null +++ b/extra/minesweeper/minesweeper.factor @@ -0,0 +1,299 @@ +! Copyright (C) 2017 John Benediktsson +! See http://factorcode.org/license.txt for BSD license + +USING: accessors arrays assocs calendar colors.constants +combinators combinators.short-circuit destructors formatting fry +images.loader kernel locals math math.order math.parser +namespaces opengl opengl.textures random sequences timers ui +ui.commands ui.gadgets ui.gadgets.toolbar ui.gadgets.tracks +ui.gadgets.worlds ui.gestures ui.pens.solid ui.render words ; + +IN: minesweeper + +CONSTANT: neighbors { + { -1 -1 } { -1 0 } { -1 1 } + { 0 -1 } { 0 1 } + { 1 -1 } { 1 0 } { 1 1 } +} + +SYMBOLS: +flagged+ +question+ +clicked+ ; + +TUPLE: cell #adjacent mined? state ; + +: make-cells ( rows cols -- cells ) + '[ _ [ cell new ] replicate ] replicate ; + +:: cell-at ( cells row col -- cell/f ) + row cells ?nth [ col swap ?nth ] [ f ] if* ; + +: cells-dim ( cells -- rows cols ) + [ length ] [ first length ] bi ; + +: unmined-cell ( cells -- cell ) + f [ dup mined?>> ] [ drop dup random random ] do while nip ; + +: #mines ( cells -- n ) + [ [ mined?>> ] count ] map-sum ; + +: #flagged ( cells -- n ) + [ [ state>> +flagged+ = ] count ] map-sum ; + +: #mines-remaining ( cells -- n ) + [ #mines ] [ #flagged ] bi - ; + +: place-mines ( cells n -- cells ) + [ dup unmined-cell t >>mined? drop ] times ; + +: adjacent-mines ( cells row col -- #mines ) + neighbors [ + first2 [ + ] bi-curry@ bi* cell-at + [ mined?>> ] [ f ] if* + ] with with with count ; + +:: each-cell ( ... cells quot: ( ... row col cell -- ... ) -- ... ) + cells [| row | + [| cell col | row col cell quot call ] each-index + ] each-index ; inline + +:: update-counts ( cells -- cells ) + cells [| row col cell | + cells row col adjacent-mines cell #adjacent<< + ] each-cell cells ; + +: reset-cells ( cells -- cells ) + [ cells-dim make-cells ] [ #mines place-mines ] bi update-counts ; + +: won? ( cells -- ? ) + [ [ { [ state>> +clicked+ = ] [ mined?>> ] } 1|| ] all? ] all? ; + +: lost? ( cells -- ? ) + [ [ { [ state>> +clicked+ = ] [ mined?>> ] } 1&& ] any? ] any? ; + +: game-over? ( cells -- ? ) + { [ lost? ] [ won? ] } 1|| ; + +: new-game? ( cells -- ? ) + [ [ state>> +clicked+ = ] any? ] any? not ; + +DEFER: click-cell-at + +:: click-cells-around ( cells row col -- ) + neighbors [ + first2 [ row + ] [ col + ] bi* :> ( row' col' ) + cells row' col' cell-at [ + { [ mined?>> ] [ state>> +question+ = ] } 1|| [ + cells row' col' click-cell-at drop + ] unless + ] when* + ] each ; + +:: click-cell-at ( cells row col -- ? ) + cells row col cell-at [ + cells new-game? [ + ! first click shouldn't be a mine + dup mined?>> [ + cells unmined-cell t >>mined? drop f >>mined? + cells update-counts drop + ] when + ] when + dup state>> { +clicked+ +flagged+ } member? [ drop f ] [ + +clicked+ >>state + { [ mined?>> not ] [ #adjacent>> 0 = ] } 1&& [ + cells row col click-cells-around + ] when t + ] if + ] [ f ] if* ; + +:: mark-cell-at ( cells row col -- ? ) + cells row col cell-at [ + dup state>> { + { +clicked+ [ +clicked+ ] } + { +flagged+ [ +question+ ] } + { +question+ [ f ] } + { f [ +flagged+ ] } + } case >>state drop t + ] [ f ] if* ; + +TUPLE: grid-gadget < gadget cells timer textures start end ; + +:: ( rows cols mines -- gadget ) + grid-gadget new + rows cols make-cells + mines place-mines update-counts >>cells + H{ } clone >>textures + dup '[ _ relayout-1 ] f 1 seconds >>timer + COLOR: gray >>interior ; + +M: grid-gadget graft* + [ timer>> start-timer ] [ call-next-method ] bi ; + +M: grid-gadget ungraft* + [ + dup find-gl-context + [ values dispose-each H{ } clone ] change-textures + timer>> stop-timer + ] [ call-next-method ] bi ; + +M: grid-gadget pref-dim* + cells>> cells-dim [ 32 * ] bi@ swap 58 + 2array ; + +:: cell-image-path ( cell game-over? -- image-path ) + game-over? cell mined?>> and [ + cell state>> +clicked+ = "mineclicked.gif" "mine.gif" ? + ] [ + cell state>> + { + { +question+ [ "question.gif" ] } + { +flagged+ [ game-over? "misflagged.gif" "flagged.gif" ? ] } + { +clicked+ [ + cell mined?>> [ + "mine.gif" + ] [ + cell #adjacent>> 0 or number>string + "open" ".gif" surround + ] if ] } + { f [ "blank.gif" ] } + } case + ] if "vocab:minesweeper/_resources/" prepend ; + +: digit-image-path ( ch -- image-path ) + "vocab:minesweeper/_resources/digit%c.gif" sprintf ; + +:: smiley-image-path ( won? lost? clicking? -- image-path ) + { + { [ lost? ] [ "vocab:minesweeper/_resources/smileylost.gif" ] } + { [ won? ] [ "vocab:minesweeper/_resources/smileywon.gif" ] } + { [ clicking? ] [ "vocab:minesweeper/_resources/smileyuhoh.gif" ] } + [ "vocab:minesweeper/_resources/smiley.gif" ] + } cond ; + +: cached-texture ( path gadget -- texture ) + textures>> [ load-image { 0 0 } ] cache ; + +:: draw-mines ( n gadget -- ) + n "%03d" sprintf [ + 26 * 3 + 6 2array [ + digit-image-path gadget cached-texture + { 26 46 } swap draw-scaled-texture + ] with-translation + ] each-index ; + +:: draw-smiley ( gadget -- ) + gadget pref-dim first :> width + width 2/ 26 - 3 2array [ + gadget cells>> won? + gadget cells>> lost? + hand-buttons get-global empty? not + gadget hand-click-rel second 58 >= and + smiley-image-path + gadget cached-texture { 52 52 } swap draw-scaled-texture + ] with-translation ; + +:: draw-timer ( n gadget -- ) + gadget pref-dim first :> width + n "%03d" sprintf [ + 3 swap - 26 * width swap - 3 - 6 2array [ + digit-image-path gadget cached-texture + { 26 46 } swap draw-scaled-texture + ] with-translation + ] each-index ; + +:: draw-cells ( gadget -- ) + gadget cells>> game-over? :> game-over? + gadget cells>> [| row col cell | + col row [ 32 * ] bi@ 58 + 2array [ + cell game-over? cell-image-path + gadget cached-texture + { 32 32 } swap draw-scaled-texture + ] with-translation + ] each-cell ; + +:: elapsed-time ( gadget -- n ) + gadget start>> [ + gadget end>> now or swap time- duration>seconds + ] [ 0 ] if* ; + +M: grid-gadget draw-gadget* + { + [ cells>> #mines-remaining ] + [ draw-mines ] + [ draw-smiley ] + [ elapsed-time ] + [ draw-timer ] + [ draw-cells ] + } cleave ; + +:: on-click ( gadget -- ) + gadget hand-rel first2 :> ( w h ) + h 58 < [ + h 3 55 between? + gadget pref-dim first 2/ w - abs 26 < and [ + gadget [ reset-cells ] change-cells + f >>start f >>end relayout-1 + ] when + ] [ + h 58 - w [ 32 /i ] bi@ :> ( row col ) + gadget cells>> :> cells + cells game-over? [ + cells row col click-cell-at [ + gadget start>> [ now gadget start<< ] unless + cells game-over? [ now gadget end<< ] when + gadget relayout-1 + ] when + ] unless + ] if ; + +:: on-mark ( gadget -- ) + gadget hand-rel first2 :> ( w h ) + h 58 >= [ + h 58 - w [ 32 /i ] bi@ :> ( row col ) + gadget cells>> :> cells + cells game-over? [ + cells row col mark-cell-at [ + gadget start>> [ now gadget start<< ] unless + cells game-over? [ now gadget end<< ] when + gadget relayout-1 + ] when + ] unless + ] when ; + +: new-game ( gadget rows cols mines -- ) + [ make-cells ] dip place-mines update-counts >>cells + f >>start f >>end relayout-window ; + +: com-easy ( gadget -- ) 7 7 10 new-game ; + +: com-medium ( gadget -- ) 15 15 40 new-game ; + +: com-hard ( gadget -- ) 15 30 99 new-game ; + +grid-gadget "toolbar" f { + { T{ key-down { sym "1" } } com-easy } + { T{ key-down { sym "2" } } com-medium } + { T{ key-down { sym "3" } } com-hard } +} define-command-map + +grid-gadget "gestures" [ + { + { T{ button-down { # 1 } } [ relayout-1 ] } + { T{ button-up { # 1 } } [ on-click ] } + { T{ button-up { # 3 } } [ on-mark ] } + { T{ key-down { sym " " } } [ on-mark ] } + } assoc-union +] change-word-prop + +TUPLE: minesweeper-gadget < track ; + +: ( -- gadget ) + vertical minesweeper-gadget new-track + 7 7 10 + [ format-toolbar f track-add ] + [ 1 track-add ] bi ; + +M: minesweeper-gadget focusable-child* children>> second ; + +MAIN-WINDOW: run-minesweeper { + { title "Minesweeper" } + { window-controls + { normal-title-bar close-button minimize-button } } + } >>gadgets ; diff --git a/extra/minesweeper/resources.txt b/extra/minesweeper/resources.txt new file mode 100644 index 0000000000..fcacd6e132 --- /dev/null +++ b/extra/minesweeper/resources.txt @@ -0,0 +1 @@ +_resources diff --git a/extra/minesweeper/summary.txt b/extra/minesweeper/summary.txt new file mode 100644 index 0000000000..a790673721 --- /dev/null +++ b/extra/minesweeper/summary.txt @@ -0,0 +1 @@ +Minesweeper game diff --git a/extra/minesweeper/tags.txt b/extra/minesweeper/tags.txt new file mode 100644 index 0000000000..cb5fc203e1 --- /dev/null +++ b/extra/minesweeper/tags.txt @@ -0,0 +1 @@ +demos -- 2.34.1