WindowWidth = DisplayWidth WindowHeight = DisplayHeight global winx , winy , qt , qw winx = 400'WindowWidth winy = 300'WindowHeight 'winx = WindowWidth/1.1 'winy = WindowHeight/1.1 qt = 30 '100 qw = 300 '1000 dim t.x( qt ) , t.y( qt ) , t.st( qt ) , t.dir( qt ) dim w.x( qw ) , w.y( qw ) nomainwin open "termites" for graphics as #m #m "trapclose [quit]" #m "size 5" #m "font 50 bold" for t = 0 to qt t.x( t ) = rnd( 0 ) * winx t.y( t ) = rnd( 0 ) * winy t.dir( t ) = rnd( 0 ) * atn( 1 ) * 8 ' print t, t.dir( t ) next t for t = 0 to qw w.x( t ) = rnd( 0 ) * winx w.y( t ) = rnd( 0 ) * winy next t #m "backcolor black" #m "down" for tijd = 0 to 10000 #m "discard" #m "color yellow" #m "fill black" #m "place 0 50" #m "\ " ; tijd s$="" for w = 0 to qt s$= s$;";"; "set ";int(t.x(w));" ";int(t.y(w)) '#m "set ";int(t.x(w));" ";int(t.y(w)) next w #m mid$(s$,2) #m "color blue" s$="" for w = 0 to qw s$= s$;";"; "set ";int(w.x(w));" ";int(w.y(w)) '#m "set ";int(w.x(w));" ";int(w.y(w)) next w #m mid$(s$,2) for t = 0 to qt SCAN dx = 4 dy = 0 t.dir( t ) = t.dir( t ) + rnd( 0 ) - .5 'call rotate dx , dy , t.dir( t ) dx = 4 * cos(t.dir( t )) dy = 4 * sin(t.dir( t )) 'print t, dx , dy , t.dir( t ) t.y( t ) = t.y( t ) + dy t.x( t ) = t.x( t ) + dx if t.x( t ) < 0 then t.x( t ) = winx if t.x( t ) > winx then t.x( t ) = 0 if t.y( t ) < 0 then t.y( t ) = winy if t.y( t ) > winy then t.y( t ) = 0 if t.st( t ) then w.x( t.st( t ) ) = t.x( t ) + dx w.y( t.st( t ) ) = t.y( t ) + dy t.st( t ) = 0 t.dir( t ) = t.dir( t ) + atn( 1 ) * 4 else hit = 0 for w = 1 to qw 'if dist( t.x(t) , t.y(t) , w.x(w) , w.y(w) ) < 5 then if abs( t.x(t) - w.x(w) ) + abs( t.y(t) - w.y(w) ) < 5 then hit = w exit for end if next w if hit then t.st( t ) = hit end if next t next tijd wait [quit] close #m end sub rotate byref k , byref l , r s = sin( r ) c = cos( r ) hk = k * c - l * s hl = k * s + l * c k = hk l = hl end sub function dist( a , b , c , d ) scan dist = abs( a - c ) + abs( b - d ) end function