Hallo,
Ich möchte ein simples Client/Server Spiel entwickeln. Leider habe ich noch ein Paar Probleme.
Spielprinzip:
2 Spieler (Clients) verbinden sich mit einem Server (
IP aus Edit-Feld). Sobald der Server 2 Clienten hat, startet er das Spiel (Problem 1). Die beiden Spieler drücken jeweils einen Button. Jeder Buttonklick wird gesendet. Der Server schickt diesen Wert (als Text) rum. Die 2 Clients wandeln ihn in einen Integer um und rechnen ihm auf eine ProgressBar (die eigene ist grün, die des Gegners rot). Wer zuerst die Bar vollhat gewinnt
. Ich habe das so gelöst, das bei OnClientConnect eine Variable vom Typ Integer aufgezählt wird (Startwert 0, bei Connection +1, bei Disconnection -1). Ein Timer überprüft die Variable. Ist sie = 2, dann hält er an und sendet an die Clients einen Countdown:
Delphi-Quellcode:
For I := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
begin
with ServerSocket1.Socket.Connections [I] do
if (Connected) then
begin
SendText('Ready?');
delay(1000);
SendText('3');
delay(1000);
SendText('2');
delay(1000);
SendText('1');
delay(1500);
SendText('RACE!!!');
end;
end;
//Problem 2
Zusammengefasst:
1. Mein Problem 1 ist, das ich, wenn 2 Clients verbunden sind, jede weitere unterbinden muss, wie stelle ich das am besten an? Ich hätte einer eingehenden Verbindung einen SendText geschickt, und der Client ließt denn: if Socket.ReveiceText = 'disconnect please' then blablablablabla
2. Problem 2 sieht man oben (Code). Das ganze funktioniert ja an sich... Jedoch erhält erst Client A das Ganze und dann erst Client B. Wie schicke ich meinen Countdown an beide Clients gleichzeitig?!
Anmerkung: Wenn ihr Ideen habt, die das Spiel verbessern könnten, dürft ihr euch auch gerne äußern (z.B. Serverliste, etc.)