![]() |
Ein Spiel über Lan spielen wie geht das?
Hi,
ich hab so ein Programm namens Hangman :) (Kennt bestimmt jeder). bei dem Spiel geht ganz normal Form1 auf und auf dem Formular sind halt nen paar buttons und Labels und noch nen bissel mehr. Ich will das Programm auf 2 Rechnern installieren, die miteinander verbunden sind und wenn man z.B auf dem einen Rechner in dem Programm nen button drückt, soll genau das selbe was dann passiert auch auf dem anderen Rechner passieren! Wäre nett, wenn mir jemand helfen könnte! PS: Kann man das dann auch auf nur einen Rechner testen, weil ich hier grad nur einen hab? :) |
Re: Ein Spiel über Lan spielen wie geht das?
Hallo,
Das kannste mit Sockets machen (TClientSocket & TServerSocket). Du kannst 2 Programme daraus machen einmal ein Server-Programm und ein Client-Programm. Oder beides in 1. Beim Connecten musste darauf achten, das vorher der ServerSocket active ist. Am besten gleich in Objektinspektor Active auf True setzen. Vorher musste natürlich ein Port setzen. Der gleiche Port muss bei ClientSocket auch stehen, sons finden sich die Programme nicht. Also Z.b. Du bist jetzt Connected. Einer klickt auf Button5. Dann sendest du einfach mit TClientSocket einen String z.b. ClientSocket1.Socket.SendText ('Button5'); Beim ServerSocket Ereigniss(Event) OnClientRead kannste den String lesen:
Code:
Usw.
var s: String;
Begin s:=socket.receivetext; If s='Button5' Then Button5Click(Sender); MFG Sven! |
Re: Ein Spiel über Lan spielen wie geht das?
Hab ich alles gemacht, jedoch gibt es das event onclientread nicht und er erkennt auch den Befehl socket nicht! Vielleicht könntest du ja mal nen Beispiel Programm zum download anbieten mit Quellcode :mrgreen: wenns du willst. Würde mir dann wahrscheinlich leichter fallen alles!
|
Re: Ein Spiel über Lan spielen wie geht das?
Hi,
das Ereigniss OnClientRead gibt es! Bei TServerSocket. Und in der Procedure kennt er auch "Socket". In moment kann ich leider kein Beispiel-Programm schreiben, weil ich in Dortmund bin. Und ich habe hier kein Delphi! Montag oder Dienstag währe es kein Problem. Aber du kannst dir ja paar Socket Tutorials durchlesen. Meine Page ist leider noch nicht Online, aber wie z.b. auf ![]()
Delphi-Quellcode:
So das wars (Habe den Code ausen Kopf geschrieben ;) ) Das sollte man eigendlich verstehen.{Platzier 4 TButtons auf das Formular. Und 1 TClientSocket und 1 TServerSocket } Procedure TForm1.Button1Click(Sender: TObject); {Button1} Begin ShowMessage ('Button1'); If ClientSocket1.Active:=True Then //Prüfen ob ClientSocket active ist ClientSocket1.Socket.SendText ('Button1'); End; Procedure TForm1.Button2Click(Sender: TObject); {Button2} Begin ShowMessage ('Button2'); If ClientSocket1.Active:=True Then //Prüfen ob ClientSocket active ist ClientSocket1.Socket.SendText ('Button2'); End; Procedure TForm1.Button3Click(Sender: TObject); {Button3} Begin ShowMessage ('Button3'); If ClientSocket1.Active:=True Then //Prüfen ob ClientSocket active ist ClientSocket1.Socket.SendText ('Button3'); End; Procedure TForm1.FormCreate(Sender: TObject); {Formular "OnCreate"} Begin {Diese Einstellungen wenn möglich schon in Objektinspektor einstellen um den Quelltext zu pflegen.} ServerSocket1.Port:=5810; ClientSocket1.Port:=5810; {Wichtig ist das ServerSocket und ClientSocket den gleichen Port haben.} ServerSocket1.Active:=True; {Drauf achten, das ServerSocket als 1 geöffnet wird!} End; Procedure TForm1.Button4Click(Sender: TObject); {Connect Button} Begin ClientSocket1.Address:='127.0.0.1'; //IP ClientSocket1.Active:=True; //Verbindung herstellen End; Procedure TForm1.ServerSocketClientRead (Sender: TObject; Socket: TCustomWinSocket); {ServerSocket - OnClientRead.} var s: String //String Variable - Local deklariert. Begin {Bin mir nicht ganz sicher ob das hier so richtig ist die Procedure. Aber das spielt ja keine Rolle. KLick einfach auf ServerSocket bei Ereignisse Doppelklick auf OnClientRead ;) } s:=Socket.ReceiveText; If s='Button1' Then Button1Click(Sender); //Button1 Klicken If s='Button2' Then Button2Click(Sender); //Button2 Klicken If s='Button3' Then Button3Click(Sender); //Button3 Klicken end; MFG Sven! |
Re: Ein Spiel über Lan spielen wie geht das?
jo hab das Tutorial angeguckt, aber er findet Onclientread immer noch nicht (es steht nicht im event drin) Die Komponente is doch die, bei der Karteikarte Internet und dann tcpclient(sockets) und tcpserver(sockets) oder? Und man musste natürlich auch noch die Unit scktcomps einfügen. Ich hab auch schon wie im Tutorial ne Variable deklariert (sever:tsersocket und client:tclientsocket) und dann (server.onclientread:=serverclientread;) aber das erkennt er auch nicht wo finde ich nun dieses onclientread?
|
Re: Ein Spiel über Lan spielen wie geht das?
Ah ja ich hab grad in der Codelybrary gefunden, dass es ab Delphi 7 die Dinger nicht nehr gibt! Jetzt hab ich sie aber nachinstalliert :zwinker:
|
Re: Ein Spiel über Lan spielen wie geht das?
Jetzt klappt alles nur 1 Problem gibts noch! Wie bekomme ich die IP des jeweiligen anderen PC's mit dem ich verbunden bin raus (also da wo er hinsenden soll)?
|
Re: Ein Spiel über Lan spielen wie geht das?
Zitat:
Also wenn man Connected ist sendet er doch zu den einen hin. Oder kann man das Spiel auch mehr als 2 Spieler spielen? Wenn ja dann musste das etwas anders machen. Und sons bekommst du die IP Z.b. so rauß (wenn nicht mehr als 2 Spieler spielen können):
Delphi-Quellcode:
MFG
{Bei ServerSocket "OnClientConnect"}
Label1.Caption:=Socket.RemoteAddress; Sven! |
Re: Ein Spiel über Lan spielen wie geht das?
Gut danke! Damit müsste ich jetzt alles hinbekommen :coder: :hello:
|
Re: Ein Spiel über Lan spielen wie geht das?
Ok es gibt doch noch 1 Problem :wall: Da, wo ich es testen will sind ca. 12 PC'S miteinander verbunden! :shock: aber er soll nur mit dem PC connecten, wo auch das Spiel läuft. Wie kann man testen, ob das das Spiel auf nen anderen PC auch läuft und dann von diesen Computer die remoteaddress rauskriegen? :roll:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:52 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