From dd6cfe85cdcdaea6e338e29e17f7190f643c64f7 Mon Sep 17 00:00:00 2001 From: Jeremy Penner Date: Wed, 27 Sep 2023 19:40:50 -0400 Subject: [PATCH] difficulty menu, in-game quit menu --- swine.com | Bin 4926 -> 5303 bytes swine.jrt | 91 ++++++++++++++++++++++++++++++++++-------------------- 2 files changed, 57 insertions(+), 34 deletions(-) diff --git a/swine.com b/swine.com index 366ff19ed25d0f915856b0f75b7082b4400a5f23..a9aaf5df072976375479fa57a04d5a119e8220ed 100755 GIT binary patch delta 2757 zcmYjTeQXrh5#M>cdv|;Ly|;HHZE99Z8XOlA8xm7R&;a2GCgG#;5yCZYat;SLbvW>y zOF}^jsLQRFzMxiunWG<}`mSUtdhnos{r9`P5D@Bx6Y7$uyQPHJ;ptv({ z?;LFH-S5r&&AfTPnfLZ4?>>Lec#Fu+rr-3$>(Z*#Ahm+f3vnf-%!vD;7o-K0QpQ9{ znPX%n9B<%Gr3#NJp7Lf#q5?Zzp%pZIS}@9FazuO^pVKU-l(`>SPP6jDIHw$8WP6>} zf#Qachm~R-$mPveJH_KWJ3w^ zf19@DhX7Gj(#9Bo*mb;x^6Y{L~1 zwIW;+K}5?M=gZ&0k^hbg>^K9qnKhB$z+{iCz?wE6nN2HU zny-V8!uV`0;{AY?L16_HcD*(twqvS!tq0a<6A4Oky*76$u559^pt1ZFp%_d04cN%^n z`jLWPV)Rq0Uxgdm1k&m-o2Y@HN5MlFN6Q2fb)FuT>iJtVdJlcZ#1N?4>Of_`gLmC!y;+tTyo%lw|Eiu`I488yYpAS0q0ZryV9>%> zup%{JMx+6?@i;bT#<-@};5Orm)~lb;Y0uFNh3quiP^V8(xo>l?Rxp*M1Tj%aw8CGE zUdS3FVj1g4Zh7c3K9LCZAo_qKpA>5j0uXP((k)nCzz-S}jt*RxL7D#<*F9|1;5-kQ zHKuW?A-G_~C0Q^zk_=riOtOKYi*bXHD9dtO?uBJODi*>?BZMk|89+OhuLf~*3QOq; z7i7xzX(Ir=f%_28HSi$fa}69-pb8J0i_o_QS@S;z`O=xJ!VXh4Yp~P2(%=3!13W$Lsa;lV$`hPY@knXZXjEraF;p4PDWB>z4npX6c5^G1w%vnq9W&GLLQ|!A4~)@*ENUh!Wk{csE#dgI8g>E!fjy4eqz2<|mgj%h(i- zFtu9FUWEI4!fxjLp7eoq1D8F@%Yf1f0Vu+Aa+{pT{ZQm8{K^ht9X@&6XNP298+^G2 zFW@54GESl;5yGPh3jc7{YB*MB;BJZ$sxWQlhBIa+!+m3t)**hhwqN;Nki=gIRXCV>UHU}2 zgcUsl2U0t?ZufR<-GV{CCag^9obl__Ib?*Kaf~w_+uEH&%I!#@MShRd6F43CAmM6s z4PCcSrPy1kjPm!?<<#TF%HY60uTt{%6rL~Q3({)b#@`+6tB|?USLr7^{Z{!b^#%{R z*t*T3;GVMG=(4V-#+-krqH+uFVrz5C<1e9c?SIH_h3*|)Te6Ju2dN4N8sfK2YO3;OM8Uw(!u_cx2bUGkg&eAkCMKWoW`F~)8b@u+7~lCE7GgE z{vTZNLwCwer0ed=^f&P=Q!$#)33oqa3*{F*`fK$%+F$5sUy5H|`C#9^qIVC5k4mhe zON&7C&81z%fkLH-^yNrjzSLW>K=(PHP9yPGasI}_z^+F46%oI4fsb^m9hJ7r3cyAu z5gVn&J<|{`mzIXp8TXgzKe@k2Kj6Na&L}9%K*f863c0>-_wK%D2m3283c0<-=Zj@m Upo(JD)zWz4WodtUHNNWp5BtC63jhEB delta 2458 zcmYjTYitx%6rOWucDu9lo~b6Jv{@RUR9-ceYS9W+T6va75oD7lP^h&aRJ$!PNEk4o zq#z~@Y}Ta4h7exXXxVBI649cYh7dYdLo7s%5=i6`5UI-_5VMc8VL2E$)-Fkz613jjUrR-5+(UA>suOX1ve~A16l@h9}Rbk zCvbJMayiCGiYVPIHo7mDI~dV=SQ_ZugD5;Nrh%j$F%40cLR>`A(E4K7T>_(bl7u-587r4P_%i&6C81G? z081qJbuTq>duj&cHl&75)k*;X9>2oQ4uq zoI(}!A(1%@Se&nA?3Ci;G2}8I6FrNvG0sk4yLH*LS(vF9mLp7!Dj+yssqXtqdak>bR!>S->;$$jE#q`Qu^|=0Yr4-xe!MaE{iKvJPBYzjAOqRJa~wA z5w(0x6O*tKt0~TFWX#3Anui+5As5k5IDrzCs=xEp7d3KyEt(@^MRF2`wCK2a{h+y2 ziylxlrh&?0B2^`Pt7UVPf;fs3ZAi-*?IALC0A1@=?&8SD$L0y`E%R=M(uvspk^;&?VRQ5oCFl$s>%6?@24W3g{wNV ze;IKZt~Htc|Q4Djf>@1#`pjb+zc#`gUWN(QA~;e;Ra7gJz=n6J96~HV5GQ zL)Au+JHw=!>k?;}RD*Q;1mt9bHWuRb=6o{=JIpm^3U-?7@k5+`6(`|i^K8I_%_f!o z2dJ5fssbb&@wxSI#OxGhDTdufBH5i^Tt`f|Q>5WTN1vMA?3hV!0Dml9MZwD^iDo(c zDG#jAq#2(C#ky(^iYd@6ztu=0#_n_92ve=iv_>$qv#qSpKTB7n%Xs!7&rQOGNkRf& zMVkZ91fqB$Qk{fm%Y!^zrIyQf1b|fsaN?s8-;5n92zjt1MC$ih4!$2=;W%L>;K>sM z<*NApm{kXcwUFb}*6(INcPwA-H!H0+t4OA1Ty)mT$C*Ul&S4ZBdeZ2A+bLtb_U>HUv@v!r|aOEd0Do zvUZzx$WI3SukauT|5;$Sy3QBUEy=?apMb^Ay5+A&)-JCRM(i*@-r}6W(~JDHiJvZA zUb`BPDPs9@wO(k_u-@xDHXc~-*(qp4G}WQ}P*>!lZ53C65LdT4RHe0R7u8fnmQ_`) zs9J@osn*>>OmRD0w0a%!lGCgI>YUSWI*$D6+Z$rBrj3!(St >t >t >t >t >t DOES} theme ! ; -( cursor grid block mine flag bg ) - blue white black magenta red lgray deftheme win31 - white yellow black lmagenta yellow red deftheme hotdog - +( cursor grid block mine flag bg ) + blue white black magenta red lgray deftheme win31 + white yellow black lmagenta yellow red deftheme hotdog + yellow lgray cyan lmagenta yellow blue deftheme borland + magenta lgray magenta magenta magenta cyan deftheme cga4 win31 ( minesweeper board drawing ) @@ -166,7 +169,7 @@ win31 : draw-rowborder rT ' lT ' .+ draw-border ; : draw-row ( p -- p ) .| begin dup draw-square .| 1+ dup square-pos drop not until next-row ; -: draw-board ( -- ) +: draw-board ( -- ) 0 boxstyle! col-grid col-bg boardx! boardy! draw-board-top board begin draw-row dup square-pos valid-pos? while draw-rowborder repeat drop draw-board-bottom ; @@ -205,7 +208,7 @@ var current-menu menu-selected @ = if draw-mine else sp then sp ; : draw-option ( iopt -- ) white fg! menu-option @ draw-text ; : draw-menu - 33 10 textxy! + 30 9 textxy! textx 0 begin dup menu-size < while dup draw-selection dup draw-option 1+ nextline over textx! repeat drop drop ; @@ -220,7 +223,7 @@ var current-menu : run-menu enter init-menu begin draw-menu await-menu in-progress? not until - enter ; + uncancel ; { :timm defmenu ( itemcount cpinit -- ) CREATE target current-menu !t w>t dup >t menu-optsize * ALLOT DOES} @@ -239,8 +242,7 @@ var current-menu cursy b@ 2* boardy + texty! textx tl .- tr nextline textx! textx .| dup 2 + textx! .| nextline textx! - bl .- br - 0 boxstyle! ; + bl .- br ; : move-cursor ( dx dy -- ) cursy b@ + swap cursx b@ + swap 2dup valid-pos? @@ -259,39 +261,60 @@ var current-menu dup %f = if curs@ flag-at then dup %enter = swap %space = or if curs@ reveal-at then ; -: result-message - 25 8 textxy! 0 hstyle! 1 vstyle! - 30 5 filled draw-box - 27 10 textxy! draw-spaced-text +: popupbox ( h -- ) + 20 8 textxy! 0 hstyle! 1 vstyle! + 39 swap filled draw-box ; + +: result-message ( st x -- ) + 5 popupbox ( x ) 10 textxy! draw-spaced-text wait-key drop ; : display-result game-state b@ - dup WON = if cyan bg! yellow fg! s" YOU WON" result-message then - LOST = if brown bg! lred fg! s" YOU LOST" result-message then ; + dup WON = if green bg! lcyan fg! s" YOU WON" 26 result-message then + LOST = if red bg! yellow fg! s" YOU LOST" 25 result-message then ; + +2 :noname blue bg! lgray fg! 4 popupbox ; defmenu quitmenu +' leave s" Return to game" 0 defitem +:noname QUIT game-state b! ; s" Quit to title" 1 defitem + +: confirm-quit cancelled? if quitmenu then ; +: draw-game draw-board draw-cursor ; : play enter col-bg clear - begin in-progress? while draw-board draw-cursor await-command repeat + begin draw-game await-command confirm-quit in-progress? not until draw-board display-result enter ; -: start 20 12 30 init-board play ; +: start init-board play ; ( title menu ) array title-text t", SWINE MEEPER" -3 :noname col-bg clear ; defmenu theme-menu -' win31 s" Classic 3.1" 0 defitem -' hotdog s" Hot Dog Stand" 1 defitem -' leave s" Done" 2 defitem +5 :noname col-bg clear ; defmenu theme-menu +' win31 s" 3.11 for Worksties" 0 defitem +' hotdog s" Pork Sausage Stand" 1 defitem +' borland s" Boarland Turbohog" 2 defitem +' cga4 s" Sowlo Jazz" 3 defitem +' leave s" Done" 4 defitem + +20 12 30 minecount ! boardh ! boardw ! +: config-game ( boardw boardh minecount -- ) + minecount ! boardh ! boardw ! leave ; + +3 :noname red bg! clear ; defmenu difficulty-menu +:noname 10 10 10 config-game ; s" Easy ( 10x10, 10 swine )" 0 defitem +:noname 20 12 30 config-game ; s" Moderate ( 20x12, 30 swine )" 1 defitem +:noname 30 12 60 config-game ; s" Hard ( 30x12, 60 swine )" 2 defitem : draw-title blue bg! yellow fg! clear 17 3 textxy! title-text draw-spaced-text ; -3 ' draw-title defmenu title-menu -' start s" Start Game" 0 defitem -' theme-menu s" Themes" 1 defitem -' leave s" Quit" 2 defitem +4 ' draw-title defmenu title-menu +' start s" Start Game" 0 defitem +' difficulty-menu s" Difficulty" 1 defitem +' theme-menu s" Themes" 2 defitem +' leave s" Quit" 3 defitem : title textmode reseed! hidecursor title-menu textmode ;