Autor Beitrag
LINUS19
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 156
Erhaltene Danke: 1

Windows 10, 7
Java(Eclipse)
BeitragVerfasst: Mi 06.12.17 17:23 
Hallo,
Wie kann Tictactoe für 2 Spieler über ein Netzwerk machen? Ich hatte schon einen Server und Client gemacht um Textnachrichten auszutauschen,doch mir ist nicht klar wie dieser Datenaustausch bei Tictactoe funktionieren könnte.

LG LINUS19
Symbroson
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 382
Erhaltene Danke: 67

Raspbian, Ubuntu, Win10
C, C++, Python, JavaScript, Lazarus, Delphi7, Casio Basic
BeitragVerfasst: Mi 06.12.17 19:15 
Wenn du wie du sagst die Datenübermittlung schon hast, fehlt gar nicht mehr so viel.
stell dir folgende Fragen:

Was muss denn alles übermittelt werden, damit du weißt, wer wo sein Kreuz/Kreis setzt?
Wie verhinderst du, dass sich zwei parallel laufende Spiele behindern?

dann noch eine Frage an dich: Wer empfängt alles die gesendeten Nachichten? Nur alle Clients oder auch der Sender der Nachicht? Das hätte Auswirkungen darauf, wie und wann du das alles logisch behandelst.

_________________
most good programmers do programming not because they expect to get paid or get adulation by the public, but because it's fun to program. (Linus Torvalds)
LINUS19 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 156
Erhaltene Danke: 1

Windows 10, 7
Java(Eclipse)
BeitragVerfasst: Mi 06.12.17 23:09 
Der Server und der Client können beide Nachrichten empfangen und Senden(das ganze von der Konsole).

Müssen dann die Koordinaten von dem Feld ermittelt und verschickt werden, damit auch beim Gegner das Kreuz gesetzt wird?

Was meinst du mit parallel laufenden Spielen?

LG
LINUS19
Symbroson
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 382
Erhaltene Danke: 67

Raspbian, Ubuntu, Win10
C, C++, Python, JavaScript, Lazarus, Delphi7, Casio Basic
BeitragVerfasst: Mi 06.12.17 23:14 
Zitat:
Der Server und der Client können beide Nachrichten empfangen und Senden(das ganze von der Konsole).

nein, ich meine wenn jemand eine Nachicht sendet, empfängt er diese dann auch wieder, oder empfangen ur alle anderen diese?

Zitat:
Müssen dann die Koordinaten von dem Feld ermittelt und verschickt werden, damit auch beim Gegner das Kreuz gesetzt wird?

Du musst irgend etwas mitschicken wodurch nach Empfang der Nachicht die Position ermittelt werden kann

Zitat:
Was meinst du mit parallel laufenden Spielen?

Na wenn 2 Spiele gleichzeitig laufen :roll:

_________________
most good programmers do programming not because they expect to get paid or get adulation by the public, but because it's fun to program. (Linus Torvalds)
LINUS19 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 156
Erhaltene Danke: 1

Windows 10, 7
Java(Eclipse)
BeitragVerfasst: Mi 06.12.17 23:37 
Die Nachricht steht dann auch beim Sender in der Konsole. Wofür ist das den wichtig?
Symbroson
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 382
Erhaltene Danke: 67

Raspbian, Ubuntu, Win10
C, C++, Python, JavaScript, Lazarus, Delphi7, Casio Basic
BeitragVerfasst: Mi 06.12.17 23:42 
Wenn der Sender sie auch bekommt, musst du keine extra Methode für das Symbol setzen, sondern beim Setzen nur die Nachicht verschicken und beim Empfangen die Spiellogik durchgehen.

_________________
most good programmers do programming not because they expect to get paid or get adulation by the public, but because it's fun to program. (Linus Torvalds)

Für diesen Beitrag haben gedankt: LINUS19
Symbroson
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 382
Erhaltene Danke: 67

