Kleines Client-Server Game via SDL, brauche kleinen Denkanstoss
-
Hi!
Habe folgendes Problem:
Auf dem Server laeuft eine Anwendung, bei der man mit den Cursortasten eine Spielfigur ueber den Screen hetzen kann. Nun nehme ich die jeweiligen Koordinaten die sich nach jedem Tastendruck veraendern und sende sie an meinen Client, der die Werte nun fleissig in der Konsole (zum Testen, soll spaeter das gleiche Bild haben wie der Server) ausgibt. Jetzt ist es aber so, dass die Werte in jedem Zug immer von vorn beginnen. Also folgendermassen:
1. Tastenklick -> x.pos = 8
2. Tastenklick -> x.pos = 8 -> x.pos = 24
3. Tastenklick -> x.pos = 8 -> x.pos = 24 -> x.pos = 40
usw.
Was ich brauche ist ja lediglich der letzte Wert pro Durchlauf der Loop und nicht immer seine gesamte Geschichte.
Wo liegt der Hund begraben, wonach hoert sich das fuer Euch an?? Denke der Code wuerde den Rahmen sprengen, da es hier sicherlich jemanden gibt der sich schon einmal mit dem Problem auseinander gesetzt hat. Sollte dem nicht so sein und Ihr eure Glaskugeln beschwoeren muesst, werde ich es spaeter einmal nachholen und ihn posten.
steff
-
Was soll das für eine art Spiel sein? Oder art von Anwendung?
Ein Server und ein Client? Was bringt der "server"? Ich als Client bewege ja die Spielfigur, dann seh ich die Bewegung doch auf meinem Screen der von meiner Clientanwendung gezeichnet wird. Die koordinaten sende ich zum Server. Ok. und dann? was macht der Server damit? Schickt er die Daten zu anderen Clients, die die Bewegung sehen sollen? Oder soll der Server die Bewegung ( neue position ) ausrechnen und dem Client zurücksenden, damit er die neue pos zeichnet? Wie genau stellst du dir den Ablauf vor?
Normalerweise hast du in der Loop ( im Server ) z.b. eine "Position aller Clients abfragen". Dann kommt ne Message vom Client rein ( z.b. a)"pfeiltaste_rechts gedrückt" oder b)x_pos = 320; ) dann rechnest du die neue pos aus(a) oder du hast sie ja gleich (b).(( ok eigentlich bei b sendest du das rect ))
Und warum soll die pos bei dir immer wieder vom neuen angehen ( deine 8 )???
-
Sowohl der Server als auch der Client haben eine Spielfigur. Ich bin soweit das der Server seine ueber die Cursortasten steuert und diese Positionen nicht nur auf dem Serverbildschirm angezeigt werden, sondern sie dem Client dazu geschickt werden um sie auf dem Clientbildschirm in der Konsole auszugeben.
Hier habe ich das Problem, das wenn ich es spaeter einmal alles zusammenfuege ich ja pro Schleifendurchlauf immer nur eine Positionsangabe brauche, also falls die Serverfigur einen Schritt nach Rechts macht, dieser Schritt mit sagen wir 8 Bildpunkten pro Schritt auch auf dem Clientbildschirm zu sehen sein wird. Es ist aber so das ich jetzt bei jedem Tastendruck, der nun wiederrum die veraenderten Positionswerte an den Client schickt, die Ausgabe auf dem Clientbildschirm, nicht eine cout Anweisung mit einer gewuenschten Position ausgibt, sondern immer den gesammten Werdegang vom ersten Tastendruck bis in die Steinzeit und zurueck. Bekomme dann beim ersten Tastendruck ein cout mit 8, beim naechsten Tastendruck bekomme ich zwei cout´s mit der 8 und der 16, beim dritten Tastendruck bekomme ich drei cout´s mit der 8, 16, 24 usw. usw.
Verstaendlicher?
-
Problem geloesst, Danke war ein Zeigerproblem