In my Game there is the Player (Car) who can shoot a ball that takes 20 out of 100 health on each hit. Then i have my CPU wich shoots automatic every like 3 and a half seconds with the same interactions as the Player and when one of them dies they either get into the MyWorld2 ( when CPU dies) or tp MyWorld2v2.
The thing is that right when one of them dies they get 1 added to the Score Counter. If the Score counter reaches 2 in the Car.class the GameOverScreen will be opend and if the CPU.class reaches the Score 2 the Victory Screen will apear. But everytime when im on one of the 2nd levels it doesnt work like it Should. When i kill the CPU it just restarts on the 2nd World again and i think it has sth to do with the Counter not being transfered or so... Pls help im kinda screwed rn cause of it being a school project
Car Class:
public class Car extends Actor { private int ShotTimer = 0; // schuss verzögerungs anzeiger int health = 100; // Lebensanzeige int Score2 = 0; private CPU myCPU ; public void act() { double entfernung = Math.sqrt(Math.pow(getX()-640, 2)+Math.pow(getY()- 402.5 ,2)); // Wurzel aus -> -640 hoch 2 | 402.5 hoch 2 // dadurch kriegen wir die entfernung unserer figur zum Mittelpunkt if(entfernung >= 363.5){ // wenn es kleiner / = 363.5 ist dann soll er um 25 nach hinten gehen ||kann somit nicht drüber //und wird von einer unsichtbaren wand festgehalten move(-25); // gehe 25 nach hinten } else{ if (ShotTimer > 0) { //wenn der shottimer größer als 1 ist ,dann ShotTimer = ShotTimer - 1; // in bestimmten zeitabstand immerwieder -1 bis 0 erreicht wird } else if (Greenfoot.isKeyDown("space")) { // wenn taste Space gedrückt wird dann... getWorld().addObject(new Shot(this), getX(), getY()); // füge Object.class Shot zu der x y koordinate des Autos hinzu ShotTimer = 200; // Timer auf 200 stellen um somit eine schuß verzögerung zu erzeugen } MouseInfo mi = Greenfoot.getMouseInfo(); // Das Greenfoot programm soll die Koordinate der Maus aufnehmen welche durch den code unter dieser entommen wurde if(mi!=null) // wenn die Daten nicht = 0 sind dann... turnTowards(mi); // zur Maus drehen if (Greenfoot.isKeyDown("w")) // wenn taste w gedrückt wird dann... move(2); // bewege dich 2 nach vorne } if (isTouching(Shot2.class)){ //wenn "car" "shot2" berührt ,dann... removeTouching(Shot2.class); //entferne die schleife "isTouching" loseHealth(20); //+ verliere 20 Leben } } // if is Touching schleifen in einzelnen public void... weil dieses removeTouching die anderen Schleifen auch löscht // und wenn die gelöscht sind gibt es ein error ( eine lücke im System ) welche das spiel beendet // Update (in der Präsentationsdatei wird diese Update nachricht gelöscht) : // Beim CPU hab ich bemerkt ,dass ich die Schleife isTouching mit dem removeTouching Befehl einfach als letztes benutzen muss // wodurch die anderen letzten endes nicht entfernt werden bevor sie ihre Ziele erreichen public void cpu () { if (isTouching(block.class)) { // wenn "car" "block" berührt ,dann... getOneIntersectingObject(CPU.class); //lasse dieses Object mit der CPU.class interagieren move (-27); //bewege dich 27 nach hinten } } public void block () { if (isTouching(block.class)) { //wenn "car" "block" berührt ,dann... getOneIntersectingObject(block.class); //lasse dieses Object mit der CPU.class interagieren move (-27); //bewege dich 27 nach hinten } } public void turnTowards (MouseInfo mi) // coding um herauszufinden wo die Maus ist, um im nachhinein sich in die Richtung zu drehen { turnTowards(mi.getX(), mi.getY()); // drehe dich zur nun entommenen Maus x y koordinate } public void Score (){ if (Score2 >= 2) { Greenfoot.setWorld(new GameOverScreen()); } } public void loseHealth(int amount) // wenn die Lebensanzeige 0 erreicht ,wird dieser Spieler aus dem Spiel genommen { health -= amount; if (health < 1) // wenn "health" kleiner als 1 ist ( also 0 ), dann... { getWorld().removeObject (this); // entferne dieses Object von der Welt Greenfoot.setWorld(new MyWorld2v2()); Score2+=1; } } }