Post by bluatigro on Apr 25, 2018 13:18:48 GMT
error :
i keep getting a :
'virtual machine stack overflow'
and the debugger thels me no useful things
my plane is not what i expect
i keep getting a :
'virtual machine stack overflow'
and the debugger thels me no useful things
my plane is not what i expect
WindowWidth = DisplayWidth
WindowHeight = DisplayHeight
global winx , winy , p.max , key$ , pi
winx = WindowWidth
winy = WindowHeight
p.max = 10
pi = atn( i ) * 4
dim p.x( p.max ) , p.y( p.max ) , p.z( p.max ) , p.rol( p.max )
dim p.dx( p.max ) , p.dy( p.max ) , p.dz( p.max ) , ry( p.max )
nomainwin
gosub [sprite]
open "air fight 1.0" for graphics as #m
#m "trapclose [quit]"
#m "when characterInput [key]"
#m "setfocus"
for i = 0 to 36
call plane i * 10 , "red"
call sprite.getbmp "red" ; i
red$ = red$ + " red" ; i
next i
for i = 0 to p.max
#m "addsprite pred" ; red$
p.x( i ) = range( -300 , 300 )
p.y( i ) = range( -200 , 200 )
p.z( i ) = range( -300 , 300 )
p.rol( i ) = int( range( 0 , 36 ) )
ry( i ) = i
next i
timer 40 , [timer]
wait
[timer]
scan
for high = 1 to p.max
for low = 0 to high - 1
if p.z( ry( high ) ) < p.z( ry( low ) ) then
help = ry( high )
ry ( high ) = ry( low )
ry( low ) = help
end if
next low
next high
for i = 0 to p.max
#m "spritetoback pred" ; ry( i )
#m "spriteimage pred" ; ry( i ) ; " red" ; p.rol( ry( i ) )
x = p.x( ry( i ) )
y = p.y( ry( i ) )
z = p.z( ry( i ) )
q = ( z + 1000 )
#m "spritescale pred" ; ry( i ) ; " " ; 100 / q * 1000
sx = winx / 2 + ( x - 50 ) / q * 1000
sy = winy / 2 - ( y + 50 ) / q * 1000
#m "spritexy pred" ; ry( i ) ; " " ; int(sx) ; " " ; int(sy)
next i
#m "drawsprites"
wait
[key]
key$ = right$( Inkey$ , 1 )
if key$ <> chr$( _VK_ESCAPE ) then wait
[quit]
close #m
end
function range( l , h )
range = rnd(0) * ( h - l ) + l
end function
function rad( deg )
rad = deg * pi / 180
end function
sub rotate byref k , byref l , deg
s = sin( rad( deg ) )
c = cos( rad( deg ) )
hk = k * c - l * s
hl = k * c + l * s
k = hk
l = hl
end sub
sub plane deg , clr$
call sprite.clear 100 , 100
x1 = -40
y1 = 0
x2 = 40
y2 = 0
call rotate x1 , y1 , deg
call rotate x2 , y2 , deg
call sprite.line x1 + 50 , y1 + 50 , x2 + 50 , y2 + 50 , clr$ , 5
x = 0
y = -30
call rotate x , y , deg
call sprite.line 50 , 50 , x + 50 , y + 50 , clr$ , 3
x = 0
y = -20
call rotate x , y , deg
call sprite.ellipse 50 + x , 50 + y , 15 , 15 , "black" , "white" , 3
call sprite.ellipse 50 , 50 , 20 , 20 , "black" , clr$ , 5
end sub
''bluatigro 23 apr 2017
''sprite module
[sprite]
global sprite.width , sprite.height
return
sub sprite.clear w , h
#m "fill white"
#m "goto 0 " ; h
#m "size 1"
#m "down"
#m "color black"
#m "backcolor black"
#m "boxfilled " ; w ; " " ; h * 2
#m "up"
sprite.width = w
sprite.height = h
end sub
sub swap byref a , byref b
h = a
a = b
b = h
end sub
sub sprite.triangle x1 , y1 , x2 , y2 , x3 , y3 , clr$
if y1 = y2 then y1 = y1 - 1e-10
if y2 = y3 then y3 = y3 + 1e-10
if y1 > y3 then
call swap y1 , y3
call swap x1 , x3
end if
if y1 > y2 then
call swap y1 , y2
call swap x1 , x2
end if
if y2 > y3 then
call swap y2 , y3
call swap x2 , y3
end if
for i = y1 to y3
a = x1 + ( x3 - x1 ) * (i-y1) / ( y3 - y1 )
if i < y2 then
b = x1 + ( x2 - x1 ) * (i-y1) / ( y2 - y1 )
else
b = x2 + ( x3 - x2 ) * (i-y2) / ( y3 - y2 )
end if
call sprite.line a , i + sprite.height _
, b , i + sprite.height , clr$ , 1
call sprite.line a , i , b , i , "black" , 1
next i
#m "flush"
end sub
sub sprite.rectangle x1,y1,x2,y2,clr$
#m "goto " ; x1 ; " " ; y1
#m "size 1"
#m "color black"
#m "backcolor black"
#m "down"
#m "boxfilled " ; x2 ; " " ; y2
#m "up"
#m "goto " ; x1 ; " " ; y1 + sprite.height
#m "color " ; clr$
#m "backcolor " ; clr$
#m "down"
#m "boxfilled " ; x2 ; " " ; y2 + 60
#m "up"
end sub
sub sprite.ellipse x,y,dx,dy,clr$,bclr$,size
#m "goto " ; x ; " " ; y
#m "size " ; size
#m "down"
#m "color black"
#m "backcolor black"
#m "ellipsefilled " ; dx ; " " ; dy
#m "up"
#m "goto " ; x ; " " ; y + sprite.height
#m "down"
#m "color " ; clr$
#m "backcolor " ; bclr$
#m "ellipsefilled " ; dx ; " " ; dy
#m "up"
end sub
sub sprite.pie x,y,dx,dy,a,b,clr$,bclr$,size
#m "goto " ; x ; " " ; y
#m "size " ; size
#m "down"
#m "color black"
#m "backcolor black"
#m "piefilled " ; dx ; " " ; dy _
; " " ; a ; " " ; b
#m "up"
#m "goto " ; x ; " " ; y + sprite.height
#m "down"
#m "color " ; clr$
#m "backcolor " ; bclr$
#m "piefilled " ; dx ; " " ; dy _
; " " ; a ; " " ; b
#m "up"
end sub
sub sprite.line x1,y1 , x2,y2 , clr$ , size
#m "color black"
#m "size " ; size
#m "down"
#m "line " ; x1 ; " " ; y1 _
; " " ; x2 ; " " ; y2
#m "up"
#m "color " ; clr$
#m "down"
#m "line " ; x1 ; " " ; y1 + sprite.height _
; " " ; x2 ; " " ; y2 + sprite.height
#m "up"
end sub
sub sprite.getbmp bmp$
#m "getbmp " ; bmp$ ; " 0 0 " _
; sprite.width ; " " ; sprite.height * 2
end sub