Saper

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:

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!

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

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:

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.

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:

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1