Saper

V2
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 4 lata
  • Postów:15
0

Siemka, kiedyś napisałem sapera w C++, ostatnio zacząłem się uczyć Javy i chciałem od nowa go napisać, jednak mam trochę problemów i się gubię. W c++ stworzyłem klasę plansza i strukturę pole, która miała 3 zmienne. Teraz chcę mieć dwie klasy, Plansza i Pole. Plansza jest prostokątnym obszarem o wymiarach M*N. Każdy element tego obszaru to zdefiniowane Pole i tutaj moje pytanie, chcę stworzyć tablice obiektów Pole w metodzie klasy Plansza i w różnych innych metodach Planszy operować na konkretnych obiektach (Polach) stworzonych w metodzie Planszy. Przykładowy kod klasy Plansza:

Kopiuj
public class Plansza
{

    int wysokosc;
    int szerokosc;
    public static void main(String [] args)
    {
        //Plansza plan1 = new Plansza(10, 10);
        //plan1.StworzPola();

    }
    public Plansza(int x, int y)
    {
        szerokosc = x;
        wysokosc =y;
    }
    public void StworzPola()
    {
         Pole[][] p1 = new Pole[10][10];
        for(int i=0;i<10;i++)
        {
            for(int j=0;j<10;j++) {
                p1[i][j] = new Pole();
                System.out.println( p1[i][j].CzyJestMina());
            }
        }
    }
}

Z góry dziękuję za pomoc!

edytowany 1x, ostatnio: flowCRANE
PI
  • Rejestracja:ponad 9 lat
  • Ostatnio:4 miesiące
  • Postów:2787
0
Volumen2325 napisał(a):

i tutaj moje pytanie, chcę stworzyć tablice obiektów Pole w metodzie klasy Plansza i w różnych innych metodach Planszy operować na konkretnych obiektach (Polach) stworzonych w metodzie Planszy. Przykładowy kod klasy Plansza:

To w końcu jakie masz pytanie? :D

Nerkowiec
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Warszawa
  • Postów:8
1

Klasa Board, jeśli chcesz mieć dostęp do pól planszy we wszystkich metodach tej klasy to stwórz po prostu to jako atrybut tej klasy. Przykład planszy:

Kopiuj
public class Board {

    private int height;
    private int width;
    private Field[][] boardFields; // dostęp do pola mają wszystkie metody tej klasy

    Board(int height, int width) {
        this.height = height;
        this.width = width;
        boardFields = new Field[height][width];
    }

    public void createBoardFields() {

        for (int i = 0; i < height; i++) {
            for (int j = 0; j < width; j++) {
                boardFields[i][j] = new Field();
                System.out.print(boardFields[i][j].isMine() + " ");
            }
            System.out.println();
        }
    }


    public static void main(String[] args) {
        new Board(5, 5).createBoardFields();
    }
}

Tu masz przykładową klasę reprezentującą pole. To czy jest mina bądź nie, ustawiane jest losowo w konstruktorze.

Kopiuj
import java.util.Random;

public class Field {

    private boolean mine;

    Field() {
        mine = new Random().nextBoolean();
    }

    boolean isMine() {
        return mine;
    }
}

Taka przykładowa plansza w konsoli wygląda na przykład tak:

Kopiuj
false true true true false 
true true false true false 
false false true true false 
false false false false false 
false true false false true

Pisz kod w języku angielskim i doucz się na temat hermetyzacji.

edytowany 1x, ostatnio: Nerkowiec
V2
Wszystko już jest jasne, dzięki wielkie! :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.