Raspbian, Ubuntu, Win10
C, C++, Python, JavaScript, Lazarus, Delphi7, Casio Basic
BeitragVerfasst: So 10.12.17 12:47 
Ich will meine Lösung nicht umsonst geschrieben haben - deshalb nochmal meine ursprüngliche Antwort:
Zitat:
Wenn du die übermittlung schon hast, ist es ganz einfach:
Ich hab das damals so gemacht, dass ich eine zufällige Spiel-ID am Anfang jedes Spiels generiert hab. Diese wird zusammen mit der Spieler-ID (0,1) und der Feldnummer (0-8 ) oder die X/Y Position (0-2,0-2) übermittelt, mit der eigenen Spiel-ID verglichen und je nach Spieler-ID ein 'X' oder 'O' an die jeweilige Position gesetzt.

Die übermittelte Zeichenkette kann dann zB so aussehen: "12986953,0,7", also "SpielID,SpielerID,FeldID"

von der Feldnummer n kommst du auf die FeldID mit ( n mod 3 | n div 3 )
Ich weiß nicht ob Java wie c automatisch integer division macht, das wäre dann ( n%3 | n/3 ), sonst müsstest du die y-Position noch runden.Wenn du die übermittlung schon hast, ist es ganz einfach:
Ich hab das damals so gemacht, dass ich eine zufällige Spiel-ID am Anfang jedes Spiels generiert hab. Diese wird zusammen mit der Spieler-ID (0,1) und der Feldnummer (0-8 ) oder die X/Y Position (0-2,0-2) übermittelt, mit der eigenen Spiel-ID verglichen und je nach Spieler-ID ein 'X' oder 'O' an die jeweilige Position gesetzt.

Die übermittelte Zeichenkette kann dann zB so aussehen: "12986953,0,7", also "SpielID,SpielerID,FeldID"

von der Feldnummer n kommst du auf die FeldID mit ( n mod 3 | n div 3 )
Ich weiß nicht ob Java wie c automatisch integer division macht, das wäre dann ( n%3 | n/3 ), sonst müsstest du die y-Position noch runden.

_________________
most good programmers do programming not because they expect to get paid or get adulation by the public, but because it's fun to program. (Linus Torvalds)
LINUS19 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 156
Erhaltene Danke: 1

Windows 10, 7
Java(Eclipse)
BeitragVerfasst: Mi 07.02.18 22:30 
Habe das jetzt so weit hinbekommen, aber es funktioniert nur im lokalen Netzwerk. Wie bekomme ich es hin dass es auch außerhalb des lokalen Netzwerkes funktioniert?
LG
LINUS19
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 08.02.18 01:42 
- Nachträglich durch die Entwickler-Ecke gelöscht -
LINUS19 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 156
Erhaltene Danke: 1

Windows 10, 7
Java(Eclipse)
BeitragVerfasst: Fr 09.02.18 19:26 
Wie meinst du das? Ich habe einen Server und einen Client und im lokalen Netzwerk kann ich die verbinden und dann auf zwei unterschiedlichen Rechnern Tictactoe spielen, aber als ich es mit einem Freund getestet habe, hat es nicht funktioniert.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 09.02.18 20:53 
- Nachträglich durch die Entwickler-Ecke gelöscht -
LINUS19 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 156
Erhaltene Danke: 1

Windows 10, 7
Java(Eclipse)
BeitragVerfasst: Fr 09.02.18 20:55 
Was für einen Server, ich verstehe überhaupt nicht was du meinst?
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 09.02.18 21:44 
Moin!

Ich schätze mal, du bist zuhause im LAN hinter einer NAT-Router? In diesem Fall könnte auch schon ein Portforwarding helfen. :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
LINUS19 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 156
Erhaltene Danke: 1

Windows 10, 7
Java(Eclipse)
BeitragVerfasst: Fr 09.02.18 22:59 
Ich habe jetzt bei der Fritzbox den Port freigegeben, aber es funktioniert immer noch nicht.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Sa 10.02.18 01:04 
Moin!

