Lan - Spiele
-
Also dieses Chatprogramm versteh ich irgendwie nich richtig...
Ich sehe zwar dass man da Sachen schreiben kann aber wie soll ich das jetzt auf meine Programme übertragen mit Variablen übertragen?mfg
Jakel
-

Es ist doch eigentlich ganz einfach. Der Client sendet Daten an den Server. Wenn dieser die Daten empfangen hat, wird ein Ereignis ausgelöst und man kann mit diesen Daten serverseitig weiterarbeiten.
Was verstehst Du nicht?
-
Jakel schrieb:
Ich hab nur irgend so einen Standard C++Builder von ner CD die bei nem Buch dabei war(C++ für Kids, Hans-Georg Schumann).
Ich weiß nicht was das für einer is xDWelche Auflage?
Ich habe das auch (2, Auflage)
Da ist BCB 1. Dabei...MM
-
Ich verstehe nicht, wie ich das jetzt auf eines meiner Programme übertragen soll (Code-Beispiel).
-
Hi,
bei einem Chat-Programm werden die übertragenen Daten (größtenteils) einfach bei den Clients ausgegeben. Bei einem Spiel ist dies (gewöhnlich) nicht der Fall. Statt dessen enthalten die Daten in irgendeinem von Dir selbst entworfenen Format Informationen über das Spiel, die der Client auswertet und beipsielsweise eine Figur an einer bestimmte Stelle auf dem Bildschirm zeichnet.
Das könnte z.B. so aussehen:F137PX200PY411ST16"Figur mit der ID 137 soll an die Bildschirmposition 200/411 im Zustand 16 (gehen, rechtes Bein vorne) gemalt werden."
Mit einem anderen Befehl könntest Du den Punktestand übertragen (s.u.), könntest Nachrichten der Benutzer untereinander ermöglichen (womit wir wieder beim Chat wären), könntest mitteilen, daß die HitPoints einer Figur auf 0 gesunken sind und was sonst noch alles.SP1P683 => Spieler 1, 683 Punkte SP3"Hallo zusammen!" => Spieler 3 sendet Nachricht, Inhalt in Anführungszeichen F32HP0 => Figur 32, HitPoints 0 (tot), Objekt löschen!Eben sämtlich relevanten Informationen über den Spielverlauf, den die einzelnen beteiligten Rechner haben müssen, um alles sauber darzustellen.
Jetzt ist nur noch Deine Kreativität gefragt; Du mußt Dir ein sinnvolles Übertragungsformat überlegen, so daß alles eindeutig übertragen werden kann!
Viele Grüße,
Christian
-
Aber wie sieht das denn jetzt in C++ aus wenn ich da eine Variable übergebe?
-
Du brauchst einen Puffer mit ausreichend Platz, ein eindeutiges Ende-Zeichen. Um das Beispiel von oben zu erweitern:
F137PX200PY411ST16## = Ende-Zeichen
Jetzt fragt der Rechner, der die Nachricht erhält, zunächst mal ab, wo das Ende-Zeichen ist. Alles was evtl. danach kommt, gehört zur nächsten Nachricht.
Die erste Nachricht kannst Du dann Schritt für Schritt durchgehen:
1. Zeichen 'F' bedeutet Figur, gefolgt von deren ID. Möglicher Code:Figur *fig = pFigures->FindFigureById();2. 'PX' Position x-Achse, gefolgt von Koordinate,
3. 'PY' s. 2., y-AchseTPoint pos = TPoint(200, 411); // Das muß natürlich angepaßt werden, je // nachdem wie Du die Werte extrahierst.4. 'ST' Status, vorgehensweise ähnlich wie zu Punkt 2. und 3., bloß mit einer int.
Anschließend kannst Du die Figur darstellen:fig->DrawOnCanvas(Canvas, pos, status); // Parameter: Der zum Zeichnen zu // benutzende Canvas, Position der // Figur, welches der Bilder der Figur.Jetzt gehst Du an die nächste Übertragung (hinter dem #-Zeichen), schlüsselst wieder die einzelnen Teilstücke der Anweisung auf und rufst die passenden Befehle (sprich: Funktionen und Methoden) auf.
Gruß,
Christian
-
Ja so kann ich das übertragene auswerten aber wie erstmal übertragen?
-
Auszug aus dem Beispiel, auf das Du bereits hingewiesen wurdest.
ClientSocket->Socket->SendText("Client sendet"); // Client ServerSocket->Socket->Connections[0]->SendText("Server sendet"); // ServerSchau Dir die Methoden mal in der BCB-Hilfe an.
-
Also im Beispiel Autosrv/Autocon stand nichts was dem dir geschriebenen gleicht.
Das was du geschrieben hast ist auch schon viel einleuchtender.