ich versuche mich gerade daran ein kleines Spiel zu porgrammieren. Das funzt auch ganz gut.
Nun würde ich auch ganz gerne einen Multiplayer Modus einbauen.
Dazu müsste ich irgendwie die Informationen der Spieler an den Server/ bzw. die Clients schicken. Dafür habe ich mir mal das Gorilla-Projekt von Corpsman angeschaut.
Ich habe jetzt versucht die Informationsübertragung so umzusetzen, dass eine Zahl (als Referenz für die Art der Information) und dann die Information an sich gesendet wird.
Dazu habe ich ein kleines Testprojekt geschrieben, das ersteinmal nur die Referenzzahl auswerten soll. Doch das will nicht so recht bei mir klappen.
Folgender Quelltext des Servers:
Code: Alles auswählen
procedure Test(Code: Byte; aSocket: TLSocket);
begin
Case Code of
0: begin
ShowMessage('Code =0');
end;
1: begin
ShowMessage('Code =1');
end;
end;
end;
procedure TForm1.ServerReceive(aSocket: TLSocket);
var b, len: integer;
begin
// der Server empfängt tatsächlich etwas !!!
len:=aSocket.Get(b, 1); // damit hat der irgendein Problem
// keine Fehlermeldung wenn b: Integer;
// hier wird gestoppt da len wohl 0 ist?
len:= aSocket.Get(b, 1);
If len=0 then // es wurde nichts empfangen
exit
Else Test(b, aSocket); // wird also im Moment nicht ausgeführt
end;
Und für das Senden vom Client:
Code: Alles auswählen
Procedure SendMessage(Code: byte; Message: String);
var data: Array of byte;
i: integer;
begin
setlength(data, length(Message) + 2); // länge von data = Länge der Nachricht +2;
data[0] := Code; // data[0]= Code
data[1] := length(Message); // data[1]= Länge der Nachricht
For i := 1 To Length(message) Do // alle Char der Nachricht abgehen
data[i + 1] := ord(message[i]);
Form1.Client.Send(data[0], high(data) + 1); // Send(data, size); Send(Code, Größe der data)
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
SendMessage(0, 'Test');
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
SendMessage(1, 'anderer Test');
end;
Leider klappt das mit dem auslesen der Referenzzahl noch nicht so.
Ich nutze LNet.
Ich würde mich über Hilfe und mögliche Lösungen freuen.
Vielen Dank im Vorraus.