verzögerter Bildaufbau (Pong)
Verfasst: 27.09.2009 09:54
Morgen zusammen,
zur Übung bin ich gerade dabei einen Pong-Clon zu erstellen. Mit der Maus kann man die Spielerbalken steuern. Dabei fällt folgendes auf: Wenn ich den Spielerbalken in seine obere Endposition bewege, fängt er an zu Blinken bzw Flattern. Ich kann mir dieses Verhalten nicht erklären, zumal es wirklich nur in den oberen Reihen passiert. Kennt vielleicht jemand das Problem schon, und kann mir einen Rat geben?
Danke
zur Übung bin ich gerade dabei einen Pong-Clon zu erstellen. Mit der Maus kann man die Spielerbalken steuern. Dabei fällt folgendes auf: Wenn ich den Spielerbalken in seine obere Endposition bewege, fängt er an zu Blinken bzw Flattern. Ich kann mir dieses Verhalten nicht erklären, zumal es wirklich nur in den oberen Reihen passiert. Kennt vielleicht jemand das Problem schon, und kann mir einen Rat geben?
Danke
Code: Alles auswählen
;_______________Konstanten
#window_w = 800
#window_h = 600
Enumeration
#window
#button1
#image
#image_g
EndEnumeration
;_______________Variablen
Global gamemode = 1 ;0-Anfang / 1-Spiel / 2-Credits und Quit
;_______________Struktures
Structure player_container
pos_y.f
pos_x.f
EndStructure
Global Dim player.player_container(2)
player(1)\pos_y = #window_h/2
player(1)\pos_x = 25
player(2)\pos_y = #window_h/2
player(2)\pos_x = #window_w-50
;_______________Init DirectX
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
MessageRequester("Error", "Can't init DirectX!", 0)
End
EndIf
;_______________Fenstererstellung
OpenWindow(#window, 0, 0, #window_w, #window_h, "2D Drawing Test",#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(#window),0,0,#window_w,#window_h,0,0,0)
;_______________Procedures
Procedure move()
player(1)\pos_y = MouseY()
If player(1)\pos_y <= 0
player(1)\pos_y = 0
EndIf
If player(1)\pos_y >= #window_h-100
player(1)\pos_y = #window_h-100
EndIf
EndProcedure
Procedure draw()
Box(player(1)\pos_x,player(1)\pos_y,25,100,RGB(240, 170, 15))
Box(player(2)\pos_x,player(2)\pos_y,25,100,RGB(66, 12, 79))
EndProcedure
;_______________Framerate
SetFrameRate(60)
;_______________Mouse auf mitte
MouseLocate(#window_w/2,#window_h/2)
;_________________________________________________________________________Hauptschleife
Repeat
ExamineKeyboard() ; Tastatur aktivieren
ExamineMouse() ; Mouse aktivieren
ClearScreen(RGB(0,0,0)) ; Bildschirm saeubern und Zeichnungsabteilung
StartDrawing(WindowOutput(#window))
move()
draw()
StopDrawing()
FlipBuffers() ; Den Buffer wechseln
If KeyboardReleased(#PB_Key_Escape)
gamemode = 2
EndIf
Until gamemode = 2
End