April 19, 2024, 05:21:30 AM

News:

Own IWBasic 2.x ? -----> Get your free upgrade to 3.x now.........


GDI Side Scrolling Starfield

Started by h3kt0r, July 19, 2017, 09:14:09 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

h3kt0r

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

GWS

That's nice - I like star-field programs ..

all the best, :)

Graham
Tomorrow may be too late ..