ich probiere mich gerade am Network, und ich glaube, ich habs schon so ziemlich draußen.
ABER:
Dieses kleine "Spiel" (was eig. erst ein Spiel werden soll) hat denke ich einen schwerwiegenden Fehler, der das ganze um so einiges Verzögert.
Hier mal der Code:
Server:
Code: Alles auswählen
If InitNetwork() = 0
MessageRequester("Fehler","Konnte das Network nicht starten")
End
EndIf
If InitSprite() = 0 Or InitKeyboard() = 0
MessageRequester("Fehler", "Konnte DirectX 7 nicht starten", 0)
End
EndIf
If OpenWindow(0,0,0,410,310,"The little Spider Game-Server",#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()
CreateSprite(1,20,20)
StartDrawing(SpriteOutput(1))
Box(0,0,20,20,#Green)
StopDrawing()
EndIf
Else
MessageRequester("Fehler", "Konnte den Screen nicht öffnen", 0)
End
EndIf
direction = 1
playerX = 150
playerY = 280
Buffer2 = AllocateMemory(1000)
CreateNetworkServer(0,6666)
Buffer = AllocateMemory(1000)
Repeat
Event.l = WindowEvent()
If Event = #PB_Event_Gadget
; do the normal application stuff here...
Gadget = EventGadget()
Else
; do the sprite & screen stuff here...
FlipBuffers() ; Inverse the buffers (the back become the front (visible)... and we can do the rendering on the back
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Up) And playerY > 0 : playerY -3 : EndIf
If KeyboardPushed(#PB_Key_Down) And playerY < 280 : playerY +3 : EndIf
If KeyboardPushed(#PB_Key_Left) And playerX > 0 : playerX -3 : EndIf
If KeyboardPushed(#PB_Key_Right) And playerX < 300 : playerX +3 : EndIf
; Clear the screen and draw our sprites
ClearScreen(RGB(0,0,0))
DisplaySprite(0, playerX, playerY)
If Start = 1
DisplaySprite(1,sentx,senty)
EndIf
Client = EventClient()
Server = NetworkServerEvent()
Select Server
Case 1
Start = 1
Case 2
If State = 0
ReceiveNetworkData(EventClient(),Buffer,1000)
sentx = PeekQ(Buffer)
State = 1
EndIf
If State = 1
ReceiveNetworkData(EventClient(),Buffer,1000)
senty = PeekQ(Buffer)
State = 0
EndIf
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow Or KeyboardPushed(#PB_Key_Escape)
End
Code: Alles auswählen
If InitNetwork() = 0
MessageRequester("Fehler","Konnte das Network nicht starten")
End
EndIf
If InitSprite() = 0 Or InitKeyboard() = 0
MessageRequester("Fehler", "Konnte DirectX 7 nicht starten", 0)
End
EndIf
If OpenWindow(0,0,0,410,310,"The little Spider Game-Client",#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()
CreateSprite(1,20,20)
StartDrawing(SpriteOutput(1))
Box(0,0,20,20,#Green)
StopDrawing()
EndIf
Else
MessageRequester("Fehler", "Konnte den Screen nicht öffnen", 0)
End
EndIf
Buffer2 = AllocateMemory(1000)
direction = 1
playerX = 150
playerY = 280
Server = OpenNetworkConnection("127.0.0.1",6666)
Buffer = AllocateMemory(1000)
Repeat
Event.l = WindowEvent()
If Event = #PB_Event_Gadget
; do the normal application stuff here...
Gadget = EventGadget()
Else
; do the sprite & screen stuff here...
FlipBuffers() ; Inverse the buffers (the back become the front (visible)... and we can do the rendering on the back
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Up) And playerY > 0 : playerY -3 : EndIf
If KeyboardPushed(#PB_Key_Down) And playerY < 280 : playerY +3 : EndIf
If KeyboardPushed(#PB_Key_Left) And playerX > 0 : playerX -3 : EndIf
If KeyboardPushed(#PB_Key_Right) And playerX < 300 : playerX +3 : EndIf
; Clear the screen and draw our sprites
ClearScreen(RGB(0,0,0))
DisplaySprite(0, playerX, playerY)
PokeQ(Buffer2,PlayerX)
SendNetworkData(Server,Buffer2,1000)
PokeQ(Buffer2,PlayerY)
SendNetworkData(Server,Buffer2,1000)
ServerEvent = NetworkClientEvent(Server)
Select ServerEvent
Case 0
State = 0
Case 2
If State = 1
ReceiveNetworkData(Server,Buffer,1000)
sentx = PeekQ(Buffer)
State = 2
EndIf
If State = 2
ReceiveNetworkData(Server,Buffer,1000)
senty = PeekQ(BUffer)
State = 1
EndIf
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow Or KeyboardPushed(#PB_Key_Escape)
End
Was mache ich falsch, bzw. wie mache ich es richtig?
lg Milchshake