Jak ulepszyć program - grafiki z plików jako przyciski

0

Witam,
Robię projekt (gra memory — odwracanie kart i szukanie par) w JavieFX na programowanie obiektowe, choć nie za bardzo się na tym znam. Jest jednak za słaby, żeby zdać, więc chcę go jakoś polepszyć.** Miałem zrobić wczytywanie grafik zamiast kolorów, ale nie umiem tego zrobić.**
Ma ktoś jakieś pomysły jak w miarę łatwy sposób rozbudować ten program?

Z góry dzięki za podpowiedzi, pozdrawiam :)

Dodałem jeszcze załącznik z całą paczką z Eclipse jakby jakiś dobry człowiek chciał na to spojrzeć i się pobawić ;)

Jak na razie wygląda to tak:
screenshot-20170213153214.png

Próbowałem zmieniać to tak:
screenshot-20170213165642.png

Kod odpowiadający za działanie programu:
(powycinałem wszystkie elementy które nie tyczą się problemu)

public class Controller implements Initializable {

	ArrayList<Title> titles = new ArrayList<>();
	Title firstSelected = null;
	Title secondSelected = null;
	int correct = 0;
	int licznik = 0;
	long start;
	long stop;

	@FXML
	Rectangle b11, b12, b13, b14, b21, b22, b23, b24, b31, b32, b33, b34, b41, b42, b43, b44;
	@FXML
	Label counter;


	// obsługa przycisków
	public void b11Clicked() {
		showTitle(b11);
	}	
//tak zrobione dla wszystkich przycisków (...)
	public void b44Clicked() {
		showTitle(b44);
	}

	public void buttonStartClicked() {
		generateNewMap();
		start = System.currentTimeMillis();
		licznik = 0;
		correct = 0;
	}

	public void hideTitles() {
		for (Title title : titles) {
			if (title.isDark()) {
				title.getButton().setFill(Color.DODGERBLUE);
			}
		}
	}

	public void showTitle(Rectangle buttonTitle) {
		if (correct < 8) {

			for (Title title : titles) {

				counter.setText("Ilość prób: " + Integer.toString(licznik));

				if (title.getButton().equals(buttonTitle)) {

					int x = title.getPairID();

					if (x == 1) {
// tu już zacząłem kombinować
						buttonTitle.getClass().getResource("p1.jpg");
					} else if (x == 2) {
						buttonTitle.setFill(Color.CHOCOLATE);
					} else if (x == 3) {
						buttonTitle.setFill(Color.AZURE);
					} else if (x == 4) {
						buttonTitle.setFill(Color.GREY);
					} else if (x == 5) {
						buttonTitle.setFill(Color.INDIGO);
					} else if (x == 6) {
						buttonTitle.setFill(Color.GOLD);
					} else if (x == 7) {
						buttonTitle.setFill(Color.VIOLET);
					} else if (x == 8) {
						buttonTitle.setFill(Color.BROWN);
					}
					// algorytm sprawdzający
					if (firstSelected == null) {
						firstSelected = title;
					} else {
						if (secondSelected == null) {
							licznik++;
							secondSelected = title;
							if (firstSelected.getPairID() == secondSelected.getPairID()
									&& !firstSelected.equals(secondSelected)) {
								firstSelected.setDark(false);
								secondSelected.setDark(false);
								correct++;
							}
						} else {
							hideTitles();
							firstSelected = null;
							secondSelected = null;
						}
					}
				}
			}
		}
		if (correct == 8) {
                       save();
	        }

	public void generateNewMap() {
		newMap();
		// wymieszanie kafelek tak aby ograniczyć sztuczność losowania par
		Random random = new Random();
		for (int k = 0; k < 16; k++) {
			boolean x = random.nextBoolean();
			if (x) {
				Title temp = titles.get(k);
				titles.remove(k);
				titles.add(random.nextInt(16), temp);
			}

		}

		// przydzielanie pomieszanym kafelkom par id
		int pair = 1;
		for (int k = 0; k < 16; k += 2) {
			titles.get(k).setPairID(pair);
			titles.get(k + 1).setPairID(pair);
			pair++;
		}
		correct = 0;
		firstSelected = null;
		secondSelected = null;

	}

	public void newMap() {
		titles.clear();
		for (int x = 0; x < 16; x++) {
			Title title = new Title(0);
			titles.add(title);

		}
		titles.get(0).setButton(b11);
		titles.get(1).setButton(b12);
		titles.get(2).setButton(b13);
		titles.get(3).setButton(b14);
		titles.get(4).setButton(b21);
		titles.get(5).setButton(b22);
		titles.get(6).setButton(b23);
		titles.get(7).setButton(b24);
		titles.get(8).setButton(b31);
		titles.get(9).setButton(b32);
		titles.get(10).setButton(b33);
		titles.get(11).setButton(b34);
		titles.get(12).setButton(b41);
		titles.get(13).setButton(b42);
		titles.get(14).setButton(b43);
		titles.get(15).setButton(b44);

		b11.setFill(Color.DODGERBLUE);
		b12.setFill(Color.DODGERBLUE);
		b13.setFill(Color.DODGERBLUE);
		b14.setFill(Color.DODGERBLUE);
		b21.setFill(Color.DODGERBLUE);
		b22.setFill(Color.DODGERBLUE);
		b23.setFill(Color.DODGERBLUE);
		b24.setFill(Color.DODGERBLUE);
		b31.setFill(Color.DODGERBLUE);
		b32.setFill(Color.DODGERBLUE);
		b33.setFill(Color.DODGERBLUE);
		b34.setFill(Color.DODGERBLUE);
		b41.setFill(Color.DODGERBLUE);
		b42.setFill(Color.DODGERBLUE);
		b43.setFill(Color.DODGERBLUE);
		b44.setFill(Color.DODGERBLUE);

	}

	@Override
	public void initialize(URL location, ResourceBundle resources) {
		newMap();
		generateNewMap();
	}

}

1

Z tego co widzę korzystasz z JavaFX. To ma znaczenie, o czym nie raczyłeś nas powiadomić ;)
Dopisz, dodaj tagi.
Grafiki załadować wcale nie tak ciężko. Tutaj masz przykład przy czym staraj się korzystać z this.getClass().getResource(...).

Jak chcesz to podrzuć kod, lepsi ode mnie ocenią obiektówkę ;)

1

Można dodać dźwięki jeśli jeszcze nie dodałeś ;)

0

Problem rozwiązany, wystarczyło dodać po 3 linijko kodu dla każdej pary przycisków.
https://docs.oracle.com/javafx/2/api/javafx/scene/paint/ImagePattern.html

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