Array Abfrage will nichts so wie ich will....

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

Java:
package viergewinnt_aufgabe2;

public class Spieler {

    char spielstein;
    
public Spieler(char spielstein) {
     this.spielstein = spielstein;
}


}

und Klasse SubSpieler

Java:
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

Java:
SupSpieler aspieler = new SupSpieler('x');

Der ruft den Konstruktur von SupSpieler (Subklasse) auf, wo er mit
Java:
 super(spielstein)
den wert an Spielstein in der Klasse Spieler übergibt.

und wechsel den Spieler dann mit

Java:
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,

Java:
     /** ******************************************
     * 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);
    }
}
 
Zuletzt bearbeitet von einem Moderator:
Hab nun in der Klasse SpielerEingabe

Java:
class SpielerEingabe {
   
   private Spielfeld sf = null;
   ...

gemacht und in der Methode IstEingabeGueltig dieses

Java:
if(sf == null){
        sf = new Spielfeld();
        }

und ruf die Methode in der anderen Klasse, dann mit

Java:
sf.reiheVoll(eingabe)

auf, aber dennoch gibt mir die Methode immer zurück, dass eine Reihe voll ist.
 
Zurück