Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   4inaRow -> LAN fähig machen (https://www.delphipraxis.net/129722-4inarow-lan-faehig-machen.html)

Entropie410 24. Feb 2009 15:19


4inaRow -> LAN fähig machen
 
Guten Tach,

Also ich habe schon vor einiger Zeit ein doch recht umfassendes 4iergewinnt programmiert und möchte dieses nun LAN-fähig machen, ich habe mich ein wenig damit auseinandergesetzt und auch ein paar Tuts gelesen allerdings basieren diese Tuts alle auf dem Client/Server - Prinzip und ich möchte das so Peer to Peer like haben. Wie mache ich dne das? Ich blage mich schon die ganze Zeit umherdum aber auf einen wirklich grünen Zweig komme ich nicht. Ich möchte ja eigentlich nur drei Variablen verschicken: 1. u. 2. Die Kordinaten des Spielsteins 3. wer am Zug ist.
Kann mir hier jemmand vlt. einen Tipp geben wie ich das anstellen kann? Ich scheitere nämlich schon daran festzulegen wer, wer ist!

Mfg Entropie

AtiX 24. Feb 2009 15:26

Re: 4inaRow -> LAN fähig machen
 
Hallo,
was spricht dagegen es nach dem Client/Server Prinzip zu machen? AFAIK ist p2p ja nur das man sowohl einen (oder mehrere) Server als auch Client in einem Programm hat.
4 gewinnt ist ja immer nur mit 2 Spielern, da versteh ich nicht was du da so P2P like machen willst...

Grüße,
AtiX

shmia 24. Feb 2009 15:54

Re: 4inaRow -> LAN fähig machen
 
Ein neu gestarteter Client (A) sendet erstmal eine UDP-Broadcast Message aus.
Bei einem UDP-Broadcast ist die Ziel-IP = 255.255.255.255.

Clients (B & C), die noch keinen Partner haben empfangen den Broadcast und werten die Message aus.
In der Message steht die IP-Adresse und die Portnummer (und der Rechnername).
Client B & C fragen den User, ob zu Client A eine Verbindung aufgenommen werden soll.
Falls der User das zulässt, verbindet sich z.B. Client C mit Client A.
Client A bietet einen offenen Port an; er agiert also im Prinzip wie ein Server.

Ab diesem Zeitpunkt besteht eine permanente TCP/IP-Verbindung zwischen A und C.

Entropie410 24. Feb 2009 20:26

Re: 4inaRow -> LAN fähig machen
 
Ok also ich habe jetzt mal einfach mal eine TcpServer - Komponente und eine Tcp Client Komponente eingebaut, hier mal der Source Code(dann ist es leichter zu erklären was ich will):

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
TCPServer1.localport:='5000';
TCPServer1.active:=true;
end;

procedure TForm1.TcpServer1Accept(Sender: TObject;
  ClientSocket: TCustomIpClient);
var s:string;
begin
s:= Clientsocket.Receiveln;
Showmessage(s);
end;

procedure TForm1.RadioGroup1Click(Sender: TObject);
var who:string;
begin
If radiogroup1.itemindex=0 then who:='Gelb';
If radiogroup1.itemindex=1 then who:='Rot';

TCPClient1.RemoteHost:=edit1.Text;
TCPClient1.RemotePort:='5000';
if TCPClient1.connect then
 begin
   TCPClient1.Sendln(who) ;
   TCPClient1.Disconnect ;
   drawgrid1.Enabled :=false;
 end;
end;
Nun ja ich möchte jetzt im OnAccept-Event des Servers dem Programm irgendwie klar machen wer die rote Farbe hat und wer die Gelbe. Wie kann ich erörtern wer wer ist um eben zu sagen der nimmt die rote Farbe und der andere die Gelbe? das is mir einfach nicht klar...

Mfg Entropie

Klaus01 24. Feb 2009 21:17

Re: 4inaRow -> LAN fähig machen
 
Guten Abend,

ich würde das beim Connecten dem Zufall überlassen.
Also mit random arbeiten.
Kommt bei Random eine Geradezahl heraus -> gelb
ansonsten gelb.

Das Programm auf das sich aufgeschaltet wird, bestimmt die Farbe.

Auch sollte festegelegt werden wer das erste Spiel beginnt.

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:45 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