My assumption here is a routine that instead of using a palette of colors you can generate a random colors from a base color.
Code: Select all
screenres 640,480,32
dim as ulong colors1(54)
dim as ulong colors2(54) 'to make more sets of colors
dim as ulong colors3(54)
dim as ulong colors4(54)
colors1(0)=RGB(255,188,224)
colors1(1)=RGB(226,72,166)
colors1(2)=RGB(211,57,151)
colors1(3)=RGB(250,96,190)
colors1(4)=RGB(255,136,230)
colors1(5)=RGB(124,0,64)
colors1(6)=RGB(218,64,158)
colors1(7)=RGB(196,42,136)
colors1(8)=RGB(189,35,129)
colors1(9)=RGB(205,51,145)
colors1(10)=RGB(234,80,174)
colors1(11)=RGB(253,120,215)
colors1(12)=RGB(186,32,126)
colors1(13)=RGB(173,19,113)
colors1(14)=RGB(254,104,198)
colors1(15)=RGB(255,112,206)
colors1(16)=RGB(180,26,120)
colors1(17)=RGB(255,166,254)
colors1(18)=RGB(237,83,177)
colors1(19)=RGB(170,16,110)
colors1(20)=RGB(255,127,224)
colors1(21)=RGB(244,90,184)
colors1(22)=RGB(164,10,104)
colors1(23)=RGB(157,3,97)
colors1(24)=RGB(149,0,89)
colors1(25)=RGB(255,128,222)
colors1(26)=RGB(255,214,255)
colors1(27)=RGB(107,0,35)
colors1(28)=RGB(202,48,142)
colors1(29)=RGB(255,151,246)
colors1(30)=RGB(191,63,160)
colors1(31)=RGB(109,46,150)
colors1(32)=RGB(255,144,238)
colors1(33)=RGB(232,104,201)
colors1(34)=RGB(155,92,196)
colors1(35)=RGB(181,53,150)
colors1(36)=RGB(170,107,211)
colors1(37)=RGB(166,38,135)
colors1(38)=RGB(135,0,75)
colors1(39)=RGB(118,0,87)
colors1(40)=RGB(159,96,200)
colors1(41)=RGB(202,139,243)
colors1(42)=RGB(154,26,123)
colors1(43)=RGB(134,6,103)
colors1(44)=RGB(187,124,228)
colors1(45)=RGB(255,253,255)
colors1(46)=RGB(133,26,126)
colors1(47)=RGB(255,198,248)
colors1(48)=RGB(141,0,81)
colors1(49)=RGB(214,73,169)
colors1(50)=RGB(139,76,180)
colors1(51)=RGB(125,62,166)
colors1(52)=RGB(109,0,49)
colors1(53)=RGB(255,231,255)
'make second set from first set
dim as ulong v,r,g,b
for i as integer = 0 to 53
v = colors1(i)
r = v shr 16 and 255
g = v shr 8 and 255
b = v and 255
colors2(i) = rgb(g,b,r) '
colors3(i) = rgb(b,r,g)
colors4(i) = rgb(r,b,g)
next i
dim shared as any ptr canvas(0 to 2)
for k as integer = 0 to 2
canvas(k) = imagecreate(640,480,rgb(255,0,255))
next k
dim as integer mx,my,mb
dim as integer frame,count,paintID
paintID = 0
dim as string key
do
key = inkey
if key = "1" then
paintID = 0
elseif key = "2" then
paintID = 1
elseif key = "3" then
paintID = 2
elseif key = "4" then
paintID = 3
end if
while inkey<>"":wend
getmouse mx,my,,mb
if mb = 1 then
for j as integer = -3 to 3
for i as integer = -3 to 3
if paintID = 0 then
pset canvas(0),(mx+i,my+j),colors1(int(Rnd(1)*54))
pset canvas(1),(mx+i,my+j),colors1(int(rnd(1)*54))
pset canvas(2),(mx+i,my+j),colors1(int(rnd(1)*54))
elseif paintID = 1 then
pset canvas(0),(mx+i,my+j),colors2(int(Rnd(1)*54))
pset canvas(1),(mx+i,my+j),colors2(int(rnd(1)*54))
pset canvas(2),(mx+i,my+j),colors2(int(rnd(1)*54))
elseif paintID = 2 then
pset canvas(0),(mx+i,my+j),colors3(int(Rnd(1)*54))
pset canvas(1),(mx+i,my+j),colors3(int(rnd(1)*54))
pset canvas(2),(mx+i,my+j),colors3(int(rnd(1)*54))
elseif paintID = 3 then
pset canvas(0),(mx+i,my+j),colors4(int(Rnd(1)*54))
pset canvas(1),(mx+i,my+j),colors4(int(rnd(1)*54))
pset canvas(2),(mx+i,my+j),colors4(int(rnd(1)*54))
end if
next i
next j
end if
screenlock
cls
put (0,0),canvas(frame),trans
locate 2,2
print "PRESS KEY [1] or [2] or [3] or [4] to select color"
print
print " USE MOUSE TO DRAW"
screenunlock
count = count + 1
if count > 20 then
count = 0
else
count = count + 1
frame = frame + 1
if frame = 3 then frame = 0
end if
sleep 2
loop until multikey(&H01)