better using:
Repeat
Event = WindowEvent()
...
;
; starfield credits unknokwn
;
; rasters credits : padman and inc. , many thanks dudes
Enumeration
#win
EndEnumeration
#scrw = 640
#scrh = 502
#centerofscrw = #scrw/2
#centerofscrh = #scrh/2
SSum.w = 5000 ; nbr of Stars
Cspeed.f=10
CameraZ.f=0
xres = 640 ; ScreenWidth
yres = 502 ; ScreenHeight
InitSprite()
InitKeyboard()
UsePNGImageDecoder()
Gosub InitStarField
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
MessageBox_ (0,"Can't open DirectX 7 or later", "blahhhh", #MB_ICONINFORMATION|#MB_OK)
End
EndIf
OpenWindow(#win, 0,0,640, 502, "Yep !" , #PB_Window_SystemMenu|#PB_Window_BorderLess |#PB_Window_ScreenCentered )
OpenWindowedScreen(WindowID(#win),0,0,640,502)
SetFrameRate(90)
StartDrawing(ScreenOutput())
For y = 0 To 32
Box( 0, y, 640, 64 - y*2, RGB(y*6, 35, 65) )
Next y
StopDrawing()
GrabSprite(1, 0, 0, 640, 64)
;-------- MainLoop --------
Repeat
Event = WindowEvent()
ExamineKeyboard()
ClearScreen(0)
StartDrawing(ScreenOutput())
Gosub DrawStarField
Gosub MoveCamera
StopDrawing()
DisplaySprite(1, 0, 36 + 8*Sin(r.f)) ; 36 to set it up on screen and *sin for amplitude
DisplaySprite(1, 0, 136 + 50*Sin(r + 1.57))
DisplaySprite(1, 0, 236 + 8*Sin(r + 3.14))
r+0.085
FlipBuffers()
;close window if you click on"x"
Select Event
Case #PB_Event_CloseWindow
EventWindow = EventWindow()
If EventWindow = #win
CloseWindow(#win)
End
EndIf
EndSelect
Until KeyboardPushed(#PB_Key_Escape)
End
;--------- Procs / Subs -------------
InitStarField:
Structure _3DStar
x.f ; X-Coordinate
y.f ; Y-Coordinate
z.f ; Z-Coordinate
EndStructure
Dim Stars._3DStar(SSum)
For strtpoint = 0 To SSum
Stars(strtpoint)\x = Random(10000)-5000
Stars(strtpoint)\y = Random(10000)-5000
Stars(strtpoint)\z = 100 + Random(1000)
Next strtpoint
Return
MoveCamera:
If CameraZ>1000
Direction=-1
ElseIf CameraZ<-1000
Direction=1
EndIf
If Direction=1 And Cspeed<10
Cspeed=Cspeed+0.01
ElseIf Direction=-1 And Cspeed>-10
Cspeed=Cspeed-0.01
EndIf
CameraZ=CameraZ+Cspeed
Return
DrawStarField:
For strtpoint = 0 To SSum
If Stars(strtpoint)\z<CameraZ
Stars(strtpoint)\z=CameraZ+1000
ElseIf Stars(strtpoint)\z>(CameraZ+1000)
Stars(strtpoint)\z=CameraZ
EndIf
SX = Stars(strtpoint)\x / (Stars(strtpoint)\z-CameraZ)*100+#centerofscrw
SY = Stars(strtpoint)\y / (Stars(strtpoint)\z-CameraZ)*100+#centerofscrh
If SX<#scrw And SY<#scrh And SX>0 And SY>0
b.f = 255-(((Stars(strtpoint)\z)-CameraZ)*(255./1000.))
c=Int(b)
Plot ( SX, SY, RGB(c,c,c))
EndIf
Next strtpoint
Return