Erste Schritte if Syntax

Phoenixz

Mitglied
Hallo Community!

Ich möchte per Greenfoot das Spiel "Pong" nachprogrammieren und hatte bis jetzt auch noch keine Probleme (die ich nichts selbst lösen konnte). Doch jetzt steh ich etwas auf dem Schlauch:

Java:
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)


public class Hintergrund  extends World {

          PaddelEins neuesPaddel = new PaddelEins();
          PaddelZwei neuesPaddel2 = new PaddelZwei();
          Ball neuerBall = new Ball();
          Leben neuesLeben = new Leben();
          Leben neuesLeben2 = new Leben();
          Leben neuesLeben3 = new Leben();
          Leben2 neuesLeben4 = new Leben2();
          Leben2 neuesLeben5 = new Leben2();
          Leben2 neuesLeben6 = new Leben2();
          int z=3;
          int y=3;
          boolean ballDrin= true;

    /**
     * Konstruktor fuer Objekte der Klasse Hintergrund.
     */
    public Hintergrund(){    
          super(640, 480, 1); 
          addObject (neuesPaddel, 20, 240);
          addObject (neuesPaddel2, 620, 240);
          addObject(neuesLeben, 40,30);
          addObject(neuesLeben2, 80,30);
          addObject(neuesLeben3, 120,30);
          addObject(neuesLeben4, 517,30);
          addObject(neuesLeben5, 557,30);
          addObject(neuesLeben6, 597,30);
          
           
   } 
             
    /**
     * Erlaubt einen neuen Ball mit Hilfe der Leertaste ins Spiel zu bringen,
     * sobald keiner mehr auf dem Spielfeld existiert.
     */
    
    public void act() {
         
        if (getObjects(Ball.class).size()<1 && Greenfoot.isKeyDown ("space")) {
            addObject (neuerBall, 320,240);
        }
        if (getObjects(Ball.class).size()==1) {
            if (z==3) {
                if (ballDrin) {
                    herzenLoeschen1();
                    herzenLoeschen4();
                    z--; 
                }
            }
            if (z==2 && ballDrin==true) {
                herzenLoeschen2();
                herzenLoeschen5();
                z--;
            }
            if (z==1 && ballDrin==true) {
                herzenLoeschen3();
                herzenLoeschen6();
                z--;
            }
        }
        ballDrin=true;
    }
    
    
    public void herzenLoeschen1() {
            if (neuerBall.getX()<=23) {
                removeObject(neuesLeben);
                ballDrin=false;
            }
    }
    public void herzenLoeschen2() {
            if (neuerBall.getX()<=23) {
                removeObject(neuesLeben2);
                ballDrin=false;
            }
    }
    public void herzenLoeschen3() {
            if (neuerBall.getX()<=23) {
                removeObject(neuesLeben3);
                ballDrin=false;
            }
    }
        
    public void herzenLoeschen4() {
            if (neuerBall.getX()>=617) {
                removeObject(neuesLeben4);
                ballDrin=false;
            } 
    }
     public void herzenLoeschen5() {   
            if (neuerBall.getX()>=617) {
                removeObject(neuesLeben5);
                ballDrin=false;
            }
    }
    public void herzenLoeschen6() {
            if (neuerBall.getX()>=617) {
                removeObject(neuesLeben6);
                ballDrin=false;
            }
    }

}

Problem tritt glaube ich in Zeile 47/48 auf, denn sobald ich z==3 weglasse zieht er mir zwar jeweils die ersten beiden Leben der Spieler ab, aber ich benötige z ja für die weiteren Leben. Und mit z==3 passiert einfach garnichts, wenn der Ball ins aus geht. Liegt es nun am Syntax oder habe ich einfach einen Denkfehler?

