4gewinnt

Status
Nicht offen für weitere Antworten.

H26

Mitglied
hallo

ich programmiere gerade an einem Vier gewinnt. Ein und ausgabe erfolgen über die console. nun habe ich ein problem bei der insertToken methode, welche ein Token entgegennimmt, insofern ein Feld frei ist. Tokens sind entweden (x oder o) und werden vom Spieler eingegeben. Token sind enum objekte (circle, cross, empty)
Die insert Methode sollte nun, ein das Token vom Spieler und in der angegebenen Position (0-6) entgegennehmen, falls die position empty ist.


Java:
private Token[][] field;
.
.
public ConnectFour () {
          this.field = new Token[ROWS][COLS];
}
.
.
private int insertToken(Token tok, int col) { 
          
          for (int i = 0; i < ROWS; i++) {
               if (field[i][col] == Token.empty ){
               tok = field[i][col];	
               return 1;
               }	
               else {
               }
          }
return 0;
}
 

Izibaar

Mitglied
Java:
private Token[][] field;
.
.
public ConnectFour () {
          this.field = new Token[ROWS][COLS];
}
.
.
private int insertToken(Token tok, int col) { 
          //Was ist ROWS??? Wieso überhaupt eine for-Schleife?
          for (int i = 0; i < ROWS; i++) {
               //Falls das Feld leer ist, dann überschreibe das übergebene Token mit leer? Sinn?!
               if (field[i][col] == Token.empty ){
               tok = field[i][col];	
               return 1;
               }	
               else {
               }
          }
return 0;
}
Ich glaube du wolltest eher etwas machen wie:
Solange Feld nicht leer:
- Feld nach oben gehen
Anschließend das Token ins Feld

Du kannst natürlich auch das Token "fallen" lassen bis es auf ein nicht leeres Feld trifft. Ich glaube von unten nach oben das erste leere Feld zu suchen dürfte kürzer sein.
 

H26

Mitglied
Java:
private int insertToken(Token tok, int column) {
	int i = 0;	
			
	while (field[i][column] != Token.empty) {
		if (field[i][column]== Token.empty){
		// sollte mein Token reingesetzt werden
                           
 
                          }		
	
              i++;
              }			
}
in der ART?

aber gerade das einsetzen macht bereitet mir mühe.. das for dachte ich könnte ich benutzen, dass ich einfach jede Zeile hoch gehe und überprüfe, bis ich halt zuoberst anggekommen bin.
 

Izibaar

Mitglied
Fast.
Java:
private int insertToken(Token tok, int column) {
        //Name der verrät für was es gut ist
	int hoehe = 0;

	//Solange hoch zählen wie die Felder belegt sind
	while (field[hoehe][column] != Token.empty) {
              hoehe++;
        }			

        //Folglich ist das jetzige Feld leer. Also kann es mit dem token belegt werden
        field[hoehe][column] = tok;
}

Es fehlt allerdings immer noch etwas. Da das Feld nicht unbegrenzt ist muss noch abgefangen werden ob man oben angekommen ist. Vermutlich soll dann "return 0" folgen und bei erfolgreichem einsetzen des Tokens "return 1"? Aber das überlasse ich dir. ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M 4gewinnt oberfläche Allgemeine Java-Themen 17

Ähnliche Java Themen

Neue Themen


Oben