The code is below.
I'm not freeing any sprites yet - just trying to allocate about 50 of them, so far. The code below has some lines edited out because I was trying to work out what was happening with it, but I've drawn a blank so far.
Any ideas?
Graphics3D 800,600,16
SetBuffer BackBuffer()
Global Car1 = LoadSprite("Sprites\Army Truck Vert.bmp",52)
Global Car2 = LoadSprite("Sprites\Austin Vert.bmp",52)
Global Car3 = LoadSprite("Sprites\Buick Vert.bmp",52)
Global Car4 = LoadSprite("Sprites\Caddy Vert.bmp",52)
Global Car5 = LoadSprite("Sprites\Hot Dog Vert.bmp",52)
Global Car6 = LoadSprite("Sprites\Merc Vert.bmp",52)
Global Car7 = LoadSprite("Sprites\Muscle Car Vert.bmp",52)
Global Car8 = LoadSprite("Sprites\Police Car Vert.bmp",52)
Global Car9 = LoadSprite("Sprites\Sports Car Vert.bmp",52)
Global Car10= LoadSprite("Sprites\Viper Vert.bmp",52)
ScaleSprite Car1,1,2.3
ScaleSprite Car2,1,2.3
ScaleSprite Car3,1,2.3
ScaleSprite Car4,1,2.3
ScaleSprite Car5,1,2.3
ScaleSprite Car6,1,2.3
ScaleSprite Car7,1,2.3
ScaleSprite Car8,1,2.3
ScaleSprite Car9,1,2.3
ScaleSprite Car10,1,2.3
HideEntity Car1
HideEntity Car2
HideEntity Car3
HideEntity Car4
HideEntity Car5
HideEntity Car6
HideEntity Car7
HideEntity Car8
HideEntity Car9
HideEntity Car10
cam = CreateCamera()
MoveEntity cam,0,0,-10
Type Car
Field CarHandle
Field X
Field Y
Field Angle
End Type
Const TotalRoads = 30
Dim Road.Car ( TotalRoads, 30 )
Dim TotalCars ( TotalRoads )
CurrentRoad = 0
Const CarXSize# = 3
Const CarYSize# = 3
Const CarTypes = 10
Const CityGridLowerX = -50
Const CityGridLowerY = -50
Const CityGridHigherX = 50
Const CityGridHigherY = 50
x# = 0
y# = 0
z# = 5
size# = 1.0
buildRoadGrid ()
;BuildRoad ( 0, 0, 10 )
;BuildRoad ( 1, 0, 10 )
BuildRoad ( 2, 0, 10 )
BuildRoad ( 3, 0, 10 )
BuildRoad ( 4, 0, 10 )
While Not KeyDown(1)
PositionEntity Car1, x#, y#, z#
Color 255,255,255
If KeyDown (203) Then X#=X#-0.1
If KeyDown (205) Then X#=X#+0.1
If KeyDown (200) Then Y#=Y#+0.1
If KeyDown (208) Then y#=y#-0.1
DrawRoad ( 2, 8 )
; DrawRoad ( 1, 8 )
; DrawRoad ( 2, 8 )
DrawRoad ( 3, 8 )
DrawRoad ( 4, 8 )
VWait
RenderWorld
Locate 0,0
Print "x = "+X
Print "y = "+Y
Flip
Wend
End
Function BuildRoadGrid ( )
For i = 0 To TotalRoads
For j = 0 To 30
Road ( i, j ) = New Car
Next
Next
End Function
Function BuildRoad ( RoadNumber, RoadAngle#, CarTotal )
CurrentX = Rand ( CityGridLowerX, CityGridHigherX )
CurrentY = Rand ( CityGridLowerY, CityGridHigherY )
; Remove this bit!
If CurrentX > 14
CurrentX = 14
EndIf
If CurrentX < -14
CurrentX = -14
EndIf
If CurrentY > 9
CurrentY = 9
EndIf
If CurrentY < -9
CurrentY = -9
EndIf
;Remove this bit!
XInc = 0
YInc = 0
Random = Rand ( 0, 3 )
Select True
Case Random = 0
XInc = -1
YInc = 0
Case Random = 1
XInc = 1
YInc = 0
Case Random = 2
YInc = -1
XInc = 0
Case Random = 3
YInc = 1
XInc = 0
End Select
For i=0 To CarTotal
Random = Rand (0, CarTypes)
; Road ( RoadNumber, i ) = New Car
Road ( RoadNumber, i )\CarHandle = 0
; Print "Random = "+Random+" Road = "+RoadNumber+" Car = "+i
; WaitKey
Select True
Case Random = 0
Road ( RoadNumber, i )\CarHandle = CopyEntity ( Car1 )
Case Random = 1
Road ( RoadNumber, i )\CarHandle = CopyEntity ( Car2 )
Case Random = 2
Road ( RoadNumber, i )\CarHandle = CopyEntity ( Car3 )
Case Random = 3
Road ( RoadNumber, i )\CarHandle = CopyEntity ( Car4 )
Case Random = 4
Road ( RoadNumber, i )\CarHandle = CopyEntity ( Car5 )
Case Random = 5
Road ( RoadNumber, i )\CarHandle = CopyEntity ( Car6 )
Case Random = 6
Road ( RoadNumber, i )\CarHandle = CopyEntity ( Car7 )
Case Random = 7
Road ( RoadNumber, i )\CarHandle = CopyEntity ( Car8 )
Case Random = 8
Road ( RoadNumber, i )\CarHandle = CopyEntity ( Car9 )
Case Random = 9
Road ( RoadNumber, i )\CarHandle = CopyEntity ( Car10 )
End Select
; If Road ( RoadNumber, i )\CarHandle = 0
; Stop
; EndIf
Road( RoadNumber, i )\X = CurrentX
Road( RoadNumber, i )\Y = CurrentY
Select True
Case XInc = 1
Road( RoadNumber, i )\Angle = ( 90 + RoadAngle# ) Mod 360
Case XInc = -1
Road( RoadNumber, i )\Angle = ( 270 + RoadAngle# ) Mod 360
Case YInc = 1
Road( RoadNumber, i )\Angle = ( 0 + RoadAngle# ) Mod 360
Case YInc = -1
Road( RoadNumber, i )\Angle = ( 180 + RoadAngle# ) Mod 360
End Select
CurrentX = CurrentX + ( ( XInc * Rand ( 1, 2 ) ) * CarXSize )
CurrentY = CurrentY + ( ( YInc * Rand ( 1, 2 ) ) * CarYSize )
; Print Road ( RoadNumber, i )\Angle
; Print "X = "+CurrentX+" Y = "+CurrentY
; WaitKey
Next
End Function
Function DrawRoad ( RoadNumber, CarTotal )
For i = 0 To CarTotal
; RenderWorld
; Locate 0,0
; Print "RoadNumber = "+RoadNumber
; Print "Car Number = "+i
; Print "X = "+Road ( RoadNumber, i )\X+" Y = "+Road ( RoadNumber, i )\Y
PositionEntity Road ( RoadNumber, i )\CarHandle, Road ( RoadNumber, i )\X, Road ( RoadNumber, i)\Y, 5
; PositionEntity Car1, Road ( RoadNumber, i )\X, Road ( RoadNumber, i)\Y, 5
; RotateSprite Road ( RoadNumber, i )\CarHandle, Road ( RoadNumber, i )\Angle
RotateSprite Car1, Road ( RoadNumber, i )\Angle
; PositionEntity road ( RoadNumber, i )\CarHandle, 0, 0, 5
RenderWorld
; Flip
; WaitKey
Next
End Function