Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
//Spieler A = Spieler, der das Spiel leitet (Server) //Spieler B = Zweiter Spieler (Client) void Network::ClientRun (float B_X_Pos, float B_Y_Pos, float B_AnimationNR, int B_SkillID, bool B_Jump, float &A_X_Pos, float &A_Y_Pos, float &A_AnimationNR, int &A_SkillID, bool &A_Jump) { if (Client.IsValid () == false) //Prüfen, ob die Verbindung noch steht std::cout << "Disconected" << std::endl; if (!(ToSend << B_X_Pos << B_Y_Pos << B_AnimationNR << B_SkillID << B_Jump)) //Packet senden return; if (!(Recieve >> A_X_Pos >> A_Y_Pos >> A_AnimationNR >> A_SkillID >> B_Jump)) //Packet empfangen return; } void Network::ServerRun (float A_X_Pos, float A_Y_Pos, float A_AnimationNR, int A_SkillID, bool A_Jump, float &B_X_Pos, float &B_Y_Pos, float &B_AnimationNR, int &B_SkillID, bool &B_Jump) { if (Server.IsValid () == false) //Prüfen, ob die Verbindung noch steht std::cout << "Disconected" << std::endl; if (!(Recieve >> NX_Pos >> NY_Pos >> NAnimation >> NSkillID >> NJump)) //Packetempfangen return; std::cout << "Server: Empfangen" << std::endl; if (!(ToSend << A_X_Pos << A_Y_Pos << A_AnimationNR << A_SkillID << B_Jump)) //Packet versenden return; std::cout << "Server: Gesendet" << std::endl; } |
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Ich benutze Referenzen, um die Werte des Spielers aus der Funktion einfach übertragen kann. Ich hab es mir komischer Weise angewöhnt, auch wenn eigentlich Zeiger bevorzugt werden.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Jack« (28.08.2012, 16:08)
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
//////////////////////////////////////////////////////////// // Headers //////////////////////////////////////////////////////////// #include <SFML/Network.hpp> #include <iostream> #include "Network.hpp" //////////////////////////////////////////////////////////// /// Create a client and connect it to a running server /// //////////////////////////////////////////////////////////// void Network::DoClientTCP(unsigned short Port, sf::IPAddress NServerAddress) { ServerAddress = NServerAddress; // Connect to the specified server if (Client.Connect(Port, ClientAddress.GetLocalAddress ()) != sf::Socket::Done) { std::cout << "Failed to connect to the server" << std::endl; return; } Connected = true; std::cout << "Connected to server " << ServerAddress << std::endl; std::cout << "Client "<< std::endl; } //////////////////////////////////////////////////////////// /// Launch a server and wait for incoming connections /// //////////////////////////////////////////////////////////// void Network::DoServerTCP(unsigned short Port) { // Create a TCP socket for communicating with clients // Listen to a port for incoming connections if (!Server.Listen(Port)) return; std::cout << "Server is listening to port " << Port << ", waiting for connections... " << std::endl; // Wait for a connection Server.Accept(Clien2t, &ClientAddress); std::cout << "Client connected : " << ClientAddress << std::endl; std::cout << "Server "<< std::endl; } ////////////////// //Datenaustausch// ////////////////// //Spieler A = Spieler, der das Spiel leitet (Server) //Spieler B = Zweiter Spieler (Client) void Network::ClientRun (float B_X_Pos, float B_Y_Pos, float B_AnimationNR, int B_SkillID, bool B_Jump, float &A_X_Pos, float &A_Y_Pos, float &A_AnimationNR, int &A_SkillID, bool &A_Jump) { if (Client.IsValid () == false) //Prüfen, ob die Verbindung noch steht std::cout << "Disconected" << std::endl; ToSend << B_X_Pos << B_Y_Pos << B_AnimationNR << B_SkillID << B_Jump; if (Client.Send (ToSend)!= sf::Socket::Done) //Packet senden return; Client.Send (ToSend); std::cout << "Client: gesendet" << std::endl; if (!(Recieve >> A_X_Pos >> A_Y_Pos >> A_AnimationNR >> A_SkillID >> B_Jump)) //Packet empfangen return; std::cout << "Client: empfangen" << std::endl; } void Network::ServerRun (float A_X_Pos, float A_Y_Pos, float A_AnimationNR, int A_SkillID, bool A_Jump, float &B_X_Pos, float &B_Y_Pos, float &B_AnimationNR, int &B_SkillID, bool &B_Jump) { if (Server.IsValid () == false) //Prüfen, ob die Verbindung noch steht std::cout << "Disconected" << std::endl; if (Server.Receive (Recieve) != sf::Socket::Done) //Packetempfangen return; Server.Receive (Recieve); Recieve >> NX_Pos >> NY_Pos >> NAnimation >> NSkillID >> NJump; std::cout << "Server: Empfangen" << std::endl; if (!(ToSend << A_X_Pos << A_Y_Pos << A_AnimationNR << A_SkillID << B_Jump)) //Packet versenden return; std::cout << "Server: Gesendet" << std::endl; Sended = true; } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
void Game::ServerClientRun () { if (Network.Connected == true) { if (ClientOn == true) { Network.ClientRun (PlayerA.m_fXPos, PlayerA.m_fYPos, PlayerA.m_Animation, PlayerA.SkillID, PlayerA.b_Jump, PlayerB.m_fXPos, PlayerB.m_fYPos, PlayerB.m_Animation, PlayerB.SkillID, PlayerB.Jump); } if (ClientOn == false) { Network.ServerRun (PlayerA.m_fXPos, PlayerA.m_fYPos, PlayerA.m_Animation, PlayerA.SkillID, PlayerA.b_Jump, PlayerB.m_fXPos, PlayerB.m_fYPos, PlayerB.m_Animation, PlayerB.SkillID, PlayerB.Jump); } } } void Game::Run () { const sf::Input& Input = Fenster.GetInput (); while (running == true) { Fenster.Clear (); Fenster.Draw(Map.MBackround); Fenster.Draw (PlayerB.MSecondPlayer); Fenster.Draw(PlayerA.MPlayer); PlayerA.All (Input, Fenster); Map.GroundTreffen (PlayerA.m_fXPos, PlayerA.m_fYPos, PlayerA.b_Ground, PlayerA.b_DownStair); Fenster.Display (); Event (); ServerClientRun (); } } |
C-/C++-Quelltext |
|
1 2 |
if (!(Recieve >> A_X_Pos >> A_Y_Pos >> A_AnimationNR >> A_SkillID >> B_Jump)) //Packet empfangen return; |
C-/C++-Quelltext |
|
1 2 |
if (!(ToSend << A_X_Pos << A_Y_Pos << A_AnimationNR << A_SkillID << B_Jump)) //Packet versenden return; |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
Ablage Network::ClientRun (Ablage B_Ablage) { if (Client.IsValid () == false) //Prüfen, ob die Verbindung noch steht std::cout << "Disconected" << std::endl; ToSend << B_Ablage; if (Client.Send (ToSend)!= sf::Socket::Done) //Packet senden std::cout << "Client: Senden Fehlgeschlagen" << std::endl; if (Client.Receive (Receive) != sf::Socket::Done) //Packet empfangen std::cout << "Client: Empfangen fehlgeschlagen" << std::endl; else { Receive >> C; std::cout << "Client: empfangen" << std::endl; return C; } } Ablage Network::ServerRun (Ablage A_Ablage) { if (Client.Receive (Receive) != sf::Socket::Done) //Packetempfangen std::cout << "Server: Empfangen Fehlgeschlagen" << std::endl; else { Server.Receive (Receive); Receive >> C; return C; } ToSend << A_Ablage; if (Client.Send (ToSend)!= sf::Socket::Done) //Packet versenden std::cout << "Server: Gesendet Fehlgeschlagen" << std::endl; else std::cout << "Server: Gesendet" << std::endl; } |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »RunRanger« (30.08.2012, 14:22)
Community-Fossil
Werbeanzeige