I cant wait for Lee to add the drawing commands to AppGameKit tier 1 (BASIC), so I kinda made them myself...
The drawback is that you have to use a very low resolution. I am using a 160x100 resolution "bitmap" for this test. That is 16000 sprites on screen at the same time.
There is no need for media, as I am generating the sprites by using a failsafe in AGK. (It makes a white sprite if no imagedata is found)
Copy and paste the code into a new project, and set the setup.agc to a resolution of 640x400 for best viewing experience on a PC.
Use C to clear the bitmap, and Q to quit the application
//
// Custom made graphics subset
// By: Øystein De Lumeau
// support@minportal.net
// version: 1.3.3.7
// Initialize display
SetVirtualResolution (160,100)
SetClearColor (0,0,0)
SetOrientationAllowed (0,0,1,1)
SetResolutionMode (1)
SetSyncRate (60,1)
SetBorderColor (100,100,200)
// Initialize "bitmap"
global dim pixel[159,99]
for l1=0 to 159
for l2=0 to 99
pixel[l1,l2]=createsprite(void)
setspritesize(pixel[l1,l2],1,-1)
setspriteposition(pixel[l1,l2],l1,l2)
setspritecolor(pixel[l1,l2],random(0,150),random(0,150),random(0,150),255)
next l2
next l1
// Display help
print("Press Q to exit program")
print("Press C to clear screen")
sync()
sleep(3000)
// Main loop (Press Q to exit, C to clear screed)
do
// Draw random pixels
for l1=0 to 4
x=random(0,159)
y=random(0,99)
r=random(0,100)
g=random(0,100)
b=random(0,100)
plot(x,y,r,g,b)
next l1
// Draw random lines
for l1=0 to 2
x1=random(0,159)
y1=random(0,99)
x2=random(0,159)
y2=random(0,99)
r=random(101,200)
g=random(101,200)
b=random(101,200)
drawline(x1,y1,x2,y2,r,g,b)
next l1
// Draw random boxes
x1=random(0,159)
y1=random(0,99)
x2=random(0,159)
y2=random(0,99)
r=random(51,120)
g=random(51,120)
b=random(51,120)
drawbox(x1,y1,x2,y2,r,g,b)
// Draw circles
for r=0 to 200 step 10
drawcircle(79,49,r,r,r,r)
next r
// Check for input
if getrawkeypressed(67) then cls(0,0,0)
if getrawkeypressed(81) then exit
sync()
loop
// Safe exit in case of loop exit
end
function cls(r,g,b)
for l1=0 to 159
for l2=0 to 99
plot(l1,l2,r,g,b)
next l2
next l1
endfunction
function plot(x,y,r,g,b)
if x<0 or x>159 or y<0 or y>99 then return
setspritecolor(pixel[x,y],r,g,b,255)
endfunction
function drawline(x1,y1,x2,y2,r,g,b)
dx=abs(x2-x1)
dy=abs(y2-y1)
if x1<x2 then sx=1 else sx=-1
if y1<y2 then sy=1 else sy=-1
err=dx-dy
do
plot(x1,y1,r,g,b)
if x1=x2 and y1=y2 then exit
e2=2*err
if e2>-dy
err=err-dy
x1=x1+sx
endif
if e2<dx
err=err+dx
y1=y1+sy
endif
loop
endfunction
function drawbox(x1,y1,x2,y2,r,g,b)
drawline(x1,y1,x2,y1,r,g,b)
drawline(x2,y1,x2,y2,r,g,b)
drawline(x2,y2,x1,y2,r,g,b)
drawline(x1,y2,x1,y1,r,g,b)
endfunction
function drawcircle(x1,y1,ra,r,g,b)
x=ra
y=0
xc=1-2*ra
yc=1
re=0
while x=>y
plot(x1+x,y1+y,r,g,b) // Point in octant 1
plot(x1-x,y1+y,r,g,b) // Point in octant 4
plot(x1-x,y1-y,r,g,b) // Point in octant 5
plot(x1+x,y1-y,r,g,b) // Point in octant 8
plot(x1+y,y1+x,r,g,b) // Point in octant 2
plot(x1-y,y1+x,r,g,b) // Point in octant 3
plot(x1-y,y1-x,r,g,b) // Point in octant 6
plot(x1+y,y1-x,r,g,b) // Point in octant 7
y=y+1
re=re+yc
yc=yc+2
if 2*re+xc>0
x=x-1
re=re+xc
xc=xc+2
endif
endwhile
endfunction
----------------
AGK user - novice
Did Amiga / AMOS programming in the 90's, just started programming again with AGK.