Inlezen van Objecten en Timer starten

Status
Niet open voor verdere reacties.

Tim Hovius

Gebruiker
Lid geworden
25 jan 2008
Berichten
788
Hallo,

Ik moet voor school een programma maken. Het programma kan de volgende dingen doen:

  • Een boom toevoegen met de linker-muisknop
  • Een muur kunnen toevoegen met de middelste muisknop van aanpasbare grootte
  • Een bewegend monster kunnen toevoegen met de rechter-muisknop
  • De 3 helden moeten bewegen als er op geklikt wordt
Deze bovenstaande dingen werken allemaal goed.

Het programma moet ook kunnen saven en laden, maar dat krijg ik niet werkend. Bij het laden gaan namelijk de monsters niet bewegen. Dit komt omdat de Timer niet gestart is van de monsters. Maar mijn vraag is: hoe krijg ik die monsters bewegend als ik mijn spel laad?

Alvast bedankt voor de hulp

Tim
 

Bijlagen

Tjah een kort antwoord zou zijn: start de timer :D! maar om een meer zinnig antwoord te geven zal ik toch wat van de source moeten zien :P
Ik zou het zelf op de volgende manier opgelost hebben. lees de objecten uit -> cast de objecten naar de respectievelijke classes (of hou het op interface niveau) en dan de timers van de objecten starten (of roep methode execute uit ofzo).
 
Tjah een kort antwoord zou zijn: start de timer :D! maar om een meer zinnig antwoord te geven zal ik toch wat van de source moeten zien :P
Ik zou het zelf op de volgende manier opgelost hebben. lees de objecten uit -> cast de objecten naar de respectievelijke classes (of hou het op interface niveau) en dan de timers van de objecten starten (of roep methode execute uit ofzo).

De Source staat in de zip in de eerste post :thumb:
 
ok ik heb het opgelost :)

wat ik gedaan heb:

na het inladen van het level, een extra methode gemaakt die de timer van de monsters start:

[cpp]
public void loadFromFile(){
for (SpelElement elem : spelElementen){
if (elem instanceof Monster){
Monster monster = (Monster)elem;
monster.startTimer();
}
}
}
[/cpp]

in de monster class heb ik ook een aanpassing gemaakt:


[cpp]
public void startTimer(){

timer = new Timer(25,this);
timer.start();

}
[/cpp]


verder moet dan alleen nog na het laden de loadFromFile methode aangeroepen worden (in adventureApp.java)

regel 83:

[cpp]
this.levelPaneel = (LevelPaneel) ois.readObject();
this.levelPaneel.loadFromFile();
this.add(this.levelPaneel);
[/cpp]
 
Ik heb het er in gezet en raad is: het werkt!!!

Misschien kun je uitleggen wat dit stukje code doet:
[CPP]public void loadFromFile(){
for (SpelElement elem : spelElementen){
if (elem instanceof Monster){
Monster monster = (Monster)elem;
monster.startTimer();
}
}
}[/CPP]
Hartelijk dank!

Tim
 
Dat stukje code itereer ik door alle objecten in de array heen. Vervolgens kijk ik of het element van het type Monster is. Zo ja, cast dit object naar het type Monster en start de timer, meer doet het niet :)
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan