This site requires JavaScript, please enable it in your browser!
Greenfoot back
keysc@web.de
keysc@web.de wrote ...

2012/8/8

Short Question

keysc@web.de keysc@web.de

2012/8/8

#
I've got a short question about my own project "Pong". It is about line 42.
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;

    
    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);
          
           
   } 
             
   
    
    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 && ballDrin==true) {    // this does not work! the player not looses a life
                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;
            }
    }

}
Thanks for help.
lux lux

2012/8/8

#
Das z in deiner act Methode wird doch in jedem Durchlauf dekrementiert oder? Zumindest sind die Bedingungen immer erfüllt: erster Durchlauf: z==3 && ballDrin==true ( z = 3 => z-- => z =2) zweiter Durchlauf: z==2 && ballDrin==true (z = 2 => z-- => z=1) dritter Durchlauf: z==1 && ballDrin==true (z = 1 => z-- => z=0) Ich denke nicht das das so beabsichtig ist. Stattdessen solltest du das z in den herzenLöschen Methoden verringern ... denn dort wird doch erst überprüft ob sich der Ball in den "verbotenen Zonen" befindet. Ich hoffe ich konnte dir weiterhelfen^^ lux (the language in your code is german so i concluded that you are speaking it^^ let me know if that was wrong)
You need to login to post a reply.