Page 1 of 1

Problemer med at få gameMenu til at virke!

Posted: 17 Apr 2013, 20:21
by mathiaskruse
Hej alle. Jeg er igang med at prøve at opsætte en menu til mit spil. Det går sådan set meget fint, udover at jeg ikke kan få min thread til at starte når jeg trykker på knappen.

Alt virker, undtagen at starte thread da den så vil have en ikke "static" method, og hvis jeg laver den om til ikke static kan min mouseListener ikke finde ud af det :(


Min Main Code

Code: Select all

	public static void ClickStartGame(int MB) {
		if (MB == 1) {
			if (!Screen.store.gameStarted) {
				if (Screen.store.startButton.contains(mse)) {
					System.out.println("Start Game");
					Screen.store.gameStarted = true;
					thread.start();
				}
				if (Screen.store.quitButton.contains(mse)) {
					System.out.println("Quit Game");
				}
			}
		}
	}
MouseListener kode:

Code: Select all

	public void mousePressed(MouseEvent e) {
		Screen.ClickStartGame(e.getButton());
	}

Re: Problemer med at få gameMenu til at virke!

Posted: 18 Apr 2013, 09:24
by mattsson
Hvis metoden ikke er static, skal du initialisere et objekt af den givne klasse først, dvs. du kan tilgå metoder i din Screen-klasse, hvis du først har initialiseret et objekt af klassens type:

Code: Select all

Screen myScreen = new Screen();
Du kan så efterfølgende tilgå ClickStartGame() via:

Code: Select all

public void mousePressed(MouseEvent e) {
    myScreen.ClickStartGame(e.getButton());
}
Normalt skal flere metoder have adgang til det initialiserede objekt, så man vil deklarere en variabel i starten af klassen, som alle metoder kan tilgå, og så initialisere denne i fx Main() eller en anden metode, der kører først fx:

Code: Select all

SomeClass {
	Screen myScreen;
	
	void Main() {
		myScreen = new Screen();
	}
	
	public void mousePressed(MouseEvent e) {
		myScreen.ClickStartGame(e.getButton());
	}
}

Re: Problemer med at få gameMenu til at virke!

Posted: 19 Apr 2013, 12:57
by mathiaskruse
I hvilken class skal jeg initialisere det objekt? - i min KeyHandle?
Jeg ved hvordan det skal fungere hvis jeg kun har en class, men jeg har 9 i mit spil, og ud fra det jeg har lært so far er opsætningen af spillet pænt skod, så jeg ved ikke rigtigt om jeg kan forklare noget som helst uden at skulle vise dig kildekoden? :/

Re: Problemer med at få gameMenu til at virke!

Posted: 19 Apr 2013, 21:59
by Code
mathiaskruse wrote:I hvilken class skal jeg initialisere det objekt? - i min KeyHandle?
Jeg ved hvordan det skal fungere hvis jeg kun har en class, men jeg har 9 i mit spil, og ud fra det jeg har lært so far er opsætningen af spillet pænt skod, så jeg ved ikke rigtigt om jeg kan forklare noget som helst uden at skulle vise dig kildekoden? :/
Tjah noget kildekode kommer du nok til at vise, men jeg ville nok ikke være bange for at vise den. Altså, hvis det ikke er et kæmpe spil, så vil det jo bare virke som en tutorials for de fleste alligevel :)

Re: Problemer med at få gameMenu til at virke!

Posted: 21 Apr 2013, 01:35
by Jannek
Som mattsson også viser, bør du ikke bruge static til den slags. Jeg antager at du selv har lavet klassen Screen. Hvis du på intet tidspunkt skal bruge mere end én Screen, kan du i stedet oprette den som et singleton:

Code: Select all

public class Screen {
  // Dette er dit ENESTE static felt, med mindre du har en meget god grund til at have andre.
  public static final instance = new Screen();

  private Screen() {
    // stuff you like :)
  }

  // fields and methods you like :)
}
Så skal du bare kalde din funktion med

Code: Select all

public void mousePressed(MouseEvent e) {
  Screen.instance.clickStartGame(e.getButton());
}
Og husk i Java skriver man både metoder og felter med lille begyndelsesbogstav :) (clickStartGame ikke ClickStartGame) Det er en god ting at følge standarten.

Hvis du ikke ved om du kan forklare det, uden at vise koden, SÅ VIS KODEN!

Re: Problemer med at få gameMenu til at virke!

Posted: 21 Apr 2013, 21:32
by mattsson
mathiaskruse wrote:I hvilken class skal jeg initialisere det objekt? - i min KeyHandle?
Jeg ved hvordan det skal fungere hvis jeg kun har en class, men jeg har 9 i mit spil, og ud fra det jeg har lært so far er opsætningen af spillet pænt skod, så jeg ved ikke rigtigt om jeg kan forklare noget som helst uden at skulle vise dig kildekoden? :/
Hvilken klasse skal bruge Screen-klassen?