🤘📄✂️ Use µEforth! ( Use strong random numbers! ) s" /dev/urandom" r/o open-file throw constant dev-random : rnd 0 >r rp@ cell dev-random read-file throw cell <> throw r> ; : rmask ( n -- n ) 1 begin 2dup > while 2* 1+ repeat nip ; : random ( n -- nr ) dup >r rmask begin rnd over and dup r@ < if rdrop and exit then drop again ; : tab 9 emit ; : id. ( xt -- ) >name type space ; variable things variable verbose -1 verbose ! : thing create things @ , last @ , 1 things +! ; : t. ( thing -- ) cell+ @ verbose @ if id. then ; thing rock thing paper thing scissors : play ( thing thing -- n ) @ swap @ swap - 1+ things @ mod 1- ; : doline pad 40 accept pad swap evaluate ; : rps page ." Player A: " doline page ." Player B: " doline page ." Press enter to reveal..." key drop cr 2dup swap t. t. play dup 0= if drop ." Tie!" exit then 0< if ." Player B wins!" else ." Player A wins!" then ; : spin ( xt -- thing ) verbose @ if dup id. then execute verbose @ if dup t. tab tab then ; : round ( xt xt -- f ) spin swap spin play verbose @ if dup . cr then ; : rounds ( xt xt n -- n ) cr 0 swap 1- for >r 2dup round r> + next swap id. ." score: " . drop cr ; :r over + r> over + ; : player ( r p s -- thing ) r dup r> < if 2drop rock exit then > if paper else scissors then ; : Allen ( -- thing ) 50 25 25 player ; : Betty ( -- thing ) 1 1 1 player ; QUESTIONS? ⚘ thank you!