Pretty much my little Competition (1) example but I've inflated the variable identifiers in the code to what they represent, instead of the one character ones which I used to save space.
Graphics3D 800,600,32,2
SetBuffer BackBuffer()
SeedRnd MilliSecs()
Global player=CreateCube()
ScaleEntity player,.5,.5,1
PositionEntity player,0,0,0
Global camera=CreateCamera()
PositionEntity camera,0,5,-10
RotateEntity camera,30,0,0
Dim bullets(100),enemies(100)
Global bulletIndex=0,enemySpawnCounter=0,score=0, lastShotTime=0
While Not KeyHit(1)
If KeyDown(205) Then TurnEntity player,0,-2,0
If KeyDown(203) Then TurnEntity player,0,2,0
If KeyDown(57) And MilliSecs()-lastShotTime>200
bullets(bulletIndex)=CreateCube()
ScaleEntity bullets(bulletIndex),.1,.1,.5
EntityColor bullets(bulletIndex),0,0,255
PositionEntity bullets(bulletIndex),EntityX(player),EntityY(player),EntityZ(player)
RotateEntity bullets(bulletIndex),EntityPitch(player),EntityYaw(player),EntityRoll(player)
bulletIndex=(bulletIndex+1) Mod 100
lastShotTime=MilliSecs()
EndIf
For i=0 To 99
If bullets(i)<>0
MoveEntity bullets(i),0,0,1
If EntityZ(bullets(i))>50 Then FreeEntity bullets(i):bullets(i)=0
EndIf
Next
enemySpawnCounter=enemySpawnCounter+1
If enemySpawnCounter>30
For i=0 To 99
If enemies(i)=0
enemies(i)=CreateCube()
PositionEntity enemies(i),Rnd(-8,8),0,50
ScaleEntity enemies(i),.5,.5,.5
EntityColor enemies(i),255,0,0
Exit
EndIf
Next
enemySpawnCounter=0
EndIf
For i=0 To 99
If enemies(i)<>0
MoveEntity enemies(i),0,0,-.1
If EntityZ(enemies(i))<EntityZ(player) Or EntityDistance(player,enemies(i))<1
Repeat
Cls
Text 0,0,"Breached - Hits "+s
Flip
Until KeyDown(1)
EndIf
For j=0 To 99
If bullets(j)<>0 And enemies(i)<>0
If EntityDistance(bullets(j),enemies(i))<1
FreeEntity enemies(i)
enemies(i)=0
FreeEntity bullets(j)
bullets(j)=0
score=score+1
EndIf
EndIf
Next
EndIf
Next
RenderWorld
Text 0,0,score+" hit"
Flip
delay 1
Wend
Left/Right arrows to rotate turret, space to fire at the onslaught of red cubes, once a red cube goes past the turret... Game over!
Dabz