Auch verwundert mich, dass Greenfoot keinen Syntaxfehler ausgibt wenn ich:
Java:
if (z==3 && ballDrin=true) {
schreibe (wie in Zeile 54 etc.), der Java-Editor sagt "unexpected type".

Ich bedanke mich bei eurer Hilfe!

PS: Habt Nachsicht mit mir, mein erstes "größeres" Projekt außerhalb der schulischen Laufbahn und deshalb wahrscheinlich auch unnötig vollgestopft.
 
Zuletzt bearbeitet von einem Moderator:

timbeau

Gesperrter Benutzer
Grade wenig Zeit daher nur eine Anmerkung
Java:
boolean klar = false;
if(klar == false) /* oder*/ (klar == true) {
//mach was
}

ist zu ersetzen durch
Java:
if(klar){
//mach was
}

Dafür gibts boolsche Variablen.
 
Zuletzt bearbeitet:

tribalup

Bekanntes Mitglied
Was passiert wenn z==0 ist?
Warum vergleichst du nicht auch mit
Java:
f (z==3 && ballDrin==true);
 
B

bone2

Gast
Was passiert wenn z==0 ist?
Warum vergleichst du nicht auch mit
Java:
f (z==3 && ballDrin==true);

aaah... wozu schreibt timbeau das eigentlich
Java:
if (z==3 && ballDrin) {

@TE: gib mal z aus, welchen wert hat das wenn ein ball drin landet? stichwort debug ausgaben, logging, debugging
 
Zuletzt bearbeitet von einem Moderator:
B

bone2

Gast
probier das mal, wenn du ncoh ne konsole hast, greenfoot sagt mir nix
Java:
        if (getObjects(Ball.class).size()==1) {
            System.out.println("act() balldrin=" + ballDrin + ", z=" + z);
            
            if (ballDrin) {
                if (z==3) {
                    herzenLoeschen1();
                    herzenLoeschen4();
                }
                else if (z==2) {
                    herzenLoeschen2();
                    herzenLoeschen5();
                }
                else if (z==1) {
                    herzenLoeschen3();
                    herzenLoeschen6();
                }
                else {
                    System.out.println("act() z out of range");
                }

                z--; 
            }
        }
        
        ballDrin=true;


@timbeau
aus
Java:
boolean klar = false;
if(klar == false || klar == true) {
//mach was
}
wird wohl
Java:
//mach was
;)
 

Phoenixz

Mitglied
aaah... wozu schreibt timbeau das eigentlich
Java:
if (z==3 && ballDrin) {

@TE: gib mal z aus, welchen wert hat das wenn ein ball drin landet? stichwort debug ausgaben, logging, debugging

Das mit ==true ist mir klar.
if(ballDrin)... ist ja das gleiche if(ballDrin==true).


Habs leicht überarbeitet, damit es übersichtlicher wird (nach bone2s Vorschlag, nur das z--; in herzenLoeschen1-6() verschoben).
Java:
public void act() {
         
        if (getObjects(Ball.class).size()<1 && Greenfoot.isKeyDown ("space")) {
            addObject (neuerBall, 320,240);
        }
        if (getObjects(Ball.class).size()==1) {
            if (ballDrin) {
                if (z==3) {
                    herzenLoeschen1();
                    herzenLoeschen4();
                }
                if (z==2) {
                    herzenLoeschen2();
                    herzenLoeschen5();
                }
                if (z==1) {
                    herzenLoeschen3();
                    herzenLoeschen6();
                } 
            }
            ballDrin=true;
            System.out.println(z);
        }
    }
    
    
    public void herzenLoeschen1() {
            if (neuerBall.getX()<=23) {
                removeObject(neuesLeben);
                ballDrin=false;
                z--;
            }
    }

Wenn ich jetzt System.out.println(z) mache, bleibt der Wert solange der Ball sich im Spiel befindet bei 3.

Also tritt meine if(z==3/2/1) Bedingung nie ein, warum?
 

Phoenixz

Mitglied
Also bei Greenfoot wird act() immer aufgerufen, sobald man auf den Start-Button drückt. act() ist glaube ich auch ein Mainloop und wird dauernd durchlaufen (vermute ich mal).
Hier ein Link zur Klassendokumentation von Greenfoot.
 
B

bone2

Gast
Leicht zu püfen, pack einen sys.out direkt nach
Code:
act(){
 

tribalup

Bekanntes Mitglied
Die einzige möglichkeit wie die Schleife nicht aufgerufen, aber trotzdem das print() durchgeführt wird, besteht darin, dass balldrin vorher false gesetzt wird
 

Phoenixz

Mitglied
Ihr versteht mich glaube ich alles falsch.

Java:
if (ballDrin) {
                if (z==3) {
                    herzenLoeschen1();
                    herzenLoeschen4();
                }

Diese Zeile wird bei mir NICHT aufgerufen, obwohl es eigentlich so vorgesehen ist. Und ich weiß einfach nicht warum, denn laut meiner Logik sollte das doch alles klappen?
Es sind doch beide Situationen gegeben (int z=3; und boolean ballDrin= true;), warum klappt dann die if-Anfrage nicht?
 

pl4gu33

Top Contributor
bau doch mal Syso's dazwischen, dann weißte, wo es nicht weiter geht oder lass dir die Werte ausgeben:

Java:
if (getObjects(Ball.class).size()==1) {
 System.out.println(ballDrin + " " +z);
            if (ballDrin) {                
                if (z==3) {                    
                    herzenLoeschen1();
                    herzenLoeschen4();
                }
                if (z==2) {
                    herzenLoeschen2();
                    herzenLoeschen5();
                }
                if (z==1) {
                    herzenLoeschen3();
                    herzenLoeschen6();
                } 
            }
            ballDrin=true;
            System.out.println(z);
        }

oder

Java:
if (getObjects(Ball.class).size()==1) {
 System.out.println("hier1");
            if (ballDrin) {
                System.out.println("hier2");
                if (z==3) {
                    System.out.println("hier3");
                    herzenLoeschen1();
                    herzenLoeschen4();
                }
                if (z==2) {
                    herzenLoeschen2();
                    herzenLoeschen5();
                }
                if (z==1) {
                    herzenLoeschen3();
                    herzenLoeschen6();
                } 
            }
            ballDrin=true;
            System.out.println(z);
        }
 
Zuletzt bearbeitet:

Phoenixz

Mitglied
Gut hab jetzt den Fehler gefunden, fragt mich aber nicht warum es nicht vorher geklappt hat.
Muss mir jetzt nochmals Gedanken über den Code machen, gibt morgen ein Update.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Syntax-Highlighting im Frontend Java Basics - Anfänger-Themen 3
J Syntax-Fehler? Java Basics - Anfänger-Themen 2
pkm Problem mit der JSP-Syntax Java Basics - Anfänger-Themen 2
M Datentypen Generische Datentypen - Syntax Java Basics - Anfänger-Themen 25
C Überprüfen eines Queltextes auf Syntax-Fehler und Laufzeitfehler Java Basics - Anfänger-Themen 2
L SQLITE - Syntax error Java Basics - Anfänger-Themen 3
W Wie vermerke ich diese Struktogramm Passage in Java Syntax? Java Basics - Anfänger-Themen 8
Aprendiendo [JAVA-Syntax] (int... variable) bei einem Konstruktor Java Basics - Anfänger-Themen 8
wilmaed OOP Syntax beim Instanziieren mit new Java Basics - Anfänger-Themen 6
D Datentypen Datentyperstellung | Kompiler sagt Syntax Error doch ich find keine Lösung Java Basics - Anfänger-Themen 2
J Syntax error on token ";",, expected Java Basics - Anfänger-Themen 2
C Erste Schritte Syntax Error Java Basics - Anfänger-Themen 23
J java syntax verständnis Java Basics - Anfänger-Themen 6
D Erste Schritte Fehlermeldung "Syntax error on token ";", { expected after this token" Java Basics - Anfänger-Themen 13
1 Bei if-Anweisung: Syntax error on token Java Basics - Anfänger-Themen 5
D Fehler in der Syntax? Java Basics - Anfänger-Themen 6
L Nachkommastellen Runden, Problem mit Syntax " }" Java Basics - Anfänger-Themen 2
X Wann schreibt man diese Syntax zeichen { } Java Basics - Anfänger-Themen 8
V MasterMind Syntax Probleme Java Basics - Anfänger-Themen 5
P AUTO_INCREMENT Syntax-Fehler Java Basics - Anfänger-Themen 2
M Syntax error on token ";", { expected after this token Java Basics - Anfänger-Themen 3
K Erste Schritte eclipse syntax error token Java Basics - Anfänger-Themen 5
B Erste Schritte HILFE Brauche ein Beispiel für korrekte Syntax mit Semantikfehlern Java Basics - Anfänger-Themen 6
S Syntax Error - source level Java Basics - Anfänger-Themen 12
B Syntax error Java Basics - Anfänger-Themen 6
K Input/Output Einsteiger Syntax Frage Java Basics - Anfänger-Themen 6
R Syntax error on token "}", delete this token Java Basics - Anfänger-Themen 2
S Syntax error on token "connect" Java Basics - Anfänger-Themen 4
K Klassen this-Referenz und Klassen/Methodenaufruf Syntax Java Basics - Anfänger-Themen 3
T Syntax für .split mit Klammern Java Basics - Anfänger-Themen 2
F Syntax- oder Semantikfehler? Java Basics - Anfänger-Themen 29
S Frage zu einem Syntax Java Basics - Anfänger-Themen 2
Luk10 Problem mit der Syntax von "+=" Java Basics - Anfänger-Themen 10
T Einen Syntax Checker programmieren Java Basics - Anfänger-Themen 3
J Datentypen Array Syntax Java Basics - Anfänger-Themen 2
S Anfängerproblem Syntax if Schleife Java Basics - Anfänger-Themen 13
Screen Problem mit der Syntax bei ActionListener Java Basics - Anfänger-Themen 3
U Dringend: Syntax error on token "else" Java Basics - Anfänger-Themen 8
E Verständnisfrage Syntax: frame.getContentPane().add(button) Java Basics - Anfänger-Themen 11
Y Anfängerfrage zu array(-Syntax) Java Basics - Anfänger-Themen 6
G Richtige Syntax für Bruch Java Basics - Anfänger-Themen 12
S Generic Methode: syntax klemmt Java Basics - Anfänger-Themen 10
C Frage zu Syntax-,Laufzeit-, Semantikfehler Java Basics - Anfänger-Themen 3
N Anfängerfrage richtige Syntax und Frage zu Vector Java Basics - Anfänger-Themen 7
O Highscore Syntax-Problem Java Basics - Anfänger-Themen 3
K Erklärung der Syntax Java Basics - Anfänger-Themen 6
G nicht bekannter Java-Syntax Java Basics - Anfänger-Themen 4
H wieso syntax error bei else ? Java Basics - Anfänger-Themen 3
T klasse objekt, syntax Java Basics - Anfänger-Themen 2
G Problem mit JTextField.setText(); Syntax Java Basics - Anfänger-Themen 3
S Syntax frage Java Basics - Anfänger-Themen 4
K java syntax: wofür steht super(screen)? Java Basics - Anfänger-Themen 5
L Syntax von subString Java Basics - Anfänger-Themen 19
B Syntax error on token ";", { expected after this t Java Basics - Anfänger-Themen 7
J Syntax Java Basics - Anfänger-Themen 14
C Verstehe die Syntax nicht! Java Basics - Anfänger-Themen 2
M Suche einen ganz einfachen Editor (syntax Highlighting+comp) Java Basics - Anfänger-Themen 7
M Komische Syntax bei Double-Buffering-Beispiel Java Basics - Anfänger-Themen 2
H Fehlermeldung bei korrekter Syntax Java Basics - Anfänger-Themen 2
G Syntax der if-Anweisung (Thema getrennt!) Java Basics - Anfänger-Themen 7
S RegEx Syntax - ich verstehe sie einfach nicht! Java Basics - Anfänger-Themen 3
H Syntax Frage. Java Basics - Anfänger-Themen 5
X Syntax bei != Java Basics - Anfänger-Themen 4
L setCharAt Syntax ? Java Basics - Anfänger-Themen 6
D page forward (?) suche syntax Java Basics - Anfänger-Themen 25
S syntax error variable declarator ID expected Java Basics - Anfänger-Themen 3
E Komische Syntax Java Basics - Anfänger-Themen 3
C Syntax Probleme mit Runtime javascript Java Basics - Anfänger-Themen 9
N Code-Editoren mit Syntax-Highlighting Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben