Sample of the Week, II
Published Feb 12 2019 12:48 PM 232 Views
Microsoft
First published on MSDN on Nov 17, 2008

Authored by Vijaye Raji


This week's featured sample comes from Jeff Sidlosky . It is a star field simulation - you know the one where it appears like you're moving fast through space, with stars whizzing past you.


' Star-field simulation
Initialize()
Main()

Sub Initialize
GraphicsWindow.Title = "Super Star Field!"
GraphicsWindow.Width = 640
GraphicsWindow.Height = 480
GraphicsWindow.BackgroundColor = "black"
GraphicsWindow.PenWidth = 0
GraphicsWindow.Show()

num_stars = 200

For index = 0 To num_stars
NewStar()
EndFor
EndSub

Sub NewStar
Array.SetValue("star_x", index, Math.GetRandomNumber(100) - 50)
Array.SetValue("star_y", index, Math.GetRandomNumber(100) - 50)

' Pick a random z depth
z = (Math.GetRandomNumber(50) / 100) + 0.50

Array.SetValue("star_z", index, z)

' Start with a dark color and save our shape
GraphicsWindow.BrushColor = "DimGray"
Array.SetValue("star_shape", index, GraphicsWindow.AddRectangle(2, 2))
Array.SetValue("star_color", index, 0)
EndSub

Sub Update
For index = 0 To num_stars
z = Array.GetValue("star_z", index)
x = (Array.GetValue("star_x", index) / z) + 320
y = (Array.GetValue("star_y", index) / z) + 240
shape = Array.GetValue("star_shape", index)

' Next z position
z = z - 0.02

If(x < 0 Or x > 639 Or y < 0 Or y > 479 Or z <= 0) Then
GraphicsWindow.RemoveShape(shape)
NewStar()
Else
' Check if we should make the star brighter
If(z < 0.4) Then
If(Array.GetValue("star_color", index) = 0) Then
GraphicsWindow.BrushColor = "White"
GraphicsWindow.RemoveShape(shape)
shape = GraphicsWindow.AddRectangle(2, 2)
Array.SetValue("star_shape", index, shape)
Array.SetValue("star_color", index, 1)
EndIf
EndIf

GraphicsWindow.MoveShape(shape, x, y)

Array.SetValue("star_z", index, z)
EndIf
EndFor
EndSub

Sub Main
' Run forever
While(1 = 1)
Update()
EndWhile
EndSub

And here's the screenshot! The picture really doesn't do justice. Try this program on your copy of Small Basic to experience the real deal.


Do you want your samples to be featured here? Post them in our forums and we'll pick one each week.

Version history
Last update:
‎Feb 12 2019 12:48 PM
Updated by: