Ich versuche gerade das in mein Spiel 'Survive!' einzubringen, doch der Spieler und die Gegner sind vor der Tabelle, statt dahinter, kann ich das irgendwie ändern?
Du schreibst einfach in den Konstruktor deiner Welt-Klasse folgendes:
setPaintOrder(HighScore.class,Actor.class);
Am besten direkt in die Zeile nach dem 'super(1280, 800, 1);'
Dann werden alle HighScore-Objekte, die du der Welt hinzufügst, vor alle anderen Actor-Objekte gezeichnet und der Highscore liegt vor den Gegnern und Spielern! :)
Ok, habe jetzt folgendes Problem: Wenn ich das jetzt richtig verstanden habe, ist das der Score, der gespeichert wird: ui_.setScore(ui_.getUserName().equals("davmac")?-1:Greenfoot.getRandomNumber(10001));
Wie bekomme ich da jetzt meinen Int, der die Kills zählt, dort hin?
mhh...
Ich hab mir mal dein Szenario angeschaut...
Du kannst in deiner Klasse KillCounter eine Methode einfügen, die die Kills zurückgibt...
Ganz einfach mit:
public int getKills() { return totalCount; }
und dann musst du, um die Kills zu bekommen, da du den KillCounter in keiner Variable festgehalten hast, folgendes schreiben:
ui_.setScore(((KillCounter)getObjects(KillCounter.class).get(0)).getKills());
Dann hast du den Score auf die aktuellen kills gesetzt!
Aber noch was wäre wichtig:
Wenn du den Score nur dann neu setzen willst, wenn der alte übertroffen worde, schreibst du am besten:
int i_Kills=((KillCounter)getObjects(KillCounter.class).get(0)).getKills();
if(i_Kills>ui_.getScore())
{
ui_.setScore(i_Kills);
ui_.store(); // den Score zu speichern darfst du nicht vergessen! ;)
}
Und was du auch nicht vergessen darfst ist, dass UserInfo.getMyInfo(); auch 'null' zurückgeben kann.
Darum müsstest du das vorher abfragen. Das kannst du mit:
if(ui_==null)
return;
Dann wird die aktuelle Methode abgebrochen!
mh...
mit 'return;' springt das programm aus der aktuellen Methode wieder raus.
Das heißt wenn du 'if(ui!=null) return;' schreibst, dann springt das Programm aus der Methode, wenn in ui_ ein Objekt gespeichert ist.
Da es aber rausspringen soll, wenn darin kein Objekt, also 'null' gespeichert ist, musst du 'ui==null' schreiben. :)
hmm.. ich bekomme eine Fehlermeldung (java.lang.IndexOutOfBoundsException: Index: 0, Size: 0) in dieser Zeile: int i_Kills=((KillCounter)getObjects(KillCounter.class).get(0)).getKills();
Code der jetzt da steht:
UserInfo ui_=UserInfo.getMyInfo();
int i_Kills=((KillCounter)getObjects(KillCounter.class).get(0)).getKills();
if(ui_==null) return;
if(i_Kills>ui_.getScore())
{
ui_.setScore(i_Kills);
ui_.store();
}
2013/5/17
2013/5/18
2013/5/18
2013/5/18
2013/5/26
2013/6/13
2013/6/13
2013/6/13
2013/6/13
2013/6/13
2013/6/13
2013/6/13
2013/6/13
2013/6/13
2013/6/14
2013/6/14
2013/10/2
2013/12/17
2013/12/18
2013/12/18
2019/5/22