Olá a todos, segue o código abaixo:
package aspirador;
public class Main {
public static void main(String[] args) {
Aspirador aspirador = new Aspirador();
//Ambiente ambiente = new Ambiente();
}
}
package aspirador;
import java.util.Random;
public class Aspirador extends Ambiente {
public Aspirador() {
carregoPosicao();
}
/*
* Carrega posição para saber a onde o aspirador está
*/
private void carregoPosicao() {
x = getX(); // posição linha
y = getY(); // posição coluna
//System.out.println("Aspirador X " + x);
//System.out.println("Aspirador Y " + y);
aspirando();
}
private void aspirando() {
/*
* Aspiro a linha que o aspirador está, então eu não mexo na linha, mas
* sim na coluna.
*/
// esse for chega até um extremo da linha
for (y = getY(); y < getN(); y--) {
// 0 --> ambiente limpo e sem mobilhas
if (getQuadrado()[getX()][getY()] == 0) {
getQuadrado()[getX()][getY()] = 4;
exibeAmbiente();
}
}
}
private int x, y, i, j, status;
}
package aspirador;
import java.util.Random;
public class Ambiente {
Random randNumeros = new Random(); // gerador de números aleatórios
public Ambiente() {
setN(4);
setQuadrado(new int[getN()][getN()]); // ambiente de n x n
iniAmbiente();
}
/*
* 0 --> ambiente limpo e sem mobilhas
* 1 --> ambiente sujo e sem mobilhas
* 2 --> ambiente sujo com mobilhas
* 3 --> ambeinte limpo com mobilhas
*/
private void iniAmbiente() {
setAspirador(false); // aspirador ainda não está no ambiente
for(setI(0); getI()<getN(); setI(getI() + 1)) {
for (setJ(0); getJ()<getN(); setJ(getJ() + 1)) {
// seleciona inteiro entre 0 e 3
getQuadrado()[getI()][getJ()] = 0 + randNumeros.nextInt(3);
}
}
exibeAmbiente();
iniAspirador();
exibeAmbiente();
}
/*
* Exibe o ambiente sem o aspirador
*/
private void exibeAmbiente() {
// aspirador não está no ambiente ainda
if(isAspirador()==false) {
System.out.println("Inicializando Ambiente .....");
System.out.printf("\n");
for(setI(0); getI()<getN(); setI(getI() + 1)) {
for (setJ(0); getJ()<getN(); setJ(getJ() + 1)) {
System.out.printf("%2d",getQuadrado()[getI()][getJ()]);
}
System.out.printf("\n");
}
}
else {
System.out.printf("\n");
System.out.println("Iniciando Aspirador .....");
System.out.printf("\n");
for(setI(0); getI()<getN(); setI(getI() + 1)) {
for (setJ(0); getJ()<getN(); setJ(getJ() + 1)) {
System.out.printf("%2d",getQuadrado()[getI()][getJ()]);
}
System.out.printf("\n");
}
System.out.printf("\n");
System.out.println("Linha: " + getX());
System.out.println("Coluna: " + getY());
System.out.printf("\n");
}
}
/*
* Inicializa a posição inicial do aspirador de forma aleatória
* 4 --> aspirador
*/
private void iniAspirador() {
setX(0 + randNumeros.nextInt(getN())); // linha inicial do aspirador
setY(0 + randNumeros.nextInt(getN())); // coluna inicial do aspirador
//System.out.println("Linha: " + getX());
//System.out.println("Coluna: " + getY());
getQuadrado()[getX()][getY()] = 4;
setAspirador(true); // aspirador está no ambiente
}
public int getN() {
return n;
}
public void setN(int n) {
this.n = n;
}
public int getI() {
return i;
}
public void setI(int i) {
this.i = i;
}
public int getJ() {
return j;
}
public void setJ(int j) {
this.j = j;
}
public int[][] getQuadrado() {
return quadrado;
}
public void setQuadrado(int[][] quadrado) {
this.quadrado = quadrado;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public boolean isAspirador() {
return aspirador;
}
public void setAspirador(boolean aspirador) {
this.aspirador = aspirador;
}
private int n,i,j, x, y;
private int[][] quadrado;
private boolean aspirador;
}
A minha dúvida é o seguinte, como eu faço através da classe Aspirador acessar o método exibeAmbiente() que está na classe Ambiente?