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;
}
}
}
