Pro-SiMPLE input= "c:\\input.txt" letters = "c:\\letters.bmp" mask= "c:\\mask.bmp" make puzzle (input, letters, mask) @ ////////////////////////////////////////////////////// Task make puzzle (Text input, Text letters, Text mask) Text data Int eof randomize open a (input, 1) graphon; horiz=0 Do j=0, 999 read line a (data, eof) If eof Break If (len(data)>horiz) horiz=len(data) Do k=0, len(data)-1 ch=extract(data,k,k) If (ch!=".") Display ch, Else Display char(65+random(26)), Loop Display Loop close a snapshot (-1, 0, 8*horiz+1, 16*j-2, letters) @ open a (input, 1) t=999; b=-1; l=999; r=-1 solid color (15) Do j=0, 999 read line a (data, eof) If eof Break Do k=0, len(data)-1 If (extract(data,k,k)!=".") If (jb) b=j If (kr) r=k solid color (15) Endif Else solid color (0) solid rectangle (8*k, 16*j, 8*k+7, 16*j+15) Loop Loop close a line color (3) rectangle (8*l-10, 16*t-8, 8*r+17, 16*b+23) rectangle (8*l-11, 16*t-9, 8*r+18, 16*b+24) snapshot (8*l-11, 16*t-9, 8*(r-l)+30, 16*(b-t)+34, mask) @ quit Task snapshot (Int xul, Int yul, Int dx, Int dy, Text path) Int2 head[]={0, 0, 118, 40, 0, 0, 0, 0, 0, 1000, 1000, 0, 0} Int r[]={0, 0, 0, 0,128,128,128,192,128, 0, 0, 0,255,255,255,255} Int g[]={0, 0,128,128, 0, 0,128,192,128, 0,255,255, 0, 0,255,255} Int b[]={0,128, 0,128, 0,128, 0,192,128,255, 0,255, 0,255, 0,255} Int zz size=8*((dx-1)/8+1) head[0]=size head[4]=dx head[5]=dy head[6]=4*65536L+1 command="write "+path Open g (command) Write binary g (66) Write binary g (77) Do k=0,12 +zz_=(head_[k_])&0xff; Write binary g (zz) +zz_=(head_[k_]>>8)&0xff; Write binary g (zz) +zz_=(head_[k_]>>16)&0xff; Write binary g (zz) Write binary g (0) Loop Do k=0,15 Write binary g (b[k]) Write binary g (g[k]) Write binary g (r[k]) Write binary g (0) Loop Do y=dy-1,0 Do x=0,size/2-1 z=16*getpixel(xul+2*x,yul+y)+getpixel(xul+2*x+1,yul+y) Write binary g (z) Loop Loop Close g