![]() |
Hilfe bei Sockets
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:
Zusammengefasst:
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 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.) |
AW: Hilfe bei Sockets
#1 Beim OnClientConnect (oder hieß es OnConnect) Ereignis folgendes eintragen
Delphi-Quellcode:
#2 Da sowieso nur 2 Spieler gleichzeitig verbunden sind (sicher), geht folgendes
if ServerSocket1.Socket.ActiveConnections = 2 then
Socket.Close; // oder ähnlich~
Delphi-Quellcode:
ServerSocket1.Socket.Connections[0].SendText('Ready?');
ServerSocket1.Socket.Connections[1].SendText('Ready?'); delay(1000); ServerSocket1.Socket.Connections[0].SendText('3'); ServerSocket1.Socket.Connections[1].SendText('3'); delay(1000); ServerSocket1.Socket.Connections[0].SendText('2'); ServerSocket1.Socket.Connections[1].SendText('2'); delay(1000); ServerSocket1.Socket.Connections[0].SendText('1'); ServerSocket1.Socket.Connections[1].SendText('1'); delay(1500); ServerSocket1.Socket.Connections[0].SendText('RACE!!!'); ServerSocket1.Socket.Connections[1].SendText('RACE!!!'); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz