minesweeper: reduce duplicated code for click/mark/open cells.
parent
551144b8a2
commit
02e231633e
|
@ -253,6 +253,19 @@ M: grid-gadget draw-gadget*
|
||||||
[ draw-cells ]
|
[ draw-cells ]
|
||||||
} cleave ;
|
} cleave ;
|
||||||
|
|
||||||
|
:: on-grid ( gadget quot: ( cells row col -- ? ) -- )
|
||||||
|
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 quot call [
|
||||||
|
gadget start>> [ now gadget start<< ] unless
|
||||||
|
cells game-over? [ now gadget end<< ] when
|
||||||
|
] when
|
||||||
|
] unless
|
||||||
|
] when gadget relayout-1 ; inline
|
||||||
|
|
||||||
:: on-click ( gadget -- )
|
:: on-click ( gadget -- )
|
||||||
gadget hand-rel first2 :> ( w h )
|
gadget hand-rel first2 :> ( w h )
|
||||||
h 58 < [
|
h 58 < [
|
||||||
|
@ -261,42 +274,11 @@ M: grid-gadget draw-gadget*
|
||||||
gadget [ reset-cells ] change-cells
|
gadget [ reset-cells ] change-cells
|
||||||
f >>start f >>end drop
|
f >>start f >>end drop
|
||||||
] when
|
] when
|
||||||
] [
|
] when gadget [ click-cell-at ] on-grid ;
|
||||||
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
|
|
||||||
] when
|
|
||||||
] unless
|
|
||||||
] if gadget relayout-1 ;
|
|
||||||
|
|
||||||
:: on-mark ( gadget -- )
|
: on-mark ( gadget -- ) [ mark-cell-at ] on-grid ;
|
||||||
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
|
|
||||||
] when
|
|
||||||
] unless
|
|
||||||
] when gadget relayout-1 ;
|
|
||||||
|
|
||||||
:: on-open ( gadget -- )
|
: on-open ( gadget -- ) [ open-cell-at ] on-grid ;
|
||||||
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 open-cell-at [
|
|
||||||
gadget start>> [ now gadget start<< ] unless
|
|
||||||
cells game-over? [ now gadget end<< ] when
|
|
||||||
] when
|
|
||||||
] unless
|
|
||||||
] when gadget relayout-1 ;
|
|
||||||
|
|
||||||
: new-game ( gadget rows cols mines -- )
|
: new-game ( gadget rows cols mines -- )
|
||||||
[ make-cells ] dip place-mines update-counts >>cells
|
[ make-cells ] dip place-mines update-counts >>cells
|
||||||
|
|
Loading…
Reference in New Issue