ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
1585
1585
EMPFEHLEN
-
22.02.10 19:32 #1Fettsau Tutorials.de Gastzugang
Hi,
also folgendes ich bin nun schon seid 2 Tagen "am dauergoogeln" und irgendwie habe ich noch nicht das passende für mich gefunden...
Zur Nebeninfo: Ich besuche zur Zeit das Gymnasium und bin im Informatik Grundkurs und bin in der Stufe 12, 2Halbjahr und schreibe dort jetzt meine Facharbeit. Ich besitze eigtl. gute Java Kenntnisse, jedoch gar nicht was Netzwerke angeht, doch ein gewisseses Grundwissen hab ich mir durch Lesen schon angeeignet.
Um zum Punkt zu kommen:
Meine Aufgabe ist es ein wirklich sehr triviales TicTacToe zu programmieren, was ich über Netzwerk spielen kann.
Also Spieler A spielt an Computer A und Spieler B spielt an Computer B. Das ganze soll mit Hilfe der Netzwerkprogrammierung implementiert werden. (Client-Server Prinzip)
Nun habe ich mir schon einige Implementationen angeschaut hier in diesem Forum und auch auf diversen anderen Seiten..
Jedoch sind das alles schon viel zu komplizierte Dinge für mich.. ich soll wirklich nur ein einfaches TicTacToe programmieren.
Es soll einfach nur so aussehen:

