PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C++] Senden und Empfangen gleichzeitig (game)



exodus407
18.09.2007, 15:36
hi leute !

ich bin gerade dabei ein spiel zu programmieren das über lan laufen soll ich habe sowas schon mal gemacht allerdings mit tic tac toe ( was ziemlich leicht ist) . nun will ich ein spiel machen wo man herumrennt und buchstaben herumfliegn lässt.

folgendes problem : bei lan müssen beide spieler senden und empfangen :

send(s,(char*)&move, 4, 0);

recv(s, (char*)&move, 4, 0);

also jetzt kann ich solange meine bewegungsbefehl nicht rüberschicken bis ich etwas empfangen habe ( in der variable "move " wird meine aktion gespeichert zb: 'w' : nach oben bewegen)

ich hoffe ihr versteht was ich meine !

danke im voraus Exo

Andyi
18.09.2007, 15:39
Das frag lieber in nem C++ fachforum^^".

exodus407
18.09.2007, 15:39
EDIT : also links und rechts am rand bewegen sich 2 charaktere ( im DOS fenster sind es buchstaben oder smileys) auf und ab und schiessen feuerbälle
und man kann ja den feuerbällen nicht ausweichen weil man erst etwas machen kann wenn der andere wieder was gemacht hat.......... ( Schach prinzip) .... ich will aber das das gleichzeitig abläuft ..... so jetzt müsste es zu verstehen sein :D

bonti
18.09.2007, 15:41
Das frag lieber in nem C++ fachforum^^".

Rofl, wofür gibt es net Moderator hier? Damit man trotzdem in nem ''C++ Fachforum'' fragt, also musst mal gucken ob zao online ist..

// Sry 4 Spam.

-[RiDER]-
18.09.2007, 16:29
du musst ne schleife machen.

beide senden + empfangen ständig einen wert. z.B. 0. wenn etwas geändert wird, ändert sich der wert, der geschickt wird. das merkt der andere rechner und kann das angekommene verarbeiten.

ca so (achtung: pseudocode):

while(!game_end) //ganz normale main-loop des games...
{
recv_value = recv();
/*
der Server sollte zuerst empfangen, die peers zuerst senden
(eig egal, aba einer muss anfangen.
dementaprechend müssen die peers am ende der schleife empfangen)
*/
if(recv_value != 0)
change_other_players_values(recv_value);

... //rest der main-loop

send_value = change_own_values();
//change_own_values sollte 0 zurückgeben, wenn sich nix geändert hat ;)
send(send_value);
}

MfG RiDER