tessi Geschrieben 27. Juni 2010 Teilen Geschrieben 27. Juni 2010 (bearbeitet) Hallo alle zusammen , ich bin in einer 10ten klasse gymnasium bayern und ich muss jetzt ein Projekt machen , dessen Aufgabenstellung so lautet dass ich TikTak toe erstellen muss, indem ich dafür schon vorgefertigte Spielwalzenbenutze.. public class SPIELWALZE { private VOLLKREIS lampe; private KASTEN rahmen; private int farbnummer; public String Zustand; public SPIELWALZE(int linksStart, int obenStart, int breite, int farbnrStart) { lampe = new VOLLKREIS(linksStart+breite/2, obenStart+breite/2, breite/3, farbnrStart); rahmen = new KASTEN(linksStart, obenStart, breite, breite); farbnummer = farbnrStart; } public void zeichne() { lampe.zeichne(); rahmen.zeichne(); } public void faerbeUm(int neueFarbe) { farbnummer = neueFarbe; lampe.setzeFarbe(farbnummer); zeichne(); } //public void vergissLampe() // { // lampe = null; // } / public void Zustand(){ if (farbnummer ==1){Zustand =" blau";} if (farbnummer ==4){Zustand ="rot";} if (farbnummer == 8) {Zustand = "weiß";} } } des Weiteren habe ich eine Klasse Tiktaktoe schon erstellt import java.awt.event.MouseListener; import java.awt.event.MouseEvent; import java.util.Random; public class TicTacToe implements MouseListener { public SPIELWALZE f1; public SPIELWALZE f2; public SPIELWALZE f3; public SPIELWALZE f4; public SPIELWALZE f5; public SPIELWALZE f6; public SPIELWALZE f7; public SPIELWALZE f8; public SPIELWALZE f9; int nr; private int z1; private int z2; private int z3; private int z4; private int z5; private int z6;private int z7; private int z8; private int z9; public int GewinnRot; public int GewinnBlau; public Random Zufall; public String Zustand; public TicTacToe() { GewinnRot = 0; GewinnBlau = 0; f1 = new SPIELWALZE(30,30,30,8) ; f2 = new SPIELWALZE(60,30,30,8) ; f3 = new SPIELWALZE(90,30,30,8) ; f4 = new SPIELWALZE(30,60,30,8) ; f5 = new SPIELWALZE(60,60,30,8) ; f6 = new SPIELWALZE(90,60,30,8) ; f7 = new SPIELWALZE(30,90,30,8) ; f8 = new SPIELWALZE(60,90,30,8) ; f9 = new SPIELWALZE(90,90,30,8) ; Zufall = new Random (); z1 = 8; z2 = 8; z3 = 8; z4 = 8; z5 = 8; z6 = 8; z7 = 8; z8 = 8; z9 = 8; f1.zeichne(); f1.zeichne(); f2.zeichne(); f3.zeichne(); f4.zeichne(); f5.zeichne(); f6.zeichne(); f7.zeichne(); f8.zeichne(); f9.zeichne(); Zustand = "leer"; ZEICHENFENSTER.gibFrame().addMouseListener(this); } public void setzeFarbmuster(int f1neu , int f2neu ,int f3neu ,int f4neu ,int f5neu ,int f6neu ,int f7neu ,int f8neu ,int f9neu ){ z1 = f1neu; z2 = f1neu; z3 = f3neu; z4 = f4neu; z5 = f5neu; z6 = f6neu; z7 = f7neu; z8 = f8neu; z9 = f9neu; f1.faerbeUm(f1neu); f2.faerbeUm(f2neu); f3.faerbeUm(f3neu); f4.faerbeUm(f4neu); f5.faerbeUm(f5neu); f6.faerbeUm(f6neu); f7.faerbeUm(f7neu); f8.faerbeUm(f8neu); f9.faerbeUm(f9neu); } public void setzeRot(int nr ){ if (nr == 1){f1.faerbeUm(4); f1.Zustand = "rot";} if (nr == 2){f2.faerbeUm(4);f2.Zustand = "rot";} if (nr == 3){f3.faerbeUm(4); f3.Zustand = "rot";} if (nr == 4){f4.faerbeUm(4);f4.Zustand = "rot";} if (nr == 5){f5.faerbeUm(4);f5.Zustand = "rot";} if (nr == 6){f6.faerbeUm(4);f6.Zustand = "rot";} if (nr == 7){f7.faerbeUm(4);f7.Zustand = "rot";} if (nr == 8){f8.faerbeUm(4);f8.Zustand = "rot";} if (nr == 9){f9.faerbeUm(4);f9.Zustand = "rot";} Zustand = "rot"; } public void setzeBlau(int nr ){ if (nr == 1){f1.faerbeUm(1); f1.Zustand = "blau";} else {}; if (nr == 2){f2.faerbeUm(1); f2.Zustand = "blau";} else {} if (nr == 3){f3.faerbeUm(1); f3.Zustand = "blau";} else {}; if (nr == 4){f4.faerbeUm(1); f4.Zustand = "blau";} else {}; if (nr == 5){f5.faerbeUm(1); f5.Zustand = "blau";} else {}; if (nr == 6){f6.faerbeUm(1); f6.Zustand = "blau";} else {}; if (nr == 7){f7.faerbeUm(1); f7.Zustand = "blau";} else {}; if (nr == 8){f8.faerbeUm(1); f8.Zustand = "blau";} else {}; if (nr == 9){f9.faerbeUm(1); f9.Zustand = "blau";} else {}; Zustand = "blau"; } public void setzeAbwechselnd (int nr ){ if (Zustand == "leer") {setzeRot (nr);} else {if (Zustand == "rot") {setzeBlau(nr);} else {setzeRot(nr);}} Gewinnerkennen(); GewinnerAnzeigen(); } // durch Referenzvariabel Zustand in Spielwalze public void Gewinnerkennen(){ if ((f1.Zustand =="blau")&& (f2.Zustand == "blau")&&(f3.Zustand =="blau")) {Zustand = "Gewinn Blau";} if ((f4.Zustand =="blau")&& (f5.Zustand == "blau")&&(f6.Zustand =="blau")) {Zustand = "Gewinn Blau";} if ((f7.Zustand =="blau")&& (f8.Zustand == "blau")&&(f9.Zustand =="blau")) {Zustand = "Gewinn Blau";} if ((f1.Zustand =="blau")&& (f5.Zustand == "blau")&&(f9.Zustand =="blau")) {Zustand = "Gewinn Blau";} if ((f3.Zustand =="blau")&& (f5.Zustand == "blau")&&(f7.Zustand =="blau")) {Zustand = "Gewinn Blau";} if ((f1.Zustand =="blau")&& (f4.Zustand == "blau")&&(f7.Zustand =="blau")) {Zustand = "Gewinn Blau";} if ((f2.Zustand =="blau")&& (f5.Zustand == "blau")&&(f8.Zustand =="blau")) {Zustand = "Gewinn Blau";} if ((f3.Zustand =="blau")&& (f6.Zustand == "blau")&&(f9.Zustand =="blau")) {Zustand = "Gewinn Blau";} if ((f1.Zustand =="rot")&& (f2.Zustand == "rot")&&(f3.Zustand =="rot")) {Zustand = "Gewinn Rot";} if ((f4.Zustand =="rot")&& (f5.Zustand == "rot")&&(f6.Zustand =="rot")) {Zustand = "Gewinn Rot";} if ((f7.Zustand =="rot")&& (f8.Zustand == "rot")&&(f9.Zustand =="rot")) {Zustand = "Gewinn Rot";} if ((f1.Zustand =="rot")&& (f5.Zustand == "rot")&&(f9.Zustand =="rot")) {Zustand = "Gewinn Rot";} if ((f7.Zustand =="rot")&& (f5.Zustand == "rot")&&(f3.Zustand =="rot")) {Zustand = "Gewinn Rot";} if ((f1.Zustand =="rot")&& (f4.Zustand == "rot")&&(f7.Zustand =="rot")) {Zustand = "Gewinn Rot";} if ((f2.Zustand =="rot")&& (f5.Zustand == "rot")&&(f8.Zustand =="rot")) {Zustand = "Gewinn Rot";} if ((f3.Zustand =="rot")&& (f6.Zustand == "rot")&&(f9.Zustand =="rot")) {Zustand = "Gewinn Rot"; } } public void GewinnerAnzeigen(){ if (Zustand == "Gewinn Blau") { GewinnBlau = GewinnBlau+ 1; System.out.println ( " Spieler Blau hat gewonnen!"); } if (Zustand == "Gewinn Rot") {GewinnRot = GewinnRot + 1; System.out.println ( " Spieler Rot hat gewonnen"); } if ((Zustand == "Gewinn Blau")|| (Zustand == "Gewinn Rot")) { System.out.println (" blau : Rot =" + GewinnBlau + " :" + GewinnRot); NeuesSpiel(); } } public void NeuesSpiel(){ f1.faerbeUm(8); f2.faerbeUm(8); f3.faerbeUm(8); f4.faerbeUm(8); f5.faerbeUm(8); f6.faerbeUm(8); f7.faerbeUm(8); f8.faerbeUm(8); f9.faerbeUm(8); Zustand= "leer"; } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mouseClicked(MouseEvent e) { if(e.getX()>=30 && e.getX()<=60 && e.getY()>=30 && e.getY()<=80){ setzeAbwechselnd(1);} if(e.getX()>= 60 && e.getX()<=90 && e.getY()>=30 && e.getY()<=80){ setzeAbwechselnd(2); } if(e.getX()>= 90 && e.getX()<=120 && e.getY()>=30 && e.getY()<=80){ setzeAbwechselnd(3); } if(e.getX()>=30 && e.getX()<=60 && e.getY()>=80 && e.getY()<=110){ setzeAbwechselnd(4);} if(e.getX()>= 60 && e.getX()<=90 && e.getY()>=80 && e.getY()<=110){ setzeAbwechselnd(5); } if(e.getX()>= 90 && e.getX()<=120 && e.getY()>=80&& e.getY()<=110){ setzeAbwechselnd(6); } if(e.getX()>=30 && e.getX()<=60 && e.getY()>=110 && e.getY()<=160){ setzeAbwechselnd(7);} if(e.getX()>= 60 && e.getX()<=90 && e.getY()>=110 && e.getY()<=160){ setzeAbwechselnd(8); } if(e.getX()>= 90 && e.getX()<=120 && e.getY()>=110&& e.getY()<=160){ setzeAbwechselnd(9); } } public void setzeweiss(int nr ){ if (nr == 1){f1.faerbeUm(8); f1.Zustand = "weiß";} else {}; if (nr == 2){f2.faerbeUm(8); f2.Zustand = "weiß";} else {} if (nr == 3){f3.faerbeUm(8); f3.Zustand = "weiß";} else {}; if (nr == 4){f4.faerbeUm(8); f4.Zustand = "weiß";} else {}; if (nr == 5){f5.faerbeUm(8); f5.Zustand = "weiß";} else {}; if (nr == 6){f6.faerbeUm(8); f6.Zustand = "weiß";} else {}; if (nr == 7){f7.faerbeUm(8); f7.Zustand = "weiß";} else {}; if (nr == 8){f8.faerbeUm(8); f8.Zustand = "weiß";} else {}; if (nr == 9){f9.faerbeUm(8); f9.Zustand = "weiß";} else {}; Zustand = "weiß"; } public void ZaehlePunkte(){ if (Zustand == "GewinnBlau"){ GewinnBlau = GewinnBlau + 1; } else { if (Zustand == "GewinnRot"){ GewinnRot = GewinnRot + 1; }} Zustand = "EinGewinner"; System.out.println("Blau vs. Rot : " +GewinnBlau+ " : " + GewinnRot); } public void gegenComputerpspielend(){ int x1 = Zufall.nextInt(5); setzeAbwechselnd (nr); } public void computerschwer(){ } } die anderenTeilaufgaben habe ich schon geschafft mein problem ist jetzt dass ich einen Gegenspieler erstellen soll. zunächst wollte ich einen leichten machen, mit Random ich habs auch versucht wie ihr im vorherigen seht aber ich bring es leider nicht hin. kann mir da jemand helfen ich weiß ncht wie man es schafft dass der zufallsgenerator eins von 9 spielwalzen färbt in rot bzw blau wenn diese spielwalze nicht schon vorgefärbt wurde. wäre echt toll wenn ihr mir helfen könntet ,davon hängt meine Note ab. Da ich dieses Fach abwähle steht diese auch im Abizeugnis. Lg tessi ich muss dieses projekt in einer woche haben Bearbeitet 27. Juni 2010 von flashpixx Code-Tags eingefügt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 27. Juni 2010 Teilen Geschrieben 27. Juni 2010 (bearbeitet) Verwende bitte die Code-Tags, vor allem bei umfangreichen Codes (habe sie nachträglich eingefügt) und verwende einen aussagekräftigen Titel. BlueJ oder Hilfe sind schlecht. die anderenTeilaufgaben habe ich schon geschafft mein problem ist jetzt dass ich einen Gegenspieler erstellen soll. zunächst wollte ich einen leichten machen, mit Random ich habs auch versucht wie ihr im vorherigen seht aber ich bring es leider nicht hin. Dein Quellcode ist nicht dokumentiert und ich habe ehrlich keine Lust mich da durch zu lesen und vor allem zu versuchen Deine Gedankengänge zu verstehen. kann mir da jemand helfen ich weiß ncht wie man es schafft dass der zufallsgenerator eins von 9 spielwalzen färbt in rot bzw blau wenn diese spielwalze nicht schon vorgefärbt wurde. Formuliere bitte einmal Dein Problem so, dass es verständlich ist. Willst Du zufällig rot oder blau färben oder was soll per Zufall gesteuert werden? Wenn Du eine binäre Entscheidung brauchst, dann kann man das recht einfach nach der Bernoulli-Verteilung ? Wikipedia machen, was sich in einer Zeile implementieren lässt. wäre echt toll wenn ihr mir helfen könntet ,davon hängt meine Note ab. Dir wird hier niemand ein fertig funktionierendes Spiel liefern, Deine Note sollte dem entsprechen, was Du auch real kannst. Helfen bzw Tips geben, tut hier jeder gerne, sofern man Das Problem versteht. Zu Deinem Thema: Wenn ich wirklich das Spiel Tic Tac Toe ? Wikipedia anschaue, dann kann man als zweiter Spielen (das sollte dann ein Computergegner sein), recht einfach mindestens auf Unentschieden spielen. Generell würde man das Spielfeld als 2D Datenstruktur speichern, in das man dann ein entsprechendes Spielerobjekt (was man sinnvollerweise durch eine Vererbungshierarchie darstellt), enthält. Die Intelligenz des Computergegner lässt recht einfach auf die entsprechenden Fälle reduzieren, wobei man dann weitere Fälle durch Rotation/Spiegelung der Spielfeldes abdecken kann. Bearbeitet 27. Juni 2010 von flashpixx Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tessi Geschrieben 28. Juni 2010 Autor Teilen Geschrieben 28. Juni 2010 Ok also die Aufgabe besteht dadrin bei dem Spiel Tik Tak Toe einen Gegenspieler (Computer) zu programmieren. Hierbei soll der Gegenspieler die Farbe blau erhalten und selbststänidg setzen . Darauf hin soll wieder der Spieler selbst setzen indem er die Methode setzeRot benutz bzw setzeAbwechselnd ? Ich habe versucht dies mit Random zu lösen. Was in die Attribute und in den Konstruktor rein musst ist mir klar. mein Problem is die MEthode Gegenspiueler wie ich diese mit Random programmiere, dass ein feld von den 9 nummerierten Felder( 1- 9 ) von selbst auf blau gesetzt wird falls es weiß ist . Ich hoffe ihr versteht es jetzt besser . Mi ist klar dass ich keine Musterlösung bekomm aber ich komm nicht mehr weiter . lg tessi Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lupo49 Geschrieben 28. Juni 2010 Teilen Geschrieben 28. Juni 2010 Hierbei soll der Gegenspieler die Farbe blau erhalten und selbststänidg setzen . Darauf hin soll wieder der Spieler selbst setzen indem er die Methode setzeRot benutz bzw setzeAbwechselnd ? Ich habe versucht dies mit Random zu lösen. Um festzulegen welcher Spieler momentan am Zug ist, reicht es eine Variable vom Typ Boolean zu nehmen. Der Wert "true" entspricht dem Menschen und "false" dem Computergegner. Was in die Attribute und in den Konstruktor rein musst ist mir klar. mein Problem is die MEthode Gegenspiueler wie ich diese mit Random programmiere, dass ein feld von den 9 nummerierten Felder( 1- 9 ) von selbst auf blau gesetzt wird falls es weiß ist . Hier würde ich folgende Überprüfungen vorschlagen: 1. Überprüfen, ob der Computer mit jetzigen Zug gewinnen kann. 2. Überprüfen, ob der Mensch mit dem nächsten Zug gewinnen kann. Wenn ja, dann durch passenden Stein blockieren. 3. Wenn keine der beiden Situationen aufgetreten ist, dann musst du entscheiden ob der Computer per Zufall irgendetwas tut oder als Basis eine gewisse Heuristik nutzt. Das einfachste wäre auf jeden Fall per Zufall ein Stein zu setzen. Jetzt mit relativ schwierigen Algorithmen anzufangen, entspricht bestimmt nicht dem Anspruch, den euer Lehrer an eine 10. Klasse hat (Obwohl Bayern auf Platz 1 ist.). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tessi Geschrieben 28. Juni 2010 Autor Teilen Geschrieben 28. Juni 2010 ok also 1. und 2.ten verstehe ich und würde es mit einer if else funktion lösen Beim 3ten liet jedcoh beim Problem ... ich weiß das klingt komisch aber wir haben zuvor noch nicht mit Random gearbeitetund ich weiß nicht wirklich wie ich diesen Befehl "benutze " zumächst habe ichg ganz oben import java.util.Random; eingefügt . Dann bei den Attributen public Random Computer; dieses. und bei dem Konstruktor noch dieses. Computer = new Random (); Soweit so gut : im internet hab ich gelesen dass es verschiedene Methoden gibt für Random. beispielsweise etwas wie int x1 = computer.nextInt (9); Hierbei liegt mein Problem ich weiß nicht genau wie ich hier Random verwende damit er zufällig eins von den 9 Felder dass weiß ist blau färbt . Lg Tessi Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lupo49 Geschrieben 28. Juni 2010 Teilen Geschrieben 28. Juni 2010 Das Random-Objekt kann dir verschiedene zufällige numerische Werte liefern. In deinem Beispiel brauchst du so etwas wie Random zufall; zufall = new Random(); int zufallszahl = zufall.nextInt(9) + 1; Das liefert dir Werte von 1-9, die du dann als Wert bei deinem Computerspielzug verwenden kannst. Soweit ich das sehen kann, verwendest du für die Speicherung der Zustände die Variablen z1 bis z9. Das ist eher unschön, da man so nicht ordentlich auf die einzelnen Feldwerte zugreifen kann (Iterieren von z1 bis z9 geht nicht gut). An deiner Stelle würde ich mir ein Array mit einer Größe von neun Elementen initialisieren, in dem dann die Feldwerte repräsentiert werden. Beim Setzen eines Spielers kannst du dann durch das Feld laufen und überprüfen, ob das Feld noch frei ist und dann ggf. den Stein setzen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.