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.
Hallo allerseits,
Ich bin dabei ein TicTacToe zu programmieren, dies allerdings ohne 2DArray.
Das Grundgerüst sieht folgendermassen aus: Der Player macht einen Zug, dieser wird in der PlayerKlasse überprüft und dann an die Move-Klasse weitergegeben, welche alle Moves speichert. Die PlayerKlasse überprüft lediglich, ob der Zug schon mal getägigt wurde. alles unklar soweit??
Ich vermute, dass ich ein (mir leider unbekanntes) Konstruktur - Problem habe.
hier ein paar CodeSchnipsel:
Code:
public class TicTacToe {
private static final int maxMoves = 9;
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
Random generator = new Random();
Player p = new Player();
Computer c = new Computer();
Moves m = new Moves();
int moves = 1; // counter
boolean victory = false;
//
while( victory || moves <= maxMoves)
{
boolean validhumanMove = false;
while(!validhumanMove)
{
int humanMove = in.nextInt();
if(p.isValidMove(humanMove))
{
m.addMove(humanMove); // add humanMove to moves
validhumanMove = true;
System.out.println(p.isValidMove(humanMove));
}
}
moves++;
Code:
public class Player {
/*
* testet, ob der menschliche Zug schon getätigt wurde.
*/
public boolean isValidMove(int move)
{
Moves m = new Moves();
for(int e : m.getMoveList())
if(e == move) return false;
return true;
}
}
Code:
import java.util.ArrayList;
public class Moves {
public ArrayList<Integer> moves;
public Moves()
{
moves = new ArrayList<Integer>();
}
public void addMove(int move)
{
moves.add(move);
}
public ArrayList<Integer> getMoveList()
{
return moves;
}
}
Wäre super, wenn jemand Zeit hätte, sich da kurz durchzuarbeiten. Ich bin sicher, es liegt nur ein kleines Problem vor. Vielen Dank für alle Tipps!
public boolean isValidMove(int move)
{
Moves m = new Moves();
for(int e : m.getMoveList())
if(e == move) return false;
return true;
}
Ist es falsch, jedes mal ein Objekt zu erzeugen (Moves m = new Moves() ) ? Wie kann ich das umgehen? Ich mein, anders kann ich auf die MoveList ja nicht zugreifen. [/code]
Wenn du das schon in getrennten Klassen implementierst,
mußt du deine Liste eben übergeben.
Code:
public boolean isValidMove(int move, List<Integer> moves) {
for(int e : moves)
if (e == move)
return false;
return true;
}
...
if (p.isValidMove(humanMove, m.getMoveList()))