% MS Paint-wannabe turing code. Please fix and/or make better/enhance. % any help will be appreciated. Thank you very much! ^^ setscreen ("graphics:max,max") var font : int := Font.New ("sans serif:14:bold") var xrad : int var yrad : int var xdif : int var ydif : int var ttext : string var col : int var size : int := 5 var colur : int := 7 var stamp : int := 0 var mx, my, mb : int var tool : int := 1 var pencil : int var eraser : int var clear : int var square : int var circle : int var text : int var line : int var fill : int var pencil2 : int var eraser2 : int var clear2 : int var square2 : int var circle2 : int var text2 : int var line2 : int var fill2 : int var smiley : int var smiley2 : int var x, y, btnNumber, btnUpDown, buttons : int %background pencil := Pic.FileNew ("pencil.jpg") eraser := Pic.FileNew ("eraser.jpg") clear := Pic.FileNew ("clear.jpg") square := Pic.FileNew ("drawbox.jpg") circle := Pic.FileNew ("circle.jpg") text := Pic.FileNew ("text tool.jpg") line := Pic.FileNew ("line tool.jpg") fill := Pic.FileNew ("paint can.jpg") pencil2 := Pic.FileNew ("pencil2.jpg") eraser2 := Pic.FileNew ("eraser2.jpg") % clear2 := Pic.FileNew ("clear2.jpg") square2 := Pic.FileNew ("drawbox2.jpg") circle2 := Pic.FileNew ("circle2.jpg") text2 := Pic.FileNew ("text tool2.jpg") line2 := Pic.FileNew ("line tool2.jpg") fill2 := Pic.FileNew ("paint can2.jpg") smiley := Pic.FileNew ("nVidia.jpg") smiley2 := Pic.FileNew ("nvidia_logo.jpg") drawfillbox (0, 0, maxx, maxy, 13) drawfillbox (250, 50, maxx - 20, maxy - 20, white) drawfillbox (10, maxy - 25, 30, maxy - 45, 2) drawfillbox (30, maxy - 25, 50, maxy - 45, 3) drawfillbox (10, maxy - 45, 30, maxy - 65, 4) drawfillbox (30, maxy - 45, 50, maxy - 65, 5) drawfillbox (10, maxy - 65, 30, maxy - 80, 6) drawfillbox (30, maxy - 65, 50, maxy - 80, 7) drawfillbox (10, maxy - 80, 30, maxy - 100, 8) drawfillbox (30, maxy - 80, 50, maxy - 100, 9) drawfillbox (10, maxy - 100, 30, maxy - 120, 10) drawfillbox (30, maxy - 100, 50, maxy - 120, 11) drawfillbox (10, maxy - 120, 30, maxy - 140, 12) drawfillbox (30, maxy - 120, 50, maxy - 140, 13) drawfillbox (10, maxy - 140, 30, maxy - 160, 14) drawfillbox (30, maxy - 140, 50, maxy - 160, 15) drawfillbox (50, maxy - 25, 70, maxy - 45, 39) drawfillbox (70, maxy - 25, 90, maxy - 45, 40) drawfillbox (50, maxy - 45, 70, maxy - 65, 41) drawfillbox (70, maxy - 45, 90, maxy - 65, 42) drawfillbox (50, maxy - 65, 70, maxy - 80, 44) drawfillbox (70, maxy - 65, 90, maxy - 80, 46) drawfillbox (50, maxy - 80, 70, maxy - 100, 48) drawfillbox (70, maxy - 80, 90, maxy - 100, 113) drawfillbox (50, maxy - 100, 70, maxy - 120, 112) drawfillbox (70, maxy - 100, 90, maxy - 120, 107) drawfillbox (50, maxy - 120, 70, maxy - 140, 40) drawfillbox (70, maxy - 120, 90, maxy - 140, 41) drawfillbox (50, maxy - 140, 70, maxy - 160, 17) drawfillbox (70, maxy - 140, 90, maxy - 160, 28) drawbox (30, maxy - 170, 70, maxy - 210, brightred) color (13) put " Adobe Photochop 7.1" %stamps drawfillbox (30, 180, 150, 10, white) locatexy (100, 170) put "stamps" .. drawfillstar (45, 140, 65, 160, yellow) Pic.Draw (smiley, 75, 135, picCopy) %FINDFAST drawbox (120, 240, 200, 300, black) %load Font.Draw ("Load", 138, 265, font, white) drawbox (120, 320, 200, 380, black) %load Font.Draw ("Save", 138, 345, font, white) %size select drawfillbox (10, maxy div 2 + 90, 100, 200, white) locatexy (40, maxy div 2 + 75) put "size" .. locatexy (40, maxy div 2 + 60) put "size=", size div 5 .. drawfilloval (55, 368, 1, 1, black) drawfilloval (55, 358, 5, 5, black) drawfilloval (55, 341, 10, 10, black) drawfilloval (55, 314, 15, 15, black) drawfilloval (55, 277, 20, 20, black) drawfilloval (55, 230, 25, 25, black) %tool select drawfillbox (124, maxy - 30, 176, maxy - 177, 29) locatexy (130, maxy - 35) put "tools" .. Pic.Draw (pencil, 125, maxy - 100, picCopy) Pic.Draw (eraser, 151, maxy - 100, picCopy) Pic.Draw (clear, 125, maxy - 126, picCopy) Pic.Draw (square, 151, maxy - 126, picCopy) Pic.Draw (circle, 125, maxy - 151, picCopy) Pic.Draw (text, 151, maxy - 151, picCopy) Pic.Draw (line, 125, maxy - 176, picCopy) Pic.Draw (fill, 151, maxy - 176, picCopy) loop color (black) locatexy (40, maxy div 2 + 60) put "size=", size div 5 .. mousewhere (mx, my, mb) %size select if mx > 50 and mx < 60 and my > 367 and my < 380 and mb = 1 then size := 1 elsif mx > 49 and mx < 61 and my > 352 and my < 364 and mb = 1 then size := 5 elsif mx > 44 and mx < 66 and my > 331 and my < 352 and mb = 1 then size := 10 elsif mx > 39 and mx < 71 and my > 298 and my < 330 and mb = 1 then size := 15 elsif mx > 34 and mx < 76 and my > 256 and my < 298 and mb = 1 then size := 20 elsif mx > 29 and mx < 81 and my > 200 and my < 256 and mb = 1 then size := 25 %tool select elsif mx > 125 and mx < 151 and my > maxy - 100 and my < maxy - 74 and mb = 1 then tool := 1 Pic.Draw (pencil2, 125, maxy - 100, picCopy) Pic.Draw (eraser, 151, maxy - 100, picCopy) Pic.Draw (clear, 125, maxy - 126, picCopy) Pic.Draw (square, 151, maxy - 126, picCopy) Pic.Draw (circle, 125, maxy - 151, picCopy) Pic.Draw (text, 151, maxy - 151, picCopy) Pic.Draw (line, 125, maxy - 176, picCopy) Pic.Draw (fill, 151, maxy - 176, picCopy) elsif mx > 151 and mx < 176 and my > maxy - 100 and my < maxy - 74 and mb = 1 then tool := 2 Pic.Draw (pencil, 125, maxy - 100, picCopy) Pic.Draw (eraser2, 151, maxy - 100, picCopy) Pic.Draw (clear, 125, maxy - 126, picCopy) Pic.Draw (square, 151, maxy - 126, picCopy) Pic.Draw (circle, 125, maxy - 151, picCopy) Pic.Draw (text, 151, maxy - 151, picCopy) Pic.Draw (line, 125, maxy - 176, picCopy) Pic.Draw (fill, 151, maxy - 176, picCopy) elsif mx > 125 and mx < 151 and my > maxy - 126 and my < maxy - 100 and mb = 1 then tool := 3 Pic.Draw (pencil, 125, maxy - 100, picCopy) Pic.Draw (eraser, 151, maxy - 100, picCopy) %Pic.Draw (clear2, 125, maxy - 126, picCopy) Pic.Draw (square, 151, maxy - 126, picCopy) Pic.Draw (circle, 125, maxy - 151, picCopy) Pic.Draw (text, 151, maxy - 151, picCopy) Pic.Draw (line, 125, maxy - 176, picCopy) Pic.Draw (fill, 151, maxy - 176, picCopy) elsif mx > 151 and mx < 176 and my > maxy - 126 and my < maxy - 100 and mb = 1 then tool := 4 Pic.Draw (pencil, 125, maxy - 100, picCopy) Pic.Draw (eraser, 151, maxy - 100, picCopy) Pic.Draw (clear, 125, maxy - 126, picCopy) Pic.Draw (square2, 151, maxy - 126, picCopy) Pic.Draw (circle, 125, maxy - 151, picCopy) Pic.Draw (text, 151, maxy - 151, picCopy) Pic.Draw (line, 125, maxy - 176, picCopy) Pic.Draw (fill, 151, maxy - 176, picCopy) elsif mx > 125 and mx < 151 and my > maxy - 151 and my < maxy - 126 and mb = 1 then tool := 5 Pic.Draw (pencil, 125, maxy - 100, picCopy) Pic.Draw (eraser, 151, maxy - 100, picCopy) Pic.Draw (clear, 125, maxy - 126, picCopy) Pic.Draw (square, 151, maxy - 126, picCopy) Pic.Draw (circle2, 125, maxy - 151, picCopy) Pic.Draw (text, 151, maxy - 151, picCopy) Pic.Draw (line, 125, maxy - 176, picCopy) Pic.Draw (fill, 151, maxy - 176, picCopy) elsif mx > 151 and mx < 176 and my > maxy - 151 and my < maxy - 126 and mb = 1 then tool := 6 Pic.Draw (pencil, 125, maxy - 100, picCopy) Pic.Draw (eraser, 151, maxy - 100, picCopy) Pic.Draw (clear, 125, maxy - 126, picCopy) Pic.Draw (square, 151, maxy - 126, picCopy) Pic.Draw (circle, 125, maxy - 151, picCopy) Pic.Draw (text2, 151, maxy - 151, picCopy) Pic.Draw (line, 125, maxy - 176, picCopy) Pic.Draw (fill, 151, maxy - 176, picCopy) elsif mx > 125 and mx < 151 and my > maxy - 176 and my < maxy - 151 and mb = 1 then tool := 7 Pic.Draw (pencil, 125, maxy - 100, picCopy) Pic.Draw (eraser, 151, maxy - 100, picCopy) Pic.Draw (clear, 125, maxy - 126, picCopy) Pic.Draw (square, 151, maxy - 126, picCopy) Pic.Draw (circle, 125, maxy - 151, picCopy) Pic.Draw (text, 151, maxy - 151, picCopy) Pic.Draw (line2, 125, maxy - 176, picCopy) Pic.Draw (fill, 151, maxy - 176, picCopy) elsif mx > 151 and mx < 176 and my > maxy - 176 and my < maxy - 151 and mb = 1 then tool := 8 Pic.Draw (pencil, 125, maxy - 100, picCopy) Pic.Draw (eraser, 151, maxy - 100, picCopy) Pic.Draw (clear, 125, maxy - 126, picCopy) Pic.Draw (square, 151, maxy - 126, picCopy) Pic.Draw (circle, 125, maxy - 151, picCopy) Pic.Draw (text, 151, maxy - 151, picCopy) Pic.Draw (line, 125, maxy - 176, picCopy) Pic.Draw (fill2, 151, maxy - 176, picCopy) end if %stamp select if mx > 35 and mx < 55 and my > 140 and my < 160 and mb = 1 then stamp := 1 tool := 0 elsif mx > 75 and mx < 100 and my > 135 and my < 160 and mb = 1 then stamp := 2 tool := 0 end if %colour select if mx > 10 and mx < 90 and my < maxy - 25 and my > maxy - 160 and mb = 1 then colur := whatdotcolour (mx, my) drawfillbox (31, maxy - 171, 69, maxy - 209, colur) end if %draw on canvas if tool = 0 and mx > 250 + size * 3 and my > 50 + size * 3 and mx < (maxx - 20) - size * 3 and my < maxy - 20 + size * 3 and mb = 1 and stamp = 1 then drawfillstar (mx - size * 3, my - size * 3, mx + size * 3, my + size * 3, colur) elsif tool = 0 and mx > 300 and my > 100 and mx < maxx - 70 and my < maxy - 70 and mb = 1 and stamp = 2 then Pic.Draw (smiley2, mx - 50, my - 50, picCopy) end if if tool = 1 and mx > 250 + size and my > 50 + size and mx < maxx - 20 - size and my < maxy - 20 - size and mb = 1 then drawfilloval (mx, my, size, size, colur) elsif tool = 2 and mx > 250 + size and my > 50 + size and mx < maxx - 20 - size and my < maxy - 20 - size and mb = 1 then drawfilloval (mx, my, size, size, white) elsif tool = 3 and mx > 250 and my > 50 and mx < maxx - 20 and my < maxy - 20 and mb = 1 then drawfillbox (250, 50, maxx - 20, maxy - 20, white) elsif tool = 4 and mx > 250 and my > 50 and mx < maxx - 20 and my < maxy - 20 and mb = 1 then Mouse.ButtonWait ("down", x, y, btnNumber, btnUpDown) mx := x my := y loop drawfillbox (x, y, mx, my, 0) % Erase previous line exit when Mouse.ButtonMoved ("up") drawfillbox (x, y, mx, my, colur) % Draw line to position end loop Mouse.ButtonWait ("up", mx, my, btnNumber, btnUpDown) drawfillbox (x, y, mx, my, colur) % Draw line to final position elsif tool = 7 and mx > 250 and my > 50 and mx < maxx - 20 and my < maxy - 20 and mb = 1 then Mouse.ButtonWait ("down", x, y, btnNumber, btnUpDown) mx := x my := y loop drawline (x, y, mx, my, 0) % Erase previous line exit when Mouse.ButtonMoved ("up") drawline (x, y, mx, my, colur) % Draw line to position end loop Mouse.ButtonWait ("up", mx, my, btnNumber, btnUpDown) drawline (x, y, mx, my, colur) % Draw line to final position elsif tool = 5 and mx > 250 and my > 50 and mx < maxx - 20 and my < maxy - 20 and mb = 1 then loop mousewhere (mx, my, mb) if mb = 1 then mx := x my := y if mx < x then xrad := (x - mx) div 2 else xrad := (mx - x) div 2 end if if my < y then yrad := (y - my) div 2 else yrad := (my - y) div 2 end if if mx < x then xdif := x - xrad else xdif := mx - xrad end if if my < y then ydif := y - yrad else ydif := my - yrad end if drawfilloval (xdif, ydif, xrad, yrad, 0) % Erase previous line exit when mb = 0 drawfilloval (xdif, ydif, xrad, yrad, colur) % Draw line to position end if end loop if mb = 0 then drawfilloval (xdif, ydif, xrad, yrad, colur) % Draw line to final position end if elsif tool = 6 and mx > 250 and my > 50 and mx < maxx - 20 and my < maxy - 20 and mb = 1 then color (colur) locatexy (mx, my) get ttext end if end loop put "size=", size div 5 .. mousewhere (mx, my, mb) %size select if mx > 50 and mx < 60 and my > 367 and my < 380 and mb = 1 then size := 1 elsif mx > 49 and mx < 61 and my > 352 and my < 364 and mb = 1 then size := 5 elsif mx > 44 and mx < 66 and my > 331 and my < 352 and mb = 1 then size := 10 elsif mx > 39 and mx < 71 and my > 298 and my < 330 and mb = 1 then size := 15 elsif mx > 34 and mx < 76 and my > 256 and my < 298 and mb = 1 then size := 20 elsif mx > 29 and mx < 81 and my > 200 and my < 256 and mb = 1 then size := 25 %tool select elsif mx > 125 and mx < 151 and my > maxy - 100 and my < maxy - 74 and mb = 1 then tool := 1 Pic.Draw (pencil2, 125, maxy - 100, picCopy) Pic.Draw (eraser, 151, maxy - 100, picCopy) Pic.Draw (clear, 125, maxy - 126, picCopy) Pic.Draw (square, 151, maxy - 126, picCopy) Pic.Draw (circle, 125, maxy - 151, picCopy) Pic.Draw (text, 151, maxy - 151, picCopy) Pic.Draw (line, 125, maxy - 176, picCopy) Pic.Draw (fill, 151, maxy - 176, picCopy) elsif mx > 151 and mx < 176 and my > maxy - 100 and my < maxy - 74 and mb = 1 then tool := 2 Pic.Draw (pencil, 125, maxy - 100, picCopy) Pic.Draw (eraser2, 151, maxy - 100, picCopy) Pic.Draw (clear, 125, maxy - 126, picCopy) Pic.Draw (square, 151, maxy - 126, picCopy) Pic.Draw (circle, 125, maxy - 151, picCopy) Pic.Draw (text, 151, maxy - 151, picCopy) Pic.Draw (line, 125, maxy - 176, picCopy) Pic.Draw (fill, 151, maxy - 176, picCopy) elsif mx > 125 and mx < 151 and my > maxy - 126 and my < maxy - 100 and mb = 1 then tool := 3 Pic.Draw (pencil, 125, maxy - 100, picCopy) Pic.Draw (eraser, 151, maxy - 100, picCopy) %Pic.Draw (clear2, 125, maxy - 126, picCopy) Pic.Draw (square, 151, maxy - 126, picCopy) Pic.Draw (circle, 125, maxy - 151, picCopy) Pic.Draw (text, 151, maxy - 151, picCopy) Pic.Draw (line, 125, maxy - 176, picCopy) Pic.Draw (fill, 151, maxy - 176, picCopy) elsif mx > 151 and mx < 176 and my > maxy - 126 and my < maxy - 100 and mb = 1 then tool := 4 Pic.Draw (pencil, 125, maxy - 100, picCopy) Pic.Draw (eraser, 151, maxy - 100, picCopy) Pic.Draw (clear, 125, maxy - 126, picCopy) Pic.Draw (square2, 151, maxy - 126, picCopy) Pic.Draw (circle, 125, maxy - 151, picCopy) Pic.Draw (text, 151, maxy - 151, picCopy) Pic.Draw (line, 125, maxy - 176, picCopy) Pic.Draw (fill, 151, maxy - 176, picCopy) elsif mx > 125 and mx < 151 and my > maxy - 151 and my < maxy - 126 and mb = 1 then tool := 5 Pic.Draw (pencil, 125, maxy - 100, picCopy) Pic.Draw (eraser, 151, maxy - 100, picCopy) Pic.Draw (clear, 125, maxy - 126, picCopy) Pic.Draw (square, 151, maxy - 126, picCopy) Pic.Draw (circle2, 125, maxy - 151, picCopy) Pic.Draw (text, 151, maxy - 151, picCopy) Pic.Draw (line, 125, maxy - 176, picCopy) Pic.Draw (fill, 151, maxy - 176, picCopy) elsif mx > 151 and mx < 176 and my > maxy - 151 and my < maxy - 126 and mb = 1 then tool := 6 Pic.Draw (pencil, 125, maxy - 100, picCopy) Pic.Draw (eraser, 151, maxy - 100, picCopy) Pic.Draw (clear, 125, maxy - 126, picCopy) Pic.Draw (square, 151, maxy - 126, picCopy) Pic.Draw (circle, 125, maxy - 151, picCopy) Pic.Draw (text2, 151, maxy - 151, picCopy) Pic.Draw (line, 125, maxy - 176, picCopy) Pic.Draw (fill, 151, maxy - 176, picCopy) elsif mx > 125 and mx < 151 and my > maxy - 176 and my < maxy - 151 and mb = 1 then tool := 7 Pic.Draw (pencil, 125, maxy - 100, picCopy) Pic.Draw (eraser, 151, maxy - 100, picCopy) Pic.Draw (clear, 125, maxy - 126, picCopy) Pic.Draw (square, 151, maxy - 126, picCopy) Pic.Draw (circle, 125, maxy - 151, picCopy) Pic.Draw (text, 151, maxy - 151, picCopy) Pic.Draw (line2, 125, maxy - 176, picCopy) Pic.Draw (fill, 151, maxy - 176, picCopy) elsif mx > 151 and mx < 176 and my > maxy - 176 and my < maxy - 151 and mb = 1 then tool := 8 Pic.Draw (pencil, 125, maxy - 100, picCopy) Pic.Draw (eraser, 151, maxy - 100, picCopy) Pic.Draw (clear, 125, maxy - 126, picCopy) Pic.Draw (square, 151, maxy - 126, picCopy) Pic.Draw (circle, 125, maxy - 151, picCopy) Pic.Draw (text, 151, maxy - 151, picCopy) Pic.Draw (line, 125, maxy - 176, picCopy) Pic.Draw (fill2, 151, maxy - 176, picCopy) end if %stamp select if mx > 35 and mx < 55 and my > 140 and my < 160 and mb = 1 then stamp := 1 tool := 0 elsif mx > 75 and mx < 100 and my > 135 and my < 160 and mb = 1 then stamp := 2 tool := 0 end if %colour select if mx > 10 and mx < 90 and my < maxy - 25 and my > maxy - 160 and mb = 1 then colur := whatdotcolour (mx, my) drawfillbox (31, maxy - 171, 69, maxy - 209, colur) end if %draw on canvas if tool = 0 and mx > 250 + size * 3 and my > 50 + size * 3 and mx < (maxx - 20) - size * 3 and my < maxy - 20 + size * 3 and mb = 1 and stamp = 1 then drawfillstar (mx - size * 3, my - size * 3, mx + size * 3, my + size * 3, colur) elsif tool = 0 and mx > 300 and my > 100 and mx < maxx - 70 and my < maxy - 70 and mb = 1 and stamp = 2 then Pic.Draw (smiley2, mx - 50, my - 50, picCopy) end if if tool = 1 and mx > 250 + size and my > 50 + size and mx < maxx - 20 - size and my < maxy - 20 - size and mb = 1 then drawfilloval (mx, my, size, size, colur) elsif tool = 2 and mx > 250 + size and my > 50 + size and mx < maxx - 20 - size and my < maxy - 20 - size and mb = 1 then drawfilloval (mx, my, size, size, white) elsif tool = 3 and mx > 250 and my > 50 and mx < maxx - 20 and my < maxy - 20 and mb = 1 then drawfillbox (250, 50, maxx - 20, maxy - 20, white) elsif tool = 4 and mx > 250 and my > 50 and mx < maxx - 20 and my < maxy - 20 and mb = 1 then Mouse.ButtonWait ("down", x, y, btnNumber, btnUpDown) mx := x my := y loop drawfillbox (x, y, mx, my, 0) % Erase previous line exit when Mouse.ButtonMoved ("up") drawfillbox (x, y, mx, my, colur) % Draw line to position end loop Mouse.ButtonWait ("up", mx, my, btnNumber, btnUpDown) drawfillbox (x, y, mx, my, colur) % Draw line to final position elsif tool = 7 and mx > 250 and my > 50 and mx < maxx - 20 and my < maxy - 20 and mb = 1 then Mouse.ButtonWait ("down", x, y, btnNumber, btnUpDown) mx := x my := y loop drawline (x, y, mx, my, 0) % Erase previous line exit when Mouse.ButtonMoved ("up") drawline (x, y, mx, my, colur) % Draw line to position end loop Mouse.ButtonWait ("up", mx, my, btnNumber, btnUpDown) drawline (x, y, mx, my, colur) % Draw line to final position elsif tool = 5 and mx > 250 and my > 50 and mx < maxx - 20 and my < maxy - 20 and mb = 1 then loop mousewhere (mx, my, mb) if mb = 1 then mx := x my := y if mx < x then xrad := (x - mx) div 2 else xrad := (mx - x) div 2 end if if my < y then yrad := (y - my) div 2 else yrad := (my - y) div 2 end if if mx < x then xdif := x - xrad else xdif := mx - xrad end if if my < y then ydif := y - yrad else ydif := my - yrad end if drawfilloval (xdif, ydif, xrad, yrad, 0) % Erase previous line exit when mb = 0 drawfilloval (xdif, ydif, xrad, yrad, colur) % Draw line to position end if end loop if mb = 0 then drawfilloval (xdif, ydif, xrad, yrad, colur) % Draw line to final position end if elsif tool = 6 and mx > 250 and my > 50 and mx < maxx - 20 and my < maxy - 20 and mb = 1 then color (colur) locatexy (mx, my) get ttext end if loop mousewhere (mx, my, mb) % tool selection if mb = 1 and mx > 120 and my > 240 and mx < 200 and my < 300 then % load Pic.ScreenLoad ("mypic.bmp", 250, 50, picCopy) elsif mb = 1 and mx > 120 and my > 320 and mx < 200 and my < 380 then %save Pic.ScreenSave (250, 50, 800, 400, "mypic.bmp") end if end loop