Statki - generacja planszy [javaFX]

0

Witam,
jestem początkujący w programowaniu w języku java. W ramach kursu stworzyłem gry staki w wersji konsolowej. Uznałem, że temat jest ciekawy i warto by spróbować w ramach nauki przekształcić je w aplikacje okienkowe. I tu tutaj złapała mnie mała "ciemnota". Plansza w wersji konsolowej generowała po prostu za wypełniana tablic za pomocą znaków - 'O' -statek, " " - puste pole itd. Jak przekształcić to w aplikacji okienkowej? Za pomocą buttonów? Rysowanie prostokątów? Proszę bardzo o podpowiedzi.
Pozdrawiam

0

Pierwsza rzecz jaka przychodzi mi na myśl to użycie biblioteki, np. libGDX (która bazuje na LWJGL) i renderowanie w niej obiektów właśnie na podstawie tablicy 2D. Ja renderowanie w swojej wersji gry Tetris zrobiłem w ten sposób:

 public void render(SpriteBatch batch)
    {
        int current;
        for (int x = 0; x < Board.X; x++)
        {
            for (int y = 0; y < Board.Y; y++)
            {
                current = board[x][y];
                if (board[x][y] != E)
                {
                    if (current < 10 && current > 0)
                    {
                        texture = new Texture(Gdx.files.internal("core/assets/tile.png"));
                    }
                    else if (current > 10)
                    {
                        texture = new Texture(Gdx.files.internal("core/assets/ltile.png"));
                    }

                    sprite = new Sprite(texture);
                    sprite.setPosition(x * sprite.getWidth(), Main.HEIGHT - 50f - y * sprite.getHeight());
                    sprite.draw(batch);
                }
            }
        }
    }

Oczywiście można to robić w JavaFX, ale jeśli chcesz brać się za robienie gier 2D to libGDX to najlepsze rozwiązanie.

0

Dzięki, jednak myślałem, że przydałoby się zacząć od podstaw, czyli nauczyć się najpeirw JavaFX a dopiero potem drążyć inne tematy.

0

No wiesz, JavaFX to biblioteka, libGDX też. Różnią się zastosowaniem: JavaFX to aplikacje okienkowe, a libGDX to gry na wszystkie 3 systemy operacyjne i Androida.

0

Mam taki fragment kodu:

public class Main {

    enum State {
        EMPTY, HIT, MISS, SUNK
    }

    private static final int WIELKOSC_PLANSZY = 10;

    public static void main(String[] args) {
        State [][] board = new State[WIELKOSC_PLANSZY][WIELKOSC_PLANSZY];
        fillBoard(board);
        printLetter();
        printBoard(board);
    }

    private static void fillBoard(State[][] board) {
        for (int i = 0; i < WIELKOSC_PLANSZY; i++) {
            for (int j = 0; j <WIELKOSC_PLANSZY ; j++) {
                board[i][j] = getRandomShip(Math.random());

            }

        }
    }


    static void printLetter() {
        System.out.print("  ");
        for (int i = 0; i < WIELKOSC_PLANSZY; i++) {
            System.out.print((char) ('A' + i));

        }
        System.out.print('\n');
    }

    static void printBoard(State [][] board) {
        for (int i = 0; i < WIELKOSC_PLANSZY; i++) {
            int numberToPrint = i + 1;
            if (numberToPrint < WIELKOSC_PLANSZY) {
                System.out.print(' ');
            }
            System.out.print(numberToPrint);
            for (int j = 0; j < WIELKOSC_PLANSZY; j++) {
                char shipValue = stateToChar(board[i][j]) ;
                System.out.print(shipValue);
            }
            System.out.print('\n');
        }

    }

    private static char stateToChar(State state) {
        char value;
        switch (state) {

            case EMPTY:
                value = ' ';
                break;
            case HIT:
                value = '0';
                break;
           default:
               value = '?';
        }
        return value;
    }

    private static State getRandomShip(double random) {
        if (random < 0.2) {
            return State.HIT;
        } else if (random > 0.8){
            return State.EMPTY;
        } else
            return State.MISS;
    }
}

 

I chciałbym go przerobić na zasadzie - Stan - np. prostokąty, które w zależności od stanu zmieniają swój kolor i w tej sposób tworzy mi się ładna plansza. Kompletnie nie wiem jak z tym ruszyć. Bardzo proszę o pomoc.

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