ERLEDIGT
NEIN
NEIN
ANTWORTEN
21
21
ZUGRIFFE
759
759
EMPFEHLEN
-
19.01.12 18:14 #16
- Registriert seit
- Jun 2009
- Beiträge
- 870
@phreeak: Wie wäre es mit einem Attribut für diese Klasse, d.h. eine private, Klassenweit sichtbare Variable?
Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
-
hmm.. Aber wenn ich jedesmal nen neues Spielfeld mache, wieso läuft das Spiel ganz normal, wenn ich diese Abfrage rausnehme? in der Klasse Spielfeld ist ebenfalls ne ähnliche Abfrage, um den Spielstein zusetzen, und die funktioniert auch und erkennt ob nen spielstein gesetzt ist oder ob nen leerzeichen drinnen ist, zeigt nach jedem Zug das Spielfeld richtig an und auch den Gewinner...
ehhh... checks grad nicht. Ist mein erstens Semster.. vorher noch nie Java gehabt.
-
Es funktioniert auch, wenn du sie drin lässt. In der Abfrage jedoch erstellst du dir ein neue Klasse Spielfeld und fragst das ab, anstatt das vermutlich die richtige Klasse abzufragen.Aber wenn ich jedesmal nen neues Spielfeld mache, wieso läuft das Spiel ganz normal, wenn ich diese Abfrage rausnehme?
Die Abfrage funktioniert auch so und die in der Klasse Spielfeld auch, da die Klasse in sich sich ja nicht neu erstellt und das abfragt, sondern sich selbst.in der Klasse Spielfeld ist ebenfalls ne ähnliche Abfrage, um den Spielstein zusetzen, und die funktioniert auch und erkennt ob nen spielstein gesetzt ist oder ob nen leerzeichen drinnen ist
Ich weiß nicht, wie ich es erklären kann, bin in sowas nicht gut.
Aufjedenfall ist es nicht sinnig bei jeder Abfrage eine neue Klasse Spielfeld zuerstellen und die abzufragen.
Du solltest schon immer die gleiche Klasse Spielfeld abfragen.
Daher ist deine Zeile in der Methode istEingabeGueltig
nicht richtig.Code java:1
Spielfeld spielfeld = new Spielfeld();
Du erstellst dir in der abfragenden Klasse eine Klassenvariable
Code java:1
private Spielfeld sf = null;
Und dann änderst du die die Zeile in der Methode istEingabeGueltig zu
Code java:1 2 3
if(sf == null){ sf = new Spielfeld(); }
Und anstatt das du dann nachabfragst, fragst du nachCode java:1
feld.reiheVollabCode java:1
sf.reiheVoll
Damit du immer die selbe Klasse Spielfeld abfragst und dir nicht zwischendurch einfach eine zusätzliche anlegst und darin rumabfragst.
Ggf. musst du dann andere Methoden in der abfragenden Klasse ebenfalls anpassen. (sf dann benutzen!) - kenne ja dein Code nicht.Geändert von Herbertus (19.01.12 um 20:39 Uhr)
-
hmm muss ich zum schluss machen... muss nun erstmal ne Klasse für den Spieler erstellen mit ner vererbung usw.
Statt nen neuen Thread zumachen, kann ich ne kurze Frage dazu stellen, ob ich sie richtig habe?! Funktionieren tuts, aber ka obs auch wirklich ne vererbung ist mit extends..
-
Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
supi,
Ist ja nen Vier Gewinnt Spiel, sollten ne vererbung mit dem Spieler machen. Benutz aber statt Spieler 1 und Spieler 2 immer Spielsteine (x und o) und lass die halt nach jedem Zug wechseln.
Hab nun die Klasse Spieler
Code java:1 2 3 4 5 6 7 8 9 10 11 12
package viergewinnt_aufgabe2; public class Spieler { char spielstein; public Spieler(char spielstein) { this.spielstein = spielstein; } }
und Klasse SubSpieler
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
package viergewinnt_aufgabe2; class SupSpieler extends Spieler { char spieler1; char spieler2; public SupSpieler(char spielstein) { super(spielstein); spieler1 = 'x'; spieler2 = 'o'; } public void WechselSpielerstein() { if (spielstein == spieler1) { spielstein = spieler2; } else { spielstein = spieler1; } } }
in der Spielsteuerung übergib ich zuerst den "Beginerstein" mit
Code java:1
SupSpieler aspieler = new SupSpieler('x');
Der ruft den Konstruktur von SupSpieler (Subklasse) auf, wo er mitden wert an Spielstein in der Klasse Spieler übergibt.Code java:1
super(spielstein)
und wechsel den Spieler dann mit
Code java:1
aspieler.WechselSpielerstein();
Meine Frage nur, ist das wirklich so richtig?! Muss am Dienstag abgeben und die Typen im Praktika wollen alles 100% Pro-mässig haben, obwohl ich find, fürs 1. Semester es schons etwas schwer ist. Die meisten Programmieren ja erst seit 3 Monaten.
hier mal die Spielsteuerung,
Code java: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
/** ****************************************** * Klasse die nach der Hauptklasse alle weiteren Schritte regelt ************************************************/ public class Spielablauf { /** ****************************************** * Hauptprozedure die das Spiel steuert, solang bis ein Sieger feststeht * @param spieler - aktueler Spieler * @param spielmodi - 1 für Mehrspieler, 0 für Einzelspieler ************************************************/ public void starteSpiel(int spielmodi) { Spielfeld feld = new Spielfeld(); SpielerEingabe eingeben = new SpielerEingabe(); ConsolenAusgaben ausgeben = new ConsolenAusgaben(); Computer v_spieler = new Computer(); SupSpieler aspieler = new SupSpieler('x'); int reihe = 0; int eingabe; char sieger = ' '; feld.setzeSpielfeld(); // erstellt das Spielfeld do { if ((spielmodi == 1) && (aspieler.spielstein == 'o')) { eingabe = v_spieler.PcEingabe(); } else { System.out.println("Spielerstein "+aspieler.spielstein+" ist am Zug"); // holt die Eingabe in welcher Reihe der Spieler/Computer sein Sielstein setzt eingabe = eingeben.holeEingabe(); } // setzt den Spielstein in ein freies Feld in der reihe und gibt die Reihe zurück reihe = feld.setzeSpielstein(eingabe, aspieler.spielstein); // übergibt x,y kooridnaten innerhalb des Arrays und prüft ob 4 Spielsteine in einer Reihe existieren. sieger = feld.hatGewonnen(eingabe, reihe, aspieler.spielstein); aspieler.WechselSpielerstein(); } while (sieger == ' '); ausgeben.zeigeGewinner(sieger); } }
-
Hab nun in der Klasse SpielerEingabe
Code java:1 2 3 4
class SpielerEingabe { private Spielfeld sf = null; ...
gemacht und in der Methode IstEingabeGueltig dieses
Code java:1 2 3
if(sf == null){ sf = new Spielfeld(); }
und ruf die Methode in der anderen Klasse, dann mit
Code java:1
sf.reiheVoll(eingabe)
auf, aber dennoch gibt mir die Methode immer zurück, dass eine Reihe voll ist.
Ähnliche Themen
-
if-Abfrage mit Datenbank, wenn nichts gefunden wird
Von hellobaby01 im Forum PHPAntworten: 3Letzter Beitrag: 27.03.10, 00:10 -
Datenbank abfrage gibt nichts aus
Von DeSaarbrigger im Forum PHPAntworten: 5Letzter Beitrag: 16.09.07, 16:34 -
bei sql Abfrage zeigt die Seite nichts mehr an
Von FWE im Forum PHPAntworten: 6Letzter Beitrag: 13.01.07, 15:36 -
Abfrage tut nichts. Tomaten auf den Augen?
Von Eiszwerg im Forum PHPAntworten: 3Letzter Beitrag: 20.04.06, 17:59 -
Array-Abfrage
Von Sealtuagn im Forum Relationale DatenbanksystemeAntworten: 6Letzter Beitrag: 14.05.05, 23:26





Zitieren


Login





