Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Ein Spiel über Lan spielen wie geht das? (https://www.delphipraxis.net/15571-ein-spiel-ueber-lan-spielen-wie-geht-das.html)

Delphi-Noobie 31. Jan 2004 12:52


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? :)

Chef16 31. Jan 2004 13:54

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:
var s: String;
Begin
  s:=socket.receivetext;
  If s='Button5' Then
  Button5Click(Sender);
Usw.

MFG
Sven!

Delphi-Noobie 31. Jan 2004 14:59

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!

Chef16 1. Feb 2004 03:54

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 www.delphi-treff.de gibt es ein Socket Tutorial. Und ich glaube nicht, das man ein Beispiel-Programm braucht. Hier ein Code (kann ihn nicht testen, wird aber 100% funktionieren. So schwer ist das ja nicht):

Delphi-Quellcode:

{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;
So das wars (Habe den Code ausen Kopf geschrieben ;) ) Das sollte man eigendlich verstehen.

MFG
Sven!

Delphi-Noobie 1. Feb 2004 08:54

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?

Delphi-Noobie 1. Feb 2004 13:53

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:

Delphi-Noobie 1. Feb 2004 14:07

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)?

Chef16 1. Feb 2004 22:41

Re: Ein Spiel über Lan spielen wie geht das?
 
Zitat:

Zitat von Delphi-Noobie
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)?

Wie meinste das jetzt?
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:
{Bei ServerSocket "OnClientConnect"}

Label1.Caption:=Socket.RemoteAddress;
MFG
Sven!

Delphi-Noobie 2. Feb 2004 09:05

Re: Ein Spiel über Lan spielen wie geht das?
 
Gut danke! Damit müsste ich jetzt alles hinbekommen :coder: :hello:

Delphi-Noobie 2. Feb 2004 09:48

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 13:38 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz