GPI hat geschrieben:Gosub FPS
gewöhn dir das ganz schnell ab! Goto und Gosub sind in höheren Programmiersprachen no-gos und können gerade bei größeren Projekten erhebliche Probleme verursachen.
Ist wie mit den Flugzeug - das hat auch einen Schleudersitz - aber deswegen benutzt man ihn nicht dauernt.
 
PureBasic ist aber Basic, und keine "höhere" Programmiersprache 

 Aber selbst im Codearchiv steht das so drinnen:
http://www.purearea.net/pb/CodeArchiv/G ... ate/FPS.pb
Edit: Ich denke, dass es nicht im Sinne des Erfinders ist, dass jetzt der ganze Bildschirm voller roter, blauer und grüner Pixel ist.
Code: Alles auswählen
;- Initialisierungen
InitSprite()
InitKeyboard()
InitMouse()
InitEngine3D()
UsePNGImageDecoder()
Global screen = 0 ;0 = Startbildschirm, 1 = Spiel, 2 = Pause
hWnd = OpenWindow(#PB_Any, 0, 0, 800, 600, #Name, #PB_Window_ScreenCentered|#PB_Window_MinimizeGadget)
If hWnd
 
  hScr = OpenWindowedScreen(WindowID(hWnd), 0, 0, WindowWidth(hWnd), WindowHeight(hWnd), 1, 0, 0)
  If hScr = 0
    MessageRequester(#Name, "Can't initialize screen!")
    End
  EndIf
  
  sMouse = LoadSprite(#PB_Any, GetPathPart(ProgramFilename())+"sprites/mouse.png")
  If sMouse = 0
    MessageRequester(#Name, "Failed to load "+GetPathPart(ProgramFilename())+"sprites/mouse.png!")
    End
  EndIf
  TransparentSpriteColor(sMouse, RGB(255, 0, 255))
  
  Repeat
    Repeat
      hEvent = WindowEvent()
      Select hEvent
       Case #PB_Event_CloseWindow
         End
      EndSelect
    Until hEvent = 0
    
    ClearScreen(RGB(0, 0, 0))
    RenderWorld()
    
    Select screen
        Case  0 ;- Startbildschirm
          Gosub FPS
          StartDrawing(ScreenOutput())
          DrawText(0, 0, FPS$+" FPS", RGB(0, 255, 0), RGB(0, 0, 0))
          StopDrawing()
          
          ExamineMouse()
          mouseX = MouseX()
          mouseY = MouseY()
          
          DisplayTransparentSprite(sMouse, MouseX(), MouseY())
          
          ExamineKeyboard()
          If KeyboardReleased(#PB_Key_Escape)
            End
          EndIf
        
    EndSelect
    FlipBuffers()
    Delay(20)
  ForEver
EndIf
FPS:
If sek = Val(FormatDate("%ss", Date()))
  FPS + 1
Else
  FPS$ = Str(FPS)
  FPS = 0
EndIf
sek = Val(FormatDate("%ss", Date()))
Return