I made this program, because (no offence) the paint programs on here aren't exactly the most sophisticated ever.
This one needs no media, and can save/open in many different formats. Has over 16 million different colours. Has six different tools for editing your picture. Has help. And... you edit in 3D! Each tool has an object, created with no media that shows when using that tool. You can see the rest for yourself:
Uncompressed:
sync on : hide mouse
autocam off
`pencil/spray/line
make object cylinder 1,1
scale object 1,1000,10000,1000
make object cone 2,1
make mesh from object 1,2
delete object 2
add limb 1,1,1
scale limb 1,1,100,20,100
color object 1,rgb(255,200,50)
color limb 1,1,0
offset limb 1,1,0,0.6,0
Xrotate object 1,90
`circle maker
make object cylinder 3,100
color object 3,0
Xrotate object 3,90
hide object 3
`chalk
make object cylinder 4,10
scale object 4,100,1000,100
Xrotate object 4,90
color object 4,0
hide object 4
make object plain 2,640,480
create bitmap 1,640,480
ink rgb(255,255,255),0
box 0,0,639,479
set ambient light 100
rad = 100
do
if leftkey() = 1 then inc yang
if rightkey() = 1 then dec yang
yang = wrapvalue(yang)
if upkey() = 1 then inc xang
if downkey() = 1 then dec xang
xang = wrapvalue(xang)
inc count
if count > 4
set current bitmap 1
get image 1,0,0,639,479
texture object 2,1
count = 0
endif
oldx = xpos
oldy = ypos
xpos = mousex()
ypos = mousey()
if tool < 3
dist = -100
else
if tool=3
dist = 60
else
dist = -80
endif
endif
ink currentcolor#,0
if mouseclick() = 1
if tool = 0
dist = -70
line oldx,oldy,xpos,ypos
endif
if tool = 1
randomize timer()
dist = -70
dg = rnd(360)
ln = rnd(20)
dot (sin(dg)*ln)+xpos,(cos(rnd(dg))*ln)+ypos
endif
if tool = 2
dist = -70
if mdwn = 0
stx = xpos
sty = ypos
mdwn = 1
endif
endif
if tool = 3
dist = 40
circle xpos,ypos,rad/2
endif
if tool = 4
dist = -50
box xpos-5,ypos-5,xpos+5,ypos+5
endif
if tool = 5
box 0,0,639,479
endif
else
if tool = 2 and mdwn = 1
line stx,sty,xpos,ypos
mdwn = 0
endif
endif
if mouseclick() = 2 and tool = 3
dist = 40
endif
if tool < 3
position object 1,xpos-320,240-ypos,dist
else
if tool < 5
position object tool,xpos-320,240-ypos,dist
endif
endif
if scancode() = 74 and tool = 3
dist = 40
dec rad
if rad < 1 then rad = 1
scale object 3,rad,100,rad
endif
if scancode() = 78 and tool = 3
dist = 40
inc rad
if rad < 1 then rad = 1
scale object 3,rad,100,rad
endif
position camera xpos-320,240-ypos,0
Yrotate camera yang
Xrotate camera xang
move camera -500
set current bitmap 0
ink rgb(128,128,128),0
box 0,0,639,19
ink 0,0
text 0,0,"F1:help"
text 100,0,"F2:open"
text 200,0,"F3:save"
text 300,0,"F4:colour"
text 400,0,"F5:tool"
text 500,0,"F6:credits"
if scancode() = 59
ink rgb(255,0,0),0
text 0,20,"Click mouse to draw, use arrow keys to rotate view."
text 0,40,"When setting a new colour, enter a number from 0-255."
text 0,60,"When saving/opening, type the FULL FILEPATH including extension."
text 0,80,"When drawing circles, right click to show where circle will go."
text 0,100,"Release F1 to hide help."
endif
if scancode() = 60
ink rgb(255,0,0),0
set camera view 0,0,1,1
set cursor 0,20
input "Enter filepath: ",file$
if file exist(file$) = 1
load bitmap file$,2
copy bitmap 2,1
set current bitmap 0
set camera view 0,0,640,480
else
set camera view 0,0,640,480
start# = timer()
while (start#+1000) > timer()
ink rgb(128,128,128),0
box 0,0,639,19
ink 0,0
text 0,0,"F1:help"
text 100,0,"F2:open"
text 200,0,"F3:save"
text 300,0,"F4:colour"
text 400,0,"F5:tool"
ink rgb(255,0,0),0
text 0,20,"File does not exist!"
sync
endwhile
endif
endif
if scancode() = 61
ink rgb(255,0,0),0
set camera view 0,0,1,1
set cursor 0,20
input "Enter filename: ",file$
if file exist(file$)
delete file file$
endif
save bitmap file$,1
set camera view 0,0,640,480
endif
if scancode() = 62
ink rgb(255,0,0),0
set camera view 0,0,1,1
set cursor 0,20
input "Enter red: ",r
if r < 0
r = 0
endif
if r > 255
r = 255
endif
set cursor 0,40
input "Enter green: ",g
if g < 0
g = 0
endif
if g > 255
g = 255
endif
set cursor 0,60
input "Enter blue: ",b
if b < 0
b = 0
endif
if b > 255
b = 255
endif
currentcolor# = rgb(r,g,b)
if tool < 3
if tool = 0
color object 1,rgb(255,200,50)
else
color object 1,0
endif
color limb 1,1,currentcolor#
else
if tool < 5
color object tool,currentcolor#
endif
endif
set camera view 0,0,640,480
endif
if scancode() = 63
oldtool=tool
ink rgb(255,0,0),0
set camera view 0,0,1,1
for y = 0 to 5
select y
case 0 : info$ = "0:Pencil" : endcase
case 1 : info$ = "1:Spray" : endcase
case 2 : info$ = "2:Line" : endcase
case 3 : info$ = "3:Circle" : endcase
case 4 : info$ = "4:Chalk" : endcase
case 5 : info$ = "5:Wipe" : endcase
endselect
if tool=y
ink rgb(255,0,255),0
else
ink rgb(255,0,0),0
endif
text 0,(y*20)+20,info$
next y
set cursor 0,140
input "Enter tool: ",tool
if tool<0 then tool=0
if tool>5 then tool=5
if tool <> oldtool
select oldtool
case 0 : hide object 1 : endcase
case 1 : hide object 1 : endcase
case 2 : hide object 1 : endcase
case 3 : hide object 3 : endcase
case 4 : hide object 4 : endcase
endselect
select tool
case 0 : show object 1 : color object 1,rgb(255,200,50) : color limb 1,1,currentcolor# : endcase
case 1 : show object 1 : color object 1,0 : color limb 1,1,currentcolor# : endcase
case 2 : show object 1 : color object 1,0 : color limb 1,1,currentcolor# : endcase
case 3 : show object 3 : color object 3,currentcolor# : endcase
case 4 : show object 4 : color object 4,currentcolor# : endcase
endselect
endif
set camera view 0,0,640,480
endif
if scancode() = 64
ink rgb(255,0,0),0
text 0,20,"Game idea: Me!"
text 0,40,"Programming: Me!"
text 0,60,"Debugger: Me!"
text 0,80,"Tester: Me!"
text 0,100,"Me!: Diggory Blake"
text 0,140,"Oh yeah, written in DarkBasic Clssic"
endif
if scancode() > 64 and scancode() < 70
ink rgb(255,0,0),0
text 0,20,"This button does nothing!"
endif
sync
set current bitmap 1
loop
Compressed to 14 lines:
sync on : hide mouse : autocam off : make object cylinder 1,1 : scale object 1,1000,10000,1000 : make object cone 2,1 : make mesh from object 1,2 : delete object 2 : add limb 1,1,1 : scale limb 1,1,100,20,100 : color object 1,rgb(255,200,50) : color limb 1,1,0 : offset limb 1,1,0,0.6,0 : Xrotate object 1,90 : make object cylinder 3,100 : color object 3,0 : Xrotate object 3,90 : hide object 3 : make object cylinder 4,10 : scale object 4,100,1000,100 : Xrotate object 4,90 : color object 4,0 : hide object 4 : make object plain 2,640,480 : create bitmap 1,640,480
ink rgb(255,255,255),0 : box 0,0,639,479 : set ambient light 100 : rad = 100 : do : if leftkey() = 1 : inc yang : endif : if rightkey() = 1 : dec yang : endif : yang = wrapvalue(yang) : if upkey() = 1 : inc xang : endif : if downkey() = 1 : dec xang : endif : xang = wrapvalue(xang) : inc count : if count > 4 : set current bitmap 1 : get image 1,0,0,639,479 : texture object 2,1 : count = 0
endif : oldx = xpos : oldy = ypos : xpos = mousex() : ypos = mousey() : if tool < 3 : dist = -100 : else : if tool=3 : dist = 60 : else : dist = -80 : endif : endif : ink currentcolor#,0 : if mouseclick() = 1 : if tool = 0 : dist = -70 : line oldx,oldy,xpos,ypos : endif : if tool = 1 : randomize timer() : dist = -70 : dg = rnd(360) : ln = rnd(20)
dot (sin(dg)*ln)+xpos,(cos(rnd(dg))*ln)+ypos : endif : if tool = 2 : dist = -70 : if mdwn = 0 : stx = xpos : sty = ypos : mdwn = 1 : endif : endif : if tool = 3 : dist = 40 : circle xpos,ypos,rad/2 : endif : if tool = 4 : dist = -50 : box xpos-5,ypos-5,xpos+5,ypos+5 : endif : if tool = 5 : box 0,0,639,479 : endif : else : if tool = 2 and mdwn = 1 : line stx,sty,xpos,ypos : mdwn = 0
endif : endif : if mouseclick() = 2 and tool = 3 : dist = 40 : endif : if tool < 3 : position object 1,xpos-320,240-ypos,dist : else : if tool < 5 : position object tool,xpos-320,240-ypos,dist : endif : endif : if scancode() = 74 and tool = 3 : dist = 40 : dec rad : if rad < 1 : rad = 1 : endif : scale object 3,rad,100,rad : endif : if scancode() = 78 and tool = 3 : dist = 40 : inc rad : if rad < 1 : rad = 1
endif : scale object 3,rad,100,rad : endif : position camera xpos-320,240-ypos,0 : Yrotate camera yang : Xrotate camera xang : move camera -500 : set current bitmap 0 : ink rgb(128,128,128),0 : box 0,0,639,19 : ink 0,0 : text 0,0,"F1:help" : text 100,0,"F2:open" : text 200,0,"F3:save" : text 300,0,"F4:colour" : text 400,0,"F5:tool" : text 500,0,"F6:credits" : if scancode() = 59 : ink rgb(255,0,0),0 : text 0,20,"Click mouse to draw, use arrow keys to rotate view." : text 0,40,"When setting a new colour, enter a number from 0-255." : text 0,60,"When saving/opening, type the FULL FILEPATH including extension." : text 0,80,"When drawing circles, right click to show where circle will go." : text 0,100,"Release F1 to hide help." : endif
if scancode() = 60 : ink rgb(255,0,0),0 : set camera view 0,0,1,1 : set cursor 0,20 : input "Enter filepath: ",file$ : if file exist(file$) = 1 : load bitmap file$,2 : copy bitmap 2,1 : set current bitmap 0 : set camera view 0,0,640,480 : else : set camera view 0,0,640,480 : start# = timer() : while (start#+1000) > timer() : ink rgb(128,128,128),0 : box 0,0,639,19 : ink 0,0 : text 0,0,"F1:help" : text 100,0,"F2:open" : text 200,0,"F3:save" : text 300,0,"F4:colour" : text 400,0,"F5:tool" : ink rgb(255,0,0),0 : text 0,20,"File does not exist!" : sync
endwhile : endif : endif : if scancode() = 61 : ink rgb(255,0,0),0 : set camera view 0,0,1,1 : set cursor 0,20 : input "Enter filename: ",file$ : if file exist(file$) : delete file file$ : endif : save bitmap file$,1 : set camera view 0,0,640,480 : endif : if scancode() = 62 : ink rgb(255,0,0),0 : set camera view 0,0,1,1 : set cursor 0,20 : input "Enter red: ",r : if r < 0 : r = 0 : endif : if r > 255 : r = 255 : endif
set cursor 0,40 : input "Enter green: ",g : if g < 0 : g = 0 : endif : if g > 255 : g = 255 : endif : set cursor 0,60 : input "Enter blue: ",b : if b < 0 : b = 0 : endif : if b > 255 : b = 255 : endif : currentcolor# = rgb(r,g,b) : if tool < 3 : if tool = 0 : color object 1,rgb(255,200,50) : else : color object 1,0 : endif : color limb 1,1,currentcolor# : else
if tool < 5 : color object tool,currentcolor# : endif : endif : set camera view 0,0,640,480 : endif : if scancode() = 63 : oldtool=tool : ink rgb(255,0,0),0 : set camera view 0,0,1,1 : for y = 0 to 5 : if y = 0 : info$ = "0 : Pencil" : if y = 1 : info$ = "1 : Spray" : if y = 2 : info$ = "2 : Line" : if y = 3 : info$ = "3 : Circle" : if y = 4 : info$ = "4
Chalk" : if y = 5 : info$ = "5 : Wipe" : if tool=y : ink rgb(255,0,255),0 : else : ink rgb(255,0,0),0 : endif : text 0,(y*20)+20,info$ : next y : set cursor 0,140 : input "Enter tool: ",tool : if tool<0 : tool=0 : endif : if tool>5 : tool=5 : endif : if tool <> oldtool : if oldtool = 0 : hide object 1 : endif : if oldtool = 1 : hide object 1
endif : if oldtool = 2 : hide object 1 : endif : if oldtool = 3 : hide object 3 : endif : if oldtool = 4 : hide object 4 : endif : if tool = 0 : show object 1 : color object 1,rgb(255,200,50) : color limb 1,1,currentcolor# : endif : if tool = 1 : show object 1 : color object 1,0 : color limb 1,1,currentcolor# : endif : if tool = 2 : show object 1 : color object 1,0 : color limb 1,1,currentcolor# : endif
if tool = 3 : show object 3 : color object 3,currentcolor# : endif : if tool = 4 : show object 4 : color object 4,currentcolor# : endif : endif : set camera view 0,0,640,480 : endif : if scancode() = 64 : ink rgb(255,0,0),0 : text 0,20,"Game idea: Me!" : text 0,40,"Programming: Me!" : text 0,60,"Debugger: Me!" : text 0,80,"Tester: Me!" : text 0,100,"Me!: Diggory Blake" : text 0,140,"Oh yeah, written in DarkBasic Clssic" : endif : if scancode() > 64 and scancode() < 70 : ink rgb(255,0,0),0 : text 0,20,"This button does nothing!" : endif : sync
set current bitmap 1 : loop
Any comments?
There are three types of people, those that can count and those that can't.