Page 1 sur 1

Poste mes sources

Publié : dim. 02/janv./2005 21:22
par umbrella
Voila je poste mes sources , ca pourra p-e aidé (c'ests urement pas super bien codé ms je débute ^^)

voila server :

Code : Tout sélectionner

Procedure Xprint(mess$,x,y)
  StartDrawing(ScreenOutput())  
    Locate(x,y)
    DrawText(mess$)
  StopDrawing()
EndProcedure

Enumeration
  #joueur1
  #joueur2
  #balle
EndEnumeration

Procedure CreatePlayer()

  Structure Joueur
    X.l
    Y.l
  EndStructure
  Dim Joueur.joueur(1)
  
  joueur(0)\X = 20
  joueur(0)\Y = 250

  joueur(1)\X = 760
  joueur(1)\Y = 250
   
   
  CreateSprite(#joueur1,20,100)
  StartDrawing(SpriteOutput(#joueur1))
    Box(0,0,20,100,RGB(255,0,0))
  StopDrawing()
  
  CreateSprite(#joueur2,20,100)
  StartDrawing(SpriteOutput(#joueur2))
    Box(0,0,20,100,RGB(0,0,255))
  StopDrawing()
EndProcedure


Procedure CreateBalle()
  Structure Balle
    X.l
    Y.l
    Haut.b
    Bas.b
    Droite.b
    Gauche.b
  EndStructure
  
  Dim balle.balle(0)

  balle(0)\bas = 0
  balle(0)\haut = 1 
  balle(0)\Droite = 0
  balle(0)\Gauche = 1 
  
  balle(0)\X = 400
  balle(0)\Y = 300
  
  CreateSprite(#balle,20,20)
  StartDrawing(SpriteOutput(#balle))
    Circle(10,10,10,RGB(255,255,255))
  StopDrawing()
EndProcedure

Procedure InitAll()
  InitSprite()
  InitKeyboard()
  InitMouse()
  InitNetwork()
EndProcedure


Procedure InitWindow()
  #Window_main = 0
  #Window_main_flag = #Pb_window_screencentered | #Pb_window_systemmenu | #Pb_window_minimizegadget | #Pb_window_maximizegadget
  Global Window_Main_Hwnd.l
  Global Window_Event.l
  Window_Main_Hwnd = OpenWindow(#Window_main, 0, 0, 800, 600, #Window_main_flag, "Server Test")
  OpenWindowedScreen(Window_Main_Hwnd, 0, 0, 800, 600, 0, 0, 0)
EndProcedure


Procedure MoveBalle()

  If(SpriteCollision(#joueur1,joueur(0)\x,joueur(0)\y,#balle,balle(0)\x,balle(0)\y))
    balle(0)\gauche = 0 
    balle(0)\droite = 1
  EndIf

  If(SpriteCollision(#joueur2,joueur(1)\x,joueur(1)\y,#balle,balle(0)\x,balle(0)\y))
    balle(0)\droite = 0
    balle(0)\gauche = 1 
  EndIf
      
  If(balle(0)\y < 0)
    balle(0)\haut = 0
    balle(0)\bas = 1
  EndIf
  
  If(balle(0)\y > 590)
    balle(0)\bas = 0
    balle(0)\haut = 1
  EndIf
                     
  If(balle(0)\gauche = 1)
    balle(0)\x = balle(0)\x - 1
  EndIf
  
  If(balle(0)\droite = 1)
    balle(0)\x = balle(0)\x + 1
  EndIf

  If(balle(0)\haut = 1)
    balle(0)\y = balle(0)\y - 1
  EndIf

  If(balle(0)\bas = 1)
    balle(0)\y = balle(0)\y + 1
  EndIf
    
EndProcedure

port = 6969
;ip$ = "127.0.0.1"


buffer = AllocateMemory(0,1,0)



InitAll()
InitWindow()
CreatePlayer()
CreateBalle()

ExamineIPAddresses() 
Ip = NextIPAddress() 
ipstr$ = IPString(Ip)


If(CreateNetworkServer(port)= 0)
  MessageRequester("Erreur","Impossible de crée le server")
  End
Else
  MessageRequester("Message","Serveur " + ipstr$ + " crée sur le port " + Str(port)) 
EndIf





Partie = 0
Tps = 0

Repeat


  DisplaySprite(#joueur1,joueur(0)\x,joueur(0)\y)
  DisplaySprite(#joueur2,joueur(1)\x,joueur(1)\y)  
  DisplaySprite(#balle,balle(0)\X,balle(0)\y)

  
  
  If(Partie = 0)
    xprint("Appuyer sur Espace pour commencer",290,250)
  Else
    MoveBalle()
  EndIf

  
  
  ClientID = NetworkClientID()
  
  NetEvent.l = NetworkServerEvent()
  
  Select NetEvent
    Case 0
    Case 1
      MessageRequester("Alert","Client connecté ")
    Case 2
      ReceiveNetworkData(ClientID,buffer,1)
      dir$ = PeekS(buffer)
      Select dir$
        Case "Z"
          joueur(1)\y = joueur(1)\y - 3
        Case "S"
          joueur(1)\y = joueur(1)\y + 3
      ; Case "Q"
       ;   joueur(1)\x = joueur(1)\x - 3
        ;Case "D"
         ; joueur(1)\x = joueur(1)\x + 3
      EndSelect
    
    Case 3
    Case 4
          MessageRequester("Alert","Client deconnecté")
  EndSelect
  
  


  ExamineKeyboard()

  If(partie = 1)
  If(joueur(0)\y > 0) 
    If(KeyboardPushed(#pb_key_up))
      joueur(0)\y = joueur(0)\y - 3
      SendNetworkString(ClientID,"Z")
    EndIf
  EndIf
  
  If(joueur(0)\y < 500)
    If(KeyboardPushed(#pb_key_down))
      joueur(0)\y = joueur(0)\y + 3
      SendNetworkString(ClientID,"S")
    EndIf  
  EndIf
  EndIf
  
 ; If(KeyboardPushed(#pb_key_right))
  ;  joueur(0)\x = joueur(0)\x + 3
   ; SendNetworkString(ClientID,"D")
  ;EndIf
  ;If(KeyboardPushed(#pb_key_left))
   ; joueur(0)\x = joueur(0)\x - 3
    ;SendNetworkString(ClientID,"Q")
  ;EndIf  
  

  
  
  If(KeyboardPushed(#pb_key_space))
    SendNetworkString(ClientID,"G")
    Partie = 1
  EndIf
 


  W_Event.l = WindowEvent()

  If w_event = #pb_event_closewindow
    quit = 1
  EndIf
  


  FlipBuffers()
  ClearScreen(0,0,0)

Until quit = 1 

et voila le client :

Code : Tout sélectionner

Procedure Xprint(mess$,x,y)
  StartDrawing(ScreenOutput())  
    Locate(x,y)
    DrawText(mess$)
  StopDrawing()
EndProcedure

Enumeration
  #joueur1
  #joueur2
  #balle
EndEnumeration

Procedure CreatePlayer()

  Structure Joueur
    X.l
    Y.l
  EndStructure
  Dim Joueur.joueur(1)
  
  joueur(0)\X = 20
  joueur(0)\Y = 250

  joueur(1)\X = 760
  joueur(1)\Y = 250
   
  CreateSprite(#joueur1,20,100)
  StartDrawing(SpriteOutput(#joueur1))
    Box(0,0,20,100,RGB(255,0,0))
  StopDrawing()
  
  CreateSprite(#joueur2,20,100)
  StartDrawing(SpriteOutput(#joueur2))
    Box(0,0,20,100,RGB(0,0,255))
  StopDrawing()
EndProcedure

Procedure CreateBalle()
  Structure Balle
    X.l
    Y.l
    Haut.b
    Bas.b
    Droite.b
    Gauche.b
  EndStructure
  
  Dim balle.balle(0)

  balle(0)\bas = 0
  balle(0)\haut = 1 
  balle(0)\Droite = 0
  balle(0)\Gauche = 1 
  
  balle(0)\X = 400
  balle(0)\Y = 300
  
  CreateSprite(#balle,20,20)
  StartDrawing(SpriteOutput(#balle))
    Circle(10,10,10,RGB(255,255,255))
  StopDrawing()
EndProcedure



Procedure InitAll()
  InitSprite()
  InitKeyboard()
  InitMouse()
  InitNetwork()
EndProcedure


Procedure InitWindow()
  #Window_main = 0
  #Window_main_flag = #Pb_window_screencentered | #Pb_window_systemmenu | #Pb_window_minimizegadget | #Pb_window_maximizegadget
  Global Window_Main_Hwnd.l
  Global Window_Event.l
  Window_Main_Hwnd = OpenWindow(#Window_main, 0, 0, 800, 600, #Window_main_flag, "Client Test")
  OpenWindowedScreen(Window_Main_Hwnd, 0, 0, 800, 600, 0, 0, 0)
EndProcedure

Procedure MoveBalle()

  If(SpriteCollision(#joueur1,joueur(0)\x,joueur(0)\y,#balle,balle(0)\x,balle(0)\y))
    balle(0)\gauche = 0 
    balle(0)\droite = 1
  EndIf

  If(SpriteCollision(#joueur2,joueur(1)\x,joueur(1)\y,#balle,balle(0)\x,balle(0)\y))
    balle(0)\droite = 0
    balle(0)\gauche = 1 
  EndIf
      
  If(balle(0)\y < 0)
    balle(0)\haut = 0
    balle(0)\bas = 1
  EndIf
  
  If(balle(0)\y > 590)
    balle(0)\bas = 0
    balle(0)\haut = 1
  EndIf
                     
  If(balle(0)\gauche = 1)
    balle(0)\x = balle(0)\x - 1
  EndIf
  
  If(balle(0)\droite = 1)
    balle(0)\x = balle(0)\x + 1
  EndIf

  If(balle(0)\haut = 1)
    balle(0)\y = balle(0)\y - 1
  EndIf

  If(balle(0)\bas = 1)
    balle(0)\y = balle(0)\y + 1
  EndIf
    
EndProcedure


port = 6969
;ip$ = "127.0.0.1"
buffer = AllocateMemory(0,1,0)




InitAll()
InitWindow()
CreatePlayer()
CreateBalle()


ip$ = InputRequester("Message","Veuillez entrer ici l'addresse IP du serveur","")

ConnectionID = OpenNetworkConnection(ip$,port)

If(ConnectionID = 0)
  MessageRequester("Erreur","Impossible de rejoindre le server")
  End
Else
  MessageRequester("Message","Connection établit sur le serveur " + ip$ + " sur le port " + Str(port))
EndIf


Repeat


  DisplaySprite(#joueur1,joueur(0)\x,joueur(0)\y)
  DisplaySprite(#joueur2,joueur(1)\x,joueur(1)\y)  
  DisplaySprite(#balle,balle(0)\X,balle(0)\y)
 
     
  If(partie = 1)  
    MoveBalle()
  Else
    xprint("En attente du server",290,250)
  EndIf
  
  
 NetEvent.l = NetworkClientEvent(ConnectionID)
    
  Select NetEvent
    Case 0
    Case 1
    Case 2
    ReceiveNetworkData(ConnectionID,buffer,1)

    dir$ = PeekS(buffer)
    Select dir$
      Case "Z"
        joueur(0)\y = joueur(0)\y - 3
      Case "S"
        joueur(0)\y = joueur(0)\y + 3
      Case "Q"
        joueur(0)\x = joueur(0)\x - 3
      Case "D"
        joueur(0)\x = joueur(0)\x + 3
      Case "G"
        partie = 1
    EndSelect

    
    Case 3
  EndSelect
  

    


  ExamineKeyboard()

  If(joueur(1)\y > 0) 
    If(KeyboardPushed(#pb_key_up))
      joueur(1)\y = joueur(1)\y - 3
      SendNetworkString(ConnectionID,"Z")
    EndIf
  EndIf
  
  
  If(joueur(0)\y < 500)  
  If(KeyboardPushed(#pb_key_down))
    joueur(1)\y = joueur(1)\y + 3
    SendNetworkString(ConnectionID,"S")
  EndIf  
  EndIf 
  
  ;If(KeyboardPushed(#pb_key_right))
   ; joueur(1)\x = joueur(1)\x + 3
   ; SendNetworkString(ConnectionID,"D")
  ;EndIf
;  If(KeyboardPushed(#pb_key_left))
 ;   joueur(1)\x = joueur(1)\x - 3
  ;  SendNetworkString(ConnectionID,"Q")
  ;EndIf  

  ;If(SpriteCollision(#joueur1,joueur(0)\x,joueur(0)\y,#joueur2,joueur(1)\x,joueur(1)\y))
   ; xprint("touché",100,100)
  ;EndIf


  W_Event.l = WindowEvent()

  If w_event = #pb_event_closewindow
    quit = 1
  EndIf
  


  FlipBuffers()
  ClearScreen(0,0,0)

Until quit = 1 
j'spère que quelqu'un pourra m'aidé :?: :roll:

Publié : dim. 02/janv./2005 21:31
par umbrella
dsl jvoulais pas fair eun new post :(

Publié : dim. 02/janv./2005 21:33
par Oliv
Pas grave :wink: , par contre essai de mettre ta version de PB à jour, depuis la 9.80 (je crois) les mémoires par exemple ne sont plus gérés pareils.

Publié : dim. 02/janv./2005 21:43
par umbrella
oki je vais faire ca tantot :)