Hi,
Here is a simple starfield using GDI.
:' GDI Side scrolling starfield
Window Starfield_win
Int StarX[100]
Int StarY[100]
Int StarP[100]
Int Counter
Int TempX
Int TempY
Int TempX2
Int Temp
Int Plane
:' Initialize the starfield
InitStarField()
:' Create the main window
OpenWindow Starfield_win, -320, -240, 320, 240, @NOAUTODRAW|@MINBOX|@SYSMENU, 0, "Starfield",&Starfield_win_handler
SetWindowColor Starfield_win, RGB(0, 0, 0)
:' Center the window
Centerwindow Starfield_win
StartTimer Starfield_win, 50, 1
WaitUntil Starfield_win = 0
End
Sub Starfield_win_handler(), int
Select @Message
Case @IdCloseWindow
CloseWindow Starfield_win
Case @IdTimer
Select @Code
Case 1
UpdateStarField()
DrawStarField()
EndSelect
EndSelect
Return 0
EndSub
:' Initializes the starfield
Sub InitStarField()
For Counter = 0 To 99
TempX = RND(320)
TempY = RND(240)
StarX[Counter] = TempX
StarY[Counter] = TempY
Plane = RND(3)
Select Plane
Case 0
StarP[Counter] = 1
Case 1
StarP[Counter] = 2
Case 2
StarP[Counter] = 3
EndSelect
Next Counter
Return
EndSub
:' Draws the starfield
Sub DrawStarField()
:' Erase the old starfield
Rect Starfield_win, 0, 0, 320, 240, RGB(0, 0, 0), RGB(0, 0, 0)
For Counter = 0 To 99
TempX = StarX[Counter]
TempY = StarY[Counter]
Pset Starfield_win,TempX,TempY, RGB(255, 255, 255)
Next Counter
Return
EndSub
:' Updates the starfield
Sub UpdateStarField()
For Counter = 0 To 99
Plane = StarP[Counter]
Select Plane
Case 1
TempX = StarX[Counter]
TempX2 = TempX - 1
StarX[Counter] = TempX2
Case 2
TempX = StarX[Counter]
TempX2 = TempX - 2
StarX[Counter] = TempX2
Case 3
TempX = StarX[Counter]
TempX2 = TempX - 4
StarX[Counter] = TempX2
EndSelect
TempX = StarX[Counter]
If TempX < 0
Temp = TempX + 319
StarX[Counter] = Temp
EndIf
Next Counter
Return
EndSub
That's nice - I like star-field programs ..
all the best, :)
Graham