Int w1, x1, y1, z1 Int w2, x2, y2, z2 randomize frame frame (160, 120, 479, 359) get outline (w1, x1, y1, z1) tabxy (37, 15); framed text (" SiMPLE\nFor Kids", 8, 7, 7) tabxy (38, 15) cwrite ("S", 12, 7) cwrite ("i", 6, 7) cwrite ("M", 14, 7) cwrite ("P", 10, 7) cwrite ("L", 11, 7) cwrite ("E", 13, 7) get outline (w2, x2, y2, z2) line color (0); rectangle (w2, x2, y2, z2) flush kbd hue=15 Do If random(500)=0 Set hue=random(15)+1 dazzle (w1, x1, y1, z1) @ If random(100)=0 Set hue=random(15)+1 kaleido (hue, w2, x2, y2, z2) @ kaleido (hue, w2, x2, y2, z2) @ kaleido (hue, w2, x2, y2, z2) @ read quit key (27) Loop Task kaleido (Int z, Int a, Int b, Int c, Int d) Common Int qsize, qpntr Common Int qx[5000], qy [5000] Common Int first=1, stepsize=3 If first qsize=5000 Do k=0,qsize-1 qx[k]=0; qy[k]=0 Loop k qpntr=0 first=0 Endif previndex=(qpntr-1+qsize)%qsize newx=qx[previndex]+random(2*stepsize+1)-stepsize newx=newx-random (newx+1)/175 If (newx<0) newx=0 If (newx>159) newx=159 newy=qy[previndex]+random(2*stepsize+1)-stepsize newy=newy-random (newy+1)/175 If (newy<0) newy=0 If (newy>159) newy=159 line color (0) oldindex=(qpntr+1)%qsize mirror (qx[oldindex], qy[oldindex], qx[qpntr], qy[qpntr], a, b, c, d) @ line color (z) mirror (qx[previndex], qy[previndex], newx, newy, a, b, c, d) @ qx[qpntr]=newx qy[qpntr]=newy qpntr=oldindex End kaleido Task mirror (Int a, Int b, Int x, Int y, Int i, Int j, Intk, Int l) line (320+a, 240+b, 320+x, 240+y,i, j, k, l) @ line (319-a, 239-b, 319-x, 239-y,i, j, k, l) @ line (319-a, 240+b, 319-x, 240+y,i, j, k, l) @ line (320+a, 239-b, 320+x, 239-y,i, j, k, l) @ line (320+b, 240+a, 320+y, 240+x,i, j, k, l) @ line (319-b, 239-a, 319-y, 239-x,i, j, k, l) @ line (319-b, 240+a, 319-y, 240+x,i, j, k, l) @ line (320+b, 239-a, 320+y, 239-x,i, j, k, l) @ End mirror Task line (Int a, Int b, Int c, Int d, Int w, Int x, Int y, Int z) If a<160 Or b<120 Or a>479 Or b>359 Return If c<160 Or d<120 Or c>479 Or d>359 Return If a>w And ax And bw And cx And d615 Return If (xloc<=xul Or xloc>=xlr) Line (xloc, 24, xloc, 455) Else Line (xloc, 24, xloc, yul) Line (xloc, ylr-1, xloc, 455) Endelse End vlin Task hlin (Int yloc, Int xul, Int yul, Int xlr, Int ylr) If yloc<24 Or yloc>455 Return If (yloc<=yul Or yloc>=ylr-1) Line (24, yloc, 615, yloc) Else Line (24, yloc, xul, yloc) Line (xlr, yloc, 615, yloc) Endelse End hlin