user profile iconLINUS19 hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe jetzt bei der Fritzbox den Port freigegeben, aber es funktioniert immer noch nicht.
Tja, bei deiner ausführlichen Fehlerbeschreibung und bei unserer umfassenden Kenntnis deines Lösungsansatzes würde ich sagen, der Fehler ist in Zeile 42. :nixweiss:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.

Für diesen Beitrag haben gedankt: Christian S.
LINUS19 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 156
Erhaltene Danke: 1

Windows 10, 7
Java(Eclipse)
BeitragVerfasst: Sa 10.02.18 10:40 
Der Server und der Client verbinden sich einfach nicht, es kommt auch keine Fehlermeldung. Wenn es am Programm liegen würde, würde es lokalen Netzwerk doch auch nicht funktionieren,oder?
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Sa 10.02.18 15:34 
Moin!

user profile iconLINUS19 hat folgendes geschrieben Zum zitierten Posting springen:
Der Server und der Client verbinden sich einfach nicht, es kommt auch keine Fehlermeldung.
Wenn du keine Fehlerbehandlung bei Netzwerkverbindungen implementiert hast, dann kommt da auch keine Rückmeldung beim Benutzer an. :nixweiss:

user profile iconLINUS19 hat folgendes geschrieben Zum zitierten Posting springen:
Wenn es am Programm liegen würde, würde es lokalen Netzwerk doch auch nicht funktionieren,oder?
Tja, müsste es oder besser gesagt: es könnte. Da es aber offensichtlich nicht funktioniert, muss es wohl beeinflussende Faktoren geben, oder? :suspect:

So kommen wir nicht weiter. Was du grade tust, ist in etwa so wie beim Arzt anzurufen und zu fragen: "Hallo Herr Doktor, mir tut der Bauch weh, warum?". :nixweiss:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
LINUS19 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 156
Erhaltene Danke: 1

Windows 10, 7
Java(Eclipse)
BeitragVerfasst: Sa 10.02.18 15:38 
Wie soll ich den die Fehlbehandlung machen?
Oder soll ich das Programm senden?
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Sa 10.02.18 16:45 
Moin!

user profile iconLINUS19 hat folgendes geschrieben Zum zitierten Posting springen:
Wie soll ich den die Fehlbehandlung machen?
Du wirst irgendwo im Client das Java-Äquivalent einer Connect-API-Funktion aufrufen. Diese sollte dir (wie praktisch alle API-Funktionen egal wo) einen Returncode mitteilen, also das Ergebnis der Bemühungen. Was wird da zurückgemeldet, wenn die Verbindung über das Internet nicht klappt? Und was für eine Adresse/Port wird überhaupt eingegeben? Der entfernte Teilnehmer muss die öffentliche IP der Fritzbox und den Port deiner Anwendung nehmen (logischerweise, die private LAN-IP eines PC ist aus dem Internet ja nicht zu sehen).

user profile iconLINUS19 hat folgendes geschrieben Zum zitierten Posting springen:
Oder soll ich das Programm senden?
Da ich mich nicht mit Java beschäftigen möchte (finde Java gräßlich), bringt mich das zumindest nicht weiter. :nixweiss: Aber vielleicht hat ja jemand anders Interesse daran. :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
LINUS19 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 156
Erhaltene Danke: 1

Windows 10, 7
Java(Eclipse)
BeitragVerfasst: Sa 10.02.18 17:10 
OK danke, dann hatte ich es ja völlig falsch. Im Client Programm steht die IP Adresse von meinem PC und nicht die vom Router. Ist irgendwie auch logisch das die IP Adresse vom Router benötigt wird,wenn von dort die Portweiterleitung gemacht wird. Ich kann es jetzt gerade nicht testen, aber ich melde nochmal falls es noch Probleme gibt.

PS:
Warum findest du Java eigentlich gräßlich? Java hat doch eigentlich eine relativ einfache Syntax und Ist auch leichter zu lernen als z.B C++(insbesondere für Anfänger, wie mich leichter).