Witajcie. Uczę się języka. Analizuję sobie kod gry statki z pewnego kursu. Więc ogólnie jest klasa Field która posiada pola tablicy dwuwymiarowej int x, int y, State stan. I jest taki sobie oto kod. Nie rozumiem dlaczego jest utworzona tablica Field[] occupied = new Field[rozmiar], a później od razu w pętli jest wywoływana metoda z klasy setState bez utworzenia obiektu. Czyli moim zdaniem powinno być occupied[0] = new Field() a dopiero później occupied[0].SetState(przekazuję stan.)
public abstract class WarShip implements Ship {
enum Orientation {
HORIZONTAL, VERTICAL
}
private Orientation orientation;
private int hits;
private Field[] occupied;
public WarShip() {
occupied = new Field[getDecksCount()];
}
@Override
public boolean isSunk() {
return hits == getDecksCount();
}
public void setOnField(Field field, int deckNo) {
field.setShip(this);
field.setState(State.SHIP);
occupied[deckNo] = field;
}
@Override
public void hit() {
hits++;
if(isSunk()) {
for (int i = 0; i < occupied.length; i++) {
occupied[i].setState(State.SUNK);
}
}
}
}
class Submarine extends WarShip {
public int getDecksCount() {
return 1;
}
}