Para tu primera duda.
Cuando declaras como tipo de variable "Pieza" creo que el compilador supone que esa clase está en el mismo archivo donde estás declarando ese tipo.
Por ejemplo:
Código:
package prueba;
public class UsoPieza{
private Pieza pieza;
}
private class Pieza{
//código
}
Si no quieres esto, cosa lógica en tu programa, lo que tienes que hacer es decirle al compilador dónde está esa clase. Lo puedes hacer con el nombre completo de la clase (Ajedrez.Piezas.Pieza pieza), o bien importando el paquete:
Código:
package prueba;
import Ajedrez.Piezas.Pieza;
public class UsoPieza{
private Pieza pieza;
}
Para tu segunda duda.
Es posible que quieras añadir una clase "GrupoFichas" o algo así, que contenga todas las fichas disponibles junto con algunos métodos para marcarlas como "activas" y "comidas".
En cualquier caso es tan simple como:
Código:
//Lo pongo en el main, pero puede ir en cualquier otro sitio
public static void main(String[] args){
Ficha[] fichas = new Ficha[16];
Tablero t = new Tablero(fichas);
Jugador j = new Jugador(fichas);
}
//clase Tablero
public class Tablero{
private Ficha[] fichas;
public Tablero(Ficha[] f){
fichas = f;
}
}
//clase Jugador
public class Jugador{
private Ficha[] fs;
public Jugador(Ficha[] f){
fs = f;
}
}
Para tu caso, creo que es mejor inicializar las fichas en el constructor porque es más lógico, aunque también las puedes inicializar con algún set:
Código:
public class Jugador{
private Ficha[] fs;
public Jugador(){}
public void setFichas(Ficha[] fichas){
fs = fichas;
}
}
Al inicializar las fichas en el constructor impides que las fichas se puedan cambiar más tarde por otras nuevas, además de que el resto de métodos no necesitan checkear que existen piezas en el tablero (o jugador)
PD: Parece que se me adelantaron...
