Hallo,
ich hab mit Java angefangen und wollte mit einem Tutorial Tic Tac Toe programmieren, um die Basics besser zu verstehen und wie man diese anwendet.
Bei dem Mann im Video ist der Code genau gleich und funktioniert bei ihm, doch bei mir ist dies nicht der Fall.
Bei placePiece(gameBoard,playerPos,"player");, bekomme ich die Fehlermeldung: playerPos cannot be resolved to a variable und bei placePiece(gameBoard,cpuPos,"cpu"); die Fehlermeldungen:
- Syntax error on token ""cpu"", invalid
FormalParameter
- gameBoard cannot be resolved to a type
- Syntax error on token ",", delete this token
- Return type for the method is missing
- Syntax error on token ")", { expected after this
token
Ich bin seit gut 2 Stunden komplett am verzweifeln und kann nicht verstehen, warum Java in diesem Fall so stress macht.
[CODE lang="java" highlight="31,43"]import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
public class TicTacToe {
static ArrayList<Integer> playerPositions=new ArrayList<Integer>();
static ArrayList<Integer> cpuPositions=new ArrayList<Integer>();
public static void main(String[] args) {
char [] [] gameBoard= {{' ','|',' ','|',' '},
{'-','+','-','+','-'},
{' ','|',' ','|',' '},
{'-','+','-','+','-'},
{' ','|',' ','|',' '}};
printGameboard(gameBoard);
while(true) {
Scanner scan = new Scanner(System.in);
System.out.println("Nenne das Kästchen. 1-9: ");
int playerPos=scan.nextInt();
while(playerPositions.contains(playerPos) || cpuPositions.contains(playerPos));
System.out.println("Schon belegt");
playerPos=scan.nextInt();
}
placePiece(gameBoard,playerPos,"player");
String result=checkWinner();
if(result.length()>0) {
System.out.println(result);
break;
}
Random rand=new Random();
int cpuPos=rand.nextInt(9)+1;
while(playerPositions.contains(cpuPos) || cpuPositions.contains(cpuPos));
System.out.println("Schon belegt");
cpuPos=rand.nextInt(9)+1;
}
placePiece(gameBoard,cpuPos,"cpu");
printGameboard(gameBoard);
result=checkWinner();
if (result.length()>0) {
System.out.println(result);
break;
}
}
public static void printGameboard(char [] [] gameBoard) {
for(char[] row:gameBoard) {
for(char c:row) {
System.out.print(c);
}
System.out.println();
}
}
public static void placePiece(char[] [] gameBoard, int pos, String user) {
char symbol=' ';
if(user.equals("player")) {
symbol='X';
playerPositions.add(pos);
} else if (user.equals("cpu")) {
symbol='O';
cpuPositions.add(pos);
}
switch(pos) {
case 1:
gameBoard[0] [0]=symbol;
break;
case 2:
gameBoard[0] [2]=symbol;
break;
case 3:
gameBoard[0] [4]=symbol;
break;
case 4:
gameBoard[2] [0]=symbol;
break;
case 5:
gameBoard[2] [2]=symbol;
break;
case 6:
gameBoard[2] [4]=symbol;
break;
case 7:
gameBoard[4] [0]=symbol;
break;
case 8:
gameBoard[4] [2]=symbol;
break;
case 9:
gameBoard[4] [4]=symbol;
break; }
}
public static String checkWinner() {
List topRow=Arrays.asList(1,2,3);
List midRow=Arrays.asList(4,5,6);
List botRow=Arrays.asList(7,8,9);
List leftCol=Arrays.asList(1,4,7);
List midCol=Arrays.asList(2,5,8);
List rightCol=Arrays.asList(3,6,9);
List cross1=Arrays.asList(1,5,9);
List cross2=Arrays.asList(7,5,3);
List<List>winning=new ArrayList<List>();
winning.add(topRow);
winning.add(midRow);
winning.add(botRow);
winning.add(leftCol);
winning.add(midCol);
winning.add(rightCol);
winning.add(cross1);
winning.add(cross2);
for(List L:winning) {
if(playerPositions.containsAll(L)) {
return "Hast gewonnen";
}else if(cpuPositions.contains(L)) {
return"Cpu gewinnt";
}else if(playerPositions.size()+cpuPositions.size()==9) {
return"Unentschieden";
}
}
return "";
}
} [/CODE]
ich hab mit Java angefangen und wollte mit einem Tutorial Tic Tac Toe programmieren, um die Basics besser zu verstehen und wie man diese anwendet.
Bei dem Mann im Video ist der Code genau gleich und funktioniert bei ihm, doch bei mir ist dies nicht der Fall.
Bei placePiece(gameBoard,playerPos,"player");, bekomme ich die Fehlermeldung: playerPos cannot be resolved to a variable und bei placePiece(gameBoard,cpuPos,"cpu"); die Fehlermeldungen:
- Syntax error on token ""cpu"", invalid
FormalParameter
- gameBoard cannot be resolved to a type
- Syntax error on token ",", delete this token
- Return type for the method is missing
- Syntax error on token ")", { expected after this
token
Ich bin seit gut 2 Stunden komplett am verzweifeln und kann nicht verstehen, warum Java in diesem Fall so stress macht.
[CODE lang="java" highlight="31,43"]import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
public class TicTacToe {
static ArrayList<Integer> playerPositions=new ArrayList<Integer>();
static ArrayList<Integer> cpuPositions=new ArrayList<Integer>();
public static void main(String[] args) {
char [] [] gameBoard= {{' ','|',' ','|',' '},
{'-','+','-','+','-'},
{' ','|',' ','|',' '},
{'-','+','-','+','-'},
{' ','|',' ','|',' '}};
printGameboard(gameBoard);
while(true) {
Scanner scan = new Scanner(System.in);
System.out.println("Nenne das Kästchen. 1-9: ");
int playerPos=scan.nextInt();
while(playerPositions.contains(playerPos) || cpuPositions.contains(playerPos));
System.out.println("Schon belegt");
playerPos=scan.nextInt();
}
placePiece(gameBoard,playerPos,"player");
String result=checkWinner();
if(result.length()>0) {
System.out.println(result);
break;
}
Random rand=new Random();
int cpuPos=rand.nextInt(9)+1;
while(playerPositions.contains(cpuPos) || cpuPositions.contains(cpuPos));
System.out.println("Schon belegt");
cpuPos=rand.nextInt(9)+1;
}
placePiece(gameBoard,cpuPos,"cpu");
printGameboard(gameBoard);
result=checkWinner();
if (result.length()>0) {
System.out.println(result);
break;
}
}
public static void printGameboard(char [] [] gameBoard) {
for(char[] row:gameBoard) {
for(char c:row) {
System.out.print(c);
}
System.out.println();
}
}
public static void placePiece(char[] [] gameBoard, int pos, String user) {
char symbol=' ';
if(user.equals("player")) {
symbol='X';
playerPositions.add(pos);
} else if (user.equals("cpu")) {
symbol='O';
cpuPositions.add(pos);
}
switch(pos) {
case 1:
gameBoard[0] [0]=symbol;
break;
case 2:
gameBoard[0] [2]=symbol;
break;
case 3:
gameBoard[0] [4]=symbol;
break;
case 4:
gameBoard[2] [0]=symbol;
break;
case 5:
gameBoard[2] [2]=symbol;
break;
case 6:
gameBoard[2] [4]=symbol;
break;
case 7:
gameBoard[4] [0]=symbol;
break;
case 8:
gameBoard[4] [2]=symbol;
break;
case 9:
gameBoard[4] [4]=symbol;
break; }
}
public static String checkWinner() {
List topRow=Arrays.asList(1,2,3);
List midRow=Arrays.asList(4,5,6);
List botRow=Arrays.asList(7,8,9);
List leftCol=Arrays.asList(1,4,7);
List midCol=Arrays.asList(2,5,8);
List rightCol=Arrays.asList(3,6,9);
List cross1=Arrays.asList(1,5,9);
List cross2=Arrays.asList(7,5,3);
List<List>winning=new ArrayList<List>();
winning.add(topRow);
winning.add(midRow);
winning.add(botRow);
winning.add(leftCol);
winning.add(midCol);
winning.add(rightCol);
winning.add(cross1);
winning.add(cross2);
for(List L:winning) {
if(playerPositions.containsAll(L)) {
return "Hast gewonnen";
}else if(cpuPositions.contains(L)) {
return"Cpu gewinnt";
}else if(playerPositions.size()+cpuPositions.size()==9) {
return"Unentschieden";
}
}
return "";
}
} [/CODE]