tutorials.de Buch-Aktion 05/2012
Seite 2 von 2 ErsteErste 12
ERLEDIGT
NEIN
ANTWORTEN
21
ZUGRIFFE
759
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #16
    genodeftest genodeftest ist offline Mitglied Brillant
    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)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  2. #17
    phreeak phreeak ist offline Mitglied Bronze
    Registriert seit
    Nov 2011
    Beiträge
    32
    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.
     

  3. #18
    Herbertus Herbertus ist offline Mitglied Bronze
    Registriert seit
    Sep 2010
    Beiträge
    37
    Aber wenn ich jedesmal nen neues Spielfeld mache, wieso läuft das Spiel ganz normal, wenn ich diese Abfrage rausnehme?
    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.

    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
    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.


    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
    Code java:
    1
    
    Spielfeld spielfeld = new Spielfeld();
    nicht richtig.

    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 nach
    Code java:
    1
    
    feld.reiheVoll
    abfragst, fragst du nach
    Code java:
    1
    
    sf.reiheVoll
    ab


    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)
     

  4. #19
    phreeak phreeak ist offline Mitglied Bronze
    Registriert seit
    Nov 2011
    Beiträge
    32
    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..
     

  5. #20
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.503
    Zitat Zitat von phreeak Beitrag anzeigen
    Statt nen neuen Thread zumachen, kann ich ne kurze Frage dazu stellen
    Ja.

    Und extends ist ganz echte Vererbung, ja.
     
    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, ...?

  6. #21
    phreeak phreeak ist offline Mitglied Bronze
    Registriert seit
    Nov 2011
    Beiträge
    32
    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 mit
    Code java:
    1
    
     super(spielstein)
    den wert an Spielstein in der Klasse Spieler übergibt.

    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);
        }
    }
     

  7. #22
    phreeak phreeak ist offline Mitglied Bronze
    Registriert seit
    Nov 2011
    Beiträge
    32
    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

  1. Antworten: 3
    Letzter Beitrag: 27.03.10, 00:10
  2. Datenbank abfrage gibt nichts aus
    Von DeSaarbrigger im Forum PHP
    Antworten: 5
    Letzter Beitrag: 16.09.07, 16:34
  3. Antworten: 6
    Letzter Beitrag: 13.01.07, 15:36
  4. Abfrage tut nichts. Tomaten auf den Augen?
    Von Eiszwerg im Forum PHP
    Antworten: 3
    Letzter Beitrag: 20.04.06, 17:59
  5. Array-Abfrage
    Von Sealtuagn im Forum Relationale Datenbanksysteme
    Antworten: 6
    Letzter Beitrag: 14.05.05, 23:26