Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Bin gerade dabei 4 gewinnt zu programmieren, bis jetzt bin ich so weit dass das spielfeld ausgegeben wird und der Spieler die Spalte wählen kann wo er seinen Stein (X, O) einwerfen kann.
Nun weiß ich nicht mehr weiter, ich weiß nicht wie ich den gesetzen stein im Spielfeld ausgeben kann.
Vielleicht hat jemand eine Idee?
Hier einmal mein Code:
Java:
public class viergewinnt {
static int column = 7;
static int lines = 6;
static char[][] field = new char [column][lines];
public static void main(String[] args) {
printField(field);
}
static void printField(char[][] field){ //Methode die das Feld ausgibt
int y = lines;
do {
y--;
Out.print("|");
for(int x = 0; x < column; x++){
Out.print(field[x][y] +"|");
}
Out.println();
} while(y > 0);
for(int i = 0; i < column; i++) {
Out.print("+-");
}
Out.println("+");
Out.println(" 1 2 3 4 5 6 7 ");
}
static void initializeField(char[][] field){
for(int y = 0; y < lines; y++){
for(int x = 0; x < column; x++){
field[x][y] = ' ';
}
}
printField(field);
}
static int readXPos() { // Methode die die Position einliest
int result;
Out.print("Please input colum for your token: ");
result = In.readInt();
return result;
}
static int readYPos() {
int result;
Out.print("Please input colum for your token: ");
result = In.readInt();
return result;
}
static char symbolForPlayer(boolean player1) {
if (player1) {
return 'X';
} else {
return 'O';
}
}
//Methode die den Spielstein (X, 0) setzen soll
static boolean placeStone (char[][] playField, int xPos, int yPos, boolean player1)
????????????
static int readXPos() { // Methode die die Position einliest
int result;
Out.print("Please input colum for your token: ");
result = In.readInt();
return result;
}
static int readYPos() {
int result;
Out.print("Please input colum for your token: ");
result = In.readInt();
return result;
}
warum hast du da überhaupt eine methode readYPos? der stein fällt doch immer bis unten durch. die einzige position, die der spieler bestimmen kann, ist doch die x pos. oder steh ich da grad aufm schlauch?
static void placeStone (char[][] playField, int xPos, char player) {
switch (player){
case 'X': {
for (int i = 0; i < playField.length; i++){
if ((playField[i][xPos] != 'X') && (playField[i][xPos] != 'O')){ //oder mit == ''
playField[i][xPos] = 'X';
}
}
break;
}
case 'O': {
for (int i = 0; i < playField.length; i++){
if ((playField[i][xPos] != 'X') && (playField[i][xPos] != 'O')){ //oder mit == ''
playField[i][xPos] = 'O';
}
}
break;
}
//evtl noch default
}
}
so könnte es zb gehen. ist jetzt nicht getestet und einfach schnell reingetippt. könnten also fehler drin sein.
grüße
nrg
edit: weiß auch net wie du es haben willst mit rückgabe etc. müsstest halt evtl weng anpassen
edit2: sind auch einige fehler drin, wie ich grad sehe . mom ich kuck da nochmal drüber ^^
public static void main(String[] args) {
boolean placed;
do {
//2. Read position from player
xPos = readXPos();
//3. Place stone
placed = placeStone(field, xPos, player);
} while (!placed);
}
du willst bei //3. Place stone eine void methode der boolean variable placed übergeben. wie gesagt, ich weiß nicht was du damit machen willst. du müsstest jetzt die methode placeStone (char[][] playField, int xPos, char player) mit rückgabewert boolean machen und dann in den 2 fällen vom switch für x oder o return true; setzen. im default dann return false. so könntest du zb abprüfen, ob der stein korrekt gesetzt wurde.. solange die parameter stimmen und der stein nicht in eine posx gesetzt werden soll, dessen reihe schon voll ist, wird auch afaik immer ein stein gesetzt...
und bitte zweites posting beachten!! der code, den du übernommen hast ist weng verbuggt . (für zweites posting garantiere ich allerdings auch nicht, dass alles passt. habs nur kurz getestet).