Dachte mir das einfach mit 9Knöpfen zu machen, ist ja am einfachsten oder nicht. Oder wie funktioniert dies mit so nem Feld Array?
Nun zu dem noch viel größeren Problem... Wie implementiere ich das ganze jetzt noch so, dass es per Netzwerk mit 2Spielern gespielt werden kann.
Durch Internetrecherche habe ich rausbekommen, dass man dazu einen Server programmieren muss, einen Client, einen Lauscher der hört ob sich ein Client anmeldet und dann brauch man noch Sockets usw..
Ich habe iwie den Überblick verloren und wollte fragen ob mir einer sagen kann was ich für dieses Projekt alles brauche etc..?
Ich meine damit jetzt nicht, dass mir hier die Hausaufgaben gemacht werden, sondern ich möchte nur ein Konzept wissen, was ich alles brauche um meine Aufgabe umzusetzen.. d.h welche Klassen, welche Kenntnisse über Netzwerkprogrammierung, etc..
Das ganze muss ich mit Eclipse 32 programmieren, natürlich in Java.
Bin echt verzweifelt nach so langer Zeit noch nichts passendes für mich gefunden zu haben.
Hoffe mir kann weiter geholfen werden.
Grüße
-
22.02.10 20:47 #2Fettsau Tutorials.de Gastzugang
habe einen link gefunden: http://www.java-tips.org/java-se-tip...client-ap.html
das is doch sowas wie ich meine, vom prinzip her.. oder?
-
22.02.10 21:10 #3
Hi,
im Grunde ist es das, die Frage ist aber, was lernst du durch Copy-And-Paste?
Hier einige Links dazu, die hier im Forum schon behandelt wurden und in etwa das gleiche Ziel haben ( In allen Posts geht es zwar um Chats, aber ein Gymnasiast sollte das auch auf ein Tic-Tac-Toe übertragen können
, da es ja um die Technik geht und nicht darum was versendet wird und wie es verarbeitet wird
).
JChat (besonders die Posts #6, #8, #10)
Chat selbst bauen
Und hier noch ein Tutorial, zu dem ich zu solchen Sachen sehr gerne verlinke:
Socket Chat (PDF)
Ciao
DosCoderGeändert von DosCoder (22.02.10 um 21:13 Uhr)
Man kann mich für das verantwortlich machen, was ich hier schreibe, nicht für das, was andere verstehen.
Sollte ich mal Mist labern weist mich bitte darauf hin.
Ich freue mich über ein Danke, wenn ich helfen konnte!
-
22.02.10 23:01 #4Fettsau Tutorials.de Gastzugang
Hi also ich habe jetzt angefangen und habe das TicTacToe Spiel soweit fertig.
Das Problem ist nur noch, dass bis jetzt nur die Gewinnabfrage für die Diagonalen klappt, die für horizontal und vertikal klappen noch nicht.
Kann mir evtl. jemand sagen wo sich bei mir der Fehler versteckt?
Hier ist das Spiel:
package ptictactoe;
import java.awt.event.*; // Für den ActionListener
import javax.swing.*; // Für das PopUp Fenster bei einem Sieg oder Remis
import basis.*; // Für die Knöpfe und das Fenster
public class TicTacToeV1 implements ActionListener {
// Deklaration
private Fenster mf;
private Knopf mk1, mk2, mk3, mk4, mk5, mk6, mk7, mk8, mk9;
private String spieler;
private int spielzuege;
private boolean sieg;
public TicTacToe() {
// Konstruktion
mf = new Fenster();
mf.setzeTitel("SPIELER X IST DRAN ");
mf.setzeGroesse(300, 300);
mk1 = new Knopf("", 0, 0, 100, 100);
mk2 = new Knopf("", 100, 0, 100, 100);
mk3 = new Knopf("", 200, 0, 100, 100);
mk4 = new Knopf("", 0, 100, 100, 100);
mk5 = new Knopf("", 100, 100, 100, 100);
mk6 = new Knopf("", 200, 100, 100, 100);
mk7 = new Knopf("", 0, 200, 100, 100);
mk8 = new Knopf("", 100, 200, 100, 100);
mk9 = new Knopf("", 200, 200, 100, 100);
spieler = "";
spielzuege = 0;
sieg = false;
// ActionListener zu den Knöpfen hinzufügen
mk1.addActionListener(this);
mk2.addActionListener(this);
mk3.addActionListener(this);
mk4.addActionListener(this);
mk5.addActionListener(this);
mk6.addActionListener(this);
mk7.addActionListener(this);
mk8.addActionListener(this);
mk9.addActionListener(this);
}
public void actionPerformed(ActionEvent a) {
spielzuege++; // Nach jeder Aktion (hier ein Knopfdruck) wird die Variable spielzuege um 1 erhöht
// Zuweisung dafür, wer am Zug ist
if (spielzuege == 1 || spielzuege == 3 || spielzuege == 5
|| spielzuege == 7 || spielzuege == 9) {
spieler = "X";
mf.setzeTitel("SPIELER O IST DRAN ");
} else if (spielzuege == 2 || spielzuege == 4 || spielzuege == 6
|| spielzuege == 8 || spielzuege == 10) {
spieler = "O";
mf.setzeTitel("SPIELER X IST DRAN ");
}
// Zeichenzuweisung der Knöpfe jenachdem welcher Spieler am Zug war
if (a.getSource() == mk1) {
mk1.setzeText(spieler);
mk1.setzeBenutzbar(false);
} else if (a.getSource() == mk2) {
mk2.setzeText(spieler);
mk2.setzeBenutzbar(false);
} else if (a.getSource() == mk3) {
mk3.setzeText(spieler);
mk3.setzeBenutzbar(false);
} else if (a.getSource() == mk4) {
mk4.setzeText(spieler);
mk4.setzeBenutzbar(false);
} else if (a.getSource() == mk5) {
mk5.setzeText(spieler);
mk5.setzeBenutzbar(false);
} else if (a.getSource() == mk6) {
mk6.setzeText(spieler);
mk6.setzeBenutzbar(false);
} else if (a.getSource() == mk7) {
mk7.setzeText(spieler);
mk7.setzeBenutzbar(false);
} else if (a.getSource() == mk8) {
mk8.setzeText(spieler);
mk8.setzeBenutzbar(false);
} else if (a.getSource() == mk9) {
mk9.setzeText(spieler);
mk9.setzeBenutzbar(false);
}
// Bestimmung der Gewinnmöglichkeiten
// horizantal prüfen
if (mk1.text() == mk2.text() && mk2.text() == mk3.text()
&& mk1.text() != "") {
sieg = true;
} else if (mk4.text() == mk5.text() && mk5.text() == mk6.text()
&& mk4.text() != "") {
sieg = true;
} else if (mk7.text() == mk8.text() && mk8.text() == mk9.text()
&& mk7.text() != "") {
sieg = true;
}
// vertikal prüfen
if (mk1.text() == mk4.text() && mk4.text() == mk7.text()
&& mk1.text() != "") {
sieg = true;
} else if (mk2.text() == mk5.text() && mk5.text() == mk8.text()
&& mk2.text() != "") {
sieg = true;
} else if (mk3.text() == mk6.text() && mk6.text() == mk9.text()
&& mk3.text() != "") {
sieg = true;
}
// diagonal prüfen
if (mk1.text() == mk5.text() && mk5.text() == mk9.text()
&& mk1.text() != "") {
sieg = true;
} else if (mk3.text() == mk5.text() && mk5.text() == mk7.text()
&& mk3.text() != "") {
sieg = true;
} else {
sieg = false;
}
// Erzeugen eines PopUp Fensters, falls jemand gewonnen hat oder es Unentschieden steht
if (sieg == true) {
JOptionPane.showMessageDialog(null, spieler + " WINS!");
//Hilfe.warte(500);
//mf.gibFrei();
} else if (spielzuege == 9 && sieg == false) {
JOptionPane.showMessageDialog(null, "Remis! Kein Gewinner.");
//Hilfe.warte(500);
//mf.gibFrei();
}
}
}
Wenn die restlichen Gewinnabfragen jetzt noch klappen, kommt die Netzwerkprogrammierung an die Reihe.
Ich brauche einen Server, einen Client eine Klasse Connection und Sockets oder?
Möchte ja, dass sich 2 Clients anmelden und genau dieses Spiel dann spielen.
Client A ist Spieler X und Client B ist Spieler O.
Hoffe mir kann geholfen werden
-
23.02.10 00:19 #5Fettsau Tutorials.de Gastzugang
Sorry hier nochmal als richtiger Code:
Das Problem ist das die Gewinnabfrage für horizontal und vertikal nicht funktioniert, kann mir wer sagen warum?
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
package ptictactoe; import java.awt.event.*; // Für den ActionListener. // Quelle: http://java.sun.com/docs/books/tutorial/uiswing/events/actionlistener.html import javax.swing.JOptionPane; // Für das PopUp Fenster, bei einem Sieg oder Remis. // Quelle: http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JOptionPane.html import basis.*; // Für die Knöpfe und das Fenster. public class TicTacToe implements ActionListener { // Klasse TicTacToe mit implementierten // ActionListener, siehe Quelle oben. // Deklaration private Fenster mf; private Knopf mk1, mk2, mk3, mk4, mk5, mk6, mk7, mk8, mk9; private String spieler; private int spielzuege; private boolean sieg; public TicTacToe() { // Konstruktor der Klasse TicTacToe(). // Konstruktion mf = new Fenster(); mf.setzeTitel("SPIELER X IST DRAN "); mf.setzeGroesse(300, 300); mk1 = new Knopf("", 0, 0, 100, 100); mk1.setzeHintergrundFarbe(Farbe.WEISS); mk2 = new Knopf("", 100, 0, 100, 100); mk2.setzeHintergrundFarbe(Farbe.WEISS); mk3 = new Knopf("", 200, 0, 100, 100); mk3.setzeHintergrundFarbe(Farbe.WEISS); mk4 = new Knopf("", 0, 100, 100, 100); mk4.setzeHintergrundFarbe(Farbe.WEISS); mk5 = new Knopf("", 100, 100, 100, 100); mk5.setzeHintergrundFarbe(Farbe.WEISS); mk6 = new Knopf("", 200, 100, 100, 100); mk6.setzeHintergrundFarbe(Farbe.WEISS); mk7 = new Knopf("", 0, 200, 100, 100); mk7.setzeHintergrundFarbe(Farbe.WEISS); mk8 = new Knopf("", 100, 200, 100, 100); mk8.setzeHintergrundFarbe(Farbe.WEISS); mk9 = new Knopf("", 200, 200, 100, 100); mk9.setzeHintergrundFarbe(Farbe.WEISS); spieler = "X"; spielzuege = 0; sieg = false; // ActionListener zu den Knöpfen hinzufügen. mk1.addActionListener(this); mk2.addActionListener(this); mk3.addActionListener(this); mk4.addActionListener(this); mk5.addActionListener(this); mk6.addActionListener(this); mk7.addActionListener(this); mk8.addActionListener(this); mk9.addActionListener(this); } private void AktiverSpieler() { // Für Spieler X, der anfängt. if (spielzuege == 1 || spielzuege == 3 || spielzuege == 5 || spielzuege == 7 || spielzuege == 9) { spieler = "X"; mf.setzeTitel("SPIELER O IST DRAN "); } // Für Spieler O, der immer nach Spieler X setzt. if (spielzuege == 2 || spielzuege == 4 || spielzuege == 6 || spielzuege == 8 || spielzuege == 10) { spieler = "O"; mf.setzeTitel("SPIELER X IST DRAN "); } } private void Gewinnmöglichkeiten() { // horizantal prüfen. if (mk1.text() == mk2.text() && mk2.text() == mk3.text()) { sieg = true; } else if (mk4.text() == mk5.text() && mk5.text() == mk6.text()) { sieg = true; } else if (mk7.text() == mk8.text() && mk8.text() == mk9.text()) { sieg = true; } // vertikal prüfen. if (mk1.text() == mk4.text() && mk4.text() == mk7.text()) { sieg = true; } else if (mk2.text() == mk5.text() && mk5.text() == mk8.text()) { sieg = true; } else if (mk3.text() == mk6.text() && mk6.text() == mk9.text()) { sieg = true; } // diagonal prüfen. if (mk1.text() == mk5.text() && mk5.text() == mk9.text() && mk1.text() != "") { sieg = true; } else if (mk3.text() == mk5.text() && mk5.text() == mk7.text() && mk3.text() != "") { sieg = true; } else { sieg = false; } } private void SiegOderRemis() { // Meldung, wenn ein Spieler gewonnen hat. if (sieg == true) { JOptionPane.showMessageDialog(null, spieler + " WINS!"); Hilfe.warte(500); mf.gibFrei(); } // Meldung, falls kein Spieler nach 9 Zügen gewonnen hat. if (spielzuege == 9 && sieg == false) { JOptionPane.showMessageDialog(null, "Remis! Kein Gewinner."); Hilfe.warte(500); mf.gibFrei(); } } public void actionPerformed(ActionEvent a) { spielzuege++; // Die Variable wird jedes mal um 1 erhöht, wenn die // Methode aufgerufen wird. this.AktiverSpieler(); // Bestimmung, wer am Zug ist. // Zeichenzuweisung der Knöpfe. Zeichen jenachdem, welcher Spieler am // Zug war. if (a.getSource() == mk1) { mk1.setzeText(spieler); mk1.setzeBenutzbar(false);} if (a.getSource() == mk2) { mk2.setzeText(spieler); mk2.setzeBenutzbar(false);} if (a.getSource() == mk3) { mk3.setzeText(spieler); mk3.setzeBenutzbar(false);} if (a.getSource() == mk4) { mk4.setzeText(spieler); mk4.setzeBenutzbar(false);} if (a.getSource() == mk5) { mk5.setzeText(spieler); mk5.setzeBenutzbar(false);} if (a.getSource() == mk6) { mk6.setzeText(spieler); mk6.setzeBenutzbar(false);} if (a.getSource() == mk7) { mk7.setzeText(spieler); mk7.setzeBenutzbar(false);} if (a.getSource() == mk8) { mk8.setzeText(spieler); mk8.setzeBenutzbar(false);} if (a.getSource() == mk9) { mk9.setzeText(spieler); mk9.setzeBenutzbar(false);} this.Gewinnmöglichkeiten(); // Bestimmung der Gewinnmöglichkeiten. this.SiegOderRemis(); // Erzeugen eines PopUp Fensters, falls jemand gewonnen hat, oder es // Unentschieden steht. } }
-
Vielleicht weil du das
&& mk1.text() != ""
vergessen hast?Vielen Dank für die Nutzung des Bewerten- und Danke-Buttons
Wenn man sieht, dass man einen anderen glücklich gemacht hat, ist die Welt um zwei glückliche Menschen reicher.
-
24.02.10 13:51 #7Fettsau Tutorials.de Gastzugang
ja erstmal hatte ich das vergessen, doch dann ging es immer noch nicht..
dann hab ich einfach die reihenfolge geändert und dann ging es auf einmal, weiß auch nicht wieso :P
grüße danke!
-
24.02.10 13:57 #8Fettsau Tutorials.de Gastzugang
ok vielen dank für die Hilfe..
denke ich werde es jetzt wohl schaffen mein fertiges spiel netzwerkfähig zu machen..
das thema kann geschlossen oder gelöscht werden, ty!
Ähnliche Themen
-
[C/C++] Beispiel Code für eine einfache Server-Client-Applikation
Von Terces im Forum C/C++Antworten: 3Letzter Beitrag: 12.05.10, 01:48 -
Transport eines großen Bildes von einem Server zum Client (Web)
Von Looky im Forum JavaAntworten: 0Letzter Beitrag: 13.03.09, 12:32 -
Kleines Beispiel für die Verwendung eines java Beans in einer JSP
Von Thomas Darimont im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 0Letzter Beitrag: 27.08.08, 21:30 -
Client Server Implementation?
Von flashray im Forum JavaAntworten: 0Letzter Beitrag: 22.03.07, 12:08 -
Gesucht: Einfaches Beispiel für Client/Server-Chat mit Sockets
Von Kachelator im Forum .NET ArchivAntworten: 4Letzter Beitrag: 14.02.05, 06:41





Zitieren
Login




