Gå til innhold

Får ikke oppdatert variabel (J2ME)


Anbefalte innlegg

Jeg lager et program som skal presentere et prosjekt vi gjør på skolen ved å ha et interaktivt slideshow. Man kan miste "liv" ved å svare "feil" under presentasjonen, og jeg ønsker å vise ulike bilder, og gå til ulike steder i presentasjonen basert på om man har flere liv igjen eller ikke.

 

All navigering fungerer som det skal hvis man setter liv-verdien til en verdi mellom 0 og 4, men livene dekrementerer ikke.

 

Kildekoden ligger vedlagt men her er et utsnitt:

 

public class CLifeCounterClass
{
private int lifes;

CLifeCounterClass()
{
	lifes = 4;
}

public int returnAndRemoveLifes()
{

	if(lifes > 0)
	{
		lifes--;

		return lifes;
	}
	else
	{
		return 0;
	}

}

public int returnLifes()
{
	return lifes;
}
}

 

Logisk sett ville man tro at lifes dekrementerer helt til det ikke er flere liv igjen. Er det tomt for liv vil 0 bli returnert.

 

Jeg lager et objekt av klassen over i hovedklassen til programmet. Der kalles metoden returnAndRemoveLifes() hver gang man mister liv:

 

public SplashScreen getDisplay_Lifes_1() {
	if (Display_Lifes_1 == null) {								   
		// write pre-init user code here
		Display_Lifes_1 = new SplashScreen(getDisplay());									  
		Display_Lifes_1.setTitle("");
		Display_Lifes_1.addCommand(getExitCommand());
		Display_Lifes_1.setCommandListener(this);
		Display_Lifes_1.setFullScreenMode(true);									
		// write post-init user code here
		Display_Lifes_1.setTimeout(5000);

		int lifes = lifeCounter.returnAndRemoveLifes();

		if(lifes == 3)
		{
			Display_Lifes_1.setImage(getLifeImages("3_lifes.jpg"));
			switchDisplayable(null, getMenu());
		}
		else if(lifes == 2)
		{
			Display_Lifes_1.setImage(getLifeImages("2_lifes.jpg"));
		}
		else if(lifes == 1)
		{
			Display_Lifes_1.setImage(getLifeImages("1_lifes.jpg"));
		}
		else if(lifes == 0)
		{
			Display_Lifes_1.setImage(getLifeImages("game_over.jpg"));
		}
	}						  
	return Display_Lifes_1;
}

 

Problemet er at liv aldri minker til mer enn lifes-1. Dvs at hvis jeg setter lifes = 4 i CLifeCounterClass vises 3 liv slik det skal. Setter jeg lifes i CLifeCounterClass til 0 vises game_over.jpg, som også er riktig. Jeg begriper ikke hvorfor lifes ikke vil dekrementere.

 

Jeg har også testet å ta lifes inne i hovedklassen til ingen nytte. Jeg har også testet med datatypene double og char, uten at det hjalp noe.

 

Hvis noen kan hjelpe meg med dette problemet blir jeg veldig veldig glad! Jeg har brukt utallige timer på å prøve å løse det selv uten hell.

 

Mvh

 

Francis

java.txt

midlet.txt

Endret av :Francis:
Lenke til kommentar
Videoannonse
Annonse

Ser ut som om problemet ligger i

 if (Display_Lifes_1 == null)

 

Når du kommer inn i denne første gangen så utføres bla

Display_Lifes_1 = new SplashScreen(getDisplay());

og du vil aldri komme inn i if'en igjen, da Display_Lifes_1 ikke lenger er null.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...