Synchronisieren!
Verfasst: 18.01.2008 23:57
Hi,
ich habe ein Problem.
Server:
Client:
Wenn man jetzt einmal in des Linke Eck fähr, und nachher in das Rechte Eck, ist die PosX nicht mehr null, wie es eig. sein sollte.
Wie kann ich das besser machen, bzw. Synchronisieren?
lg Milchshake
ich habe ein Problem.
Server:
Code: Alles auswählen
InitNetwork()
InitKeyboard()
InitSound()
InitSprite()
Structure Client
x.w
y.w
Id.w
State.w
EndStructure
Global NewList Client.Client()
If OpenWindow(0,0,0,410,310,"Tastatur Test",#PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_ScreenCentered)
If OpenWindowedScreen(WindowID(0),5,5,320,300,0,0,0)
CreateSprite(0,20,20)
StartDrawing(SpriteOutput(0))
Box(0,0,20,20,#White)
StopDrawing()
EndIf
EndIf
Buffer = AllocateMemory(1000)
CreateNetworkServer(0,6666)
Repeat
FlipBuffers()
ExamineKeyboard()
ClearScreen(0)
FreeMemory(Buffer)
Buffer = AllocateMemory(1000)
Event.l = WindowEvent()
StartDrawing(ScreenOutput())
DrawingMode(1)
If Sent = 0
DrawText(100,100,"Nichts gedrückt",#White)
EndIf
If Sent = 2
DrawText(100,100,"Rechts gedrückt",#White)
EndIf
If Sent = 4
DrawText(100,100,"Links gedrückt",#White)
EndIf
DrawText(0,0,"PosX: "+Str(PosX),#White)
DrawText(0,20,"PosY: "+Str(PosY),#White)
StopDrawing()
;-Moving
Client = EventClient()
Server = NetworkServerEvent()
Select Server
Case 1
Start = 1
Case 2
ReceiveNetworkData(EventClient(),Buffer,1000)
Sent = PeekQ(Buffer)
Case 4
PosX = 0
PosY = 0
EndSelect
If Sent = 2
PosX + 2
EndIf
If Sent = 4
PosX - 2
EndIf
Until KeyboardPushed(#PB_Key_Escape) Or Event = #PB_Event_CloseWindow
Code: Alles auswählen
InitNetwork()
InitKeyboard()
InitSound()
InitSprite()
Structure Client
x.w
y.w
Id.w
State.w
EndStructure
Global NewList Client.Client()
If OpenWindow(0,0,0,410,310,"Tastatur Test",#PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_ScreenCentered)
If OpenWindowedScreen(WindowID(0),5,5,320,300,0,0,0)
CreateSprite(0,20,20)
StartDrawing(SpriteOutput(0))
Box(0,0,20,20,#White)
StopDrawing()
EndIf
EndIf
Buffer = AllocateMemory(1000)
Server = OpenNetworkConnection("127.0.0.1",6666)
Repeat
FlipBuffers()
ExamineKeyboard()
ClearScreen(0)
FreeMemory(Buffer)
DisplaySprite(0,PosX,PosY)
Buffer = AllocateMemory(1000)
Event.l = WindowEvent()
Old = Sent
If KeyboardPushed(#PB_Key_Right)
Sent = 2
PokeQ(Buffer,Sent)
PosX + 2
EndIf
If KeyboardPushed(#PB_Key_Left)
Sent = 4
PokeQ(Buffer,Sent)
PosX - 2
EndIf
If KeyboardReleased(#PB_Key_All)
Sent = 0
PokeQ(Buffer,Sent)
EndIf
StartDrawing(ScreenOutput())
DrawingMode(1)
If Sent = 0
DrawText(100,100,"Nichts gedrückt",#White)
EndIf
If Sent = 2
DrawText(100,100,"Rechts gedrückt",#White)
EndIf
If Sent = 4
DrawText(100,100,"Links gedrückt",#White)
EndIf
DrawText(0,0,"Sent: "+Str(Sent),#White)
DrawText(0,20,"Old: "+Str(Old),#White)
StopDrawing()
Client = EventClient()
If Sent <> Old
SendNetworkData(Server,Buffer,1000)
EndIf
Until KeyboardPushed(#PB_Key_Escape) Or Event = #PB_Event_CloseWindow
Wie kann ich das besser machen, bzw. Synchronisieren?
lg Milchshake