REBOL [ title: "Tric Trac" date: 7-Nov-2013 file: %trictrac.r author: Nick Antonaccio purpose: { A quick implementation of a simple board game. Created with a student as a tutorial example. The point is to roll the dice, and match the rolled number with any combination of available number buttons above. For example, if you roll a 6, you can match it with the number button 6, or 5 + 1, or 4 + 2, or 3 + 2 + 1, etc. Once a number button has been selected, it cannot be used again for the rest of the game. The game is over when you have no possible combinations of number buttons to match the rolled value. To determine your final score, sum the remaining number buttons (see the bottom left of the screen). The goal is to get the lowest final score. When playing against others, each player takes turns clearing the board - or you can just play against yourself, always trying to get the lowest possible score. Another way to play is to count the total number of rolls required to clear the board. The goal is to turn all the buttons in the fewest number of rolls. To make this game go faster, play with only numbers 5-10. } ] random/seed now/time count: 0 view center-face layout [ backdrop white across style tog toggle tan 50x100 [ sum: 0 show face foreach bttn [a b c d e f g h i j k l] [ do rejoin [ {if not find } bttn {/text "(" [sum: sum + to-integer } bttn {/text]} ] ] if not find u/text "(" [u/text: rejoin ["(" u/text ")"] show u] t/text: form sum show t ] a: tog "1" "" b: tog "2" "" c: tog "3" "" d: tog "4" "" e: tog "5" "" f: tog "6" "" g: tog "7" "" h: tog "8" "" i: tog "9" "" j: tog "10" "" k: tog "11" "" l: tog "12" "" return u: btn 690x50 font-size 20 "Roll" [ face/text: (form (1 + random 11)) show face count: count + 1 cnt/text: count show cnt ] return text "Score:" t: text bold "000" text "Save" [write %trictrac t/text] text "Previous High" [attempt [alert read %trictrac]] text "Count:" cnt: text bold "000" ] ; And just for fun, here's a 1 line version: random/seed now g: [across btn "Roll" [alert form 1 + random 11]] repeat i 12 [append g reduce ['text mold i 'check]] view layout g