![]() |
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 |
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 |
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. |
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:
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...
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; Mfg Entropie |
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