Greenfoot Programmierung?
Hallo,
ich möchte in Greenfoot ein Programm programmieren, indem man in der Spieler-Klasse einen Timer von 0-10 hochzählt und wenn dieser Timer == 10 ist, sollen sich alle Images aller Klassen ändern, auch diejenigen, die keinen Zugriff auf den Timer haben. Weiß jemand wie man das mit dem Image-Wechsel programmiert. Ich habe es schon mit "Player p = (Player)getOneIntersectingObject(Player.class);" probiert, da kam aber nur eine NullPointerException, da ich abgefragt habe:
if(p.Timer == 10)
{
setImage("Image.png");
}
Danke schonmal im Voraus für alle Antworten, wenn ihr noch Fragen habt, könnt ihr diese einfach stellen.
1 Antwort
die vorgehensweise die ich dir jetzt vorschalge, wird nur funktionieren bei Actors die du mit "addObject" in deiner welt spawnst und du bereits einen funtionierenden timer hast.
Wenn der timer auf 10 steht, dann ruf eine methode auf die so aussehen könnte:
public void UpdateImagesOfAllActorsInWorld(String img_name)
{
this.getWorld().getObjects(abc.class).get(0).setImage(img_name);
this.getWorld().getObjects(abc.class).get(1).setImage(img_name);
this.getWorld().getObjects(abc.class).get(2).setImage(img_name);
this.getWorld().getObjects(xyz.class).get(0).setImage(img_name);
this.getWorld().getObjects(xyz.class).get(1).setImage(img_name);
}
Ich weiß nicht ob das so funtionieren wird, aber es geht hier um das prinzip, dass du die Images alle actor in einer world manuell ändern musst.
Ich nehme an, dass du greenfoot für die schule benutzt, solltest du greenfoot allerdings privat nutzen, rate ich die wirklich auf etwas besseres zu wechsen, wie zu Beispiel godot ( https://godotengine.org/ ) oder Unity ( https://unity.com/de )
Ich nutze Greenfoot nur zwischendurch und bin mit Unity schon vertrat. Das Problem, warum es nicht geht ist, weil der Timer in jedem einzelnen Objekt gespeichert wird, nicht in der Klasse, weshalb sich nie alle Objekte der Klasse ändern lassen, aber trotzdem danke.