737320dc2b 2011-11-10 crc: with canvas' 737320dc2b 2011-11-10 crc: 737320dc2b 2011-11-10 crc: 3 elements mx my color 737320dc2b 2011-11-10 crc: 737320dc2b 2011-11-10 crc: : toggle dup @ not swap ! ; 737320dc2b 2011-11-10 crc: : player @color [ red ] [ blue ] if color toggle ; 737320dc2b 2011-11-10 crc: 737320dc2b 2011-11-10 crc: : drawBoard ( - ) 737320dc2b 2011-11-10 crc: 0 0 @fh @fw white solid box 737320dc2b 2011-11-10 crc: 0 50 150 black hline 737320dc2b 2011-11-10 crc: 0 100 150 black hline 737320dc2b 2011-11-10 crc: 50 0 150 black vline 737320dc2b 2011-11-10 crc: 100 0 150 black vline ; 737320dc2b 2011-11-10 crc: 737320dc2b 2011-11-10 crc: : top ( n- ) 5 40 40 player solid box ; 737320dc2b 2011-11-10 crc: : middle ( n- ) 55 40 40 player solid box ; 737320dc2b 2011-11-10 crc: : bottom ( n- ) 105 40 40 player solid box ; 737320dc2b 2011-11-10 crc: 737320dc2b 2011-11-10 crc: : column ( nn- ) 737320dc2b 2011-11-10 crc: swap 737320dc2b 2011-11-10 crc: [ 0 50 within ] [ drop top ] when 737320dc2b 2011-11-10 crc: [ 50 100 within ] [ drop middle ] when 737320dc2b 2011-11-10 crc: [ 100 150 within ] [ drop bottom ] when 737320dc2b 2011-11-10 crc: 2drop ; 737320dc2b 2011-11-10 crc: 737320dc2b 2011-11-10 crc: : row ( nn- ) 737320dc2b 2011-11-10 crc: [ 0 50 within ] [ drop 5 column ] when 737320dc2b 2011-11-10 crc: [ 50 100 within ] [ drop 55 column ] when 737320dc2b 2011-11-10 crc: [ 100 150 within ] [ drop 105 column ] when 737320dc2b 2011-11-10 crc: 2drop ; 737320dc2b 2011-11-10 crc: 737320dc2b 2011-11-10 crc: : moved? ( nn-nnf ) 737320dc2b 2011-11-10 crc: 2over @mx = [ @my = ] dip and [ 2over [ !my ] [ !mx ] bi* ] dip ; 737320dc2b 2011-11-10 crc: 737320dc2b 2011-11-10 crc: : process ( - ) 737320dc2b 2011-11-10 crc: click? [ mouse swap moved? [ row ] [ 2drop ] if ] ifTrue ; 737320dc2b 2011-11-10 crc: 737320dc2b 2011-11-10 crc: : tic-tac-toe ( - ) 737320dc2b 2011-11-10 crc: clear drawBoard repeat process again ; 737320dc2b 2011-11-10 crc: