ok versuch ma den code den du vorher hattest aus der if / else anweisung rauszunehmen und dahinter zu setzen.
Aber der code den ich dir geschrieben hab muss im else teil bleiben
Very nice game but there is one bug I think: Sometimes when the ball hits a wall it just goes along the wall and dosen't get away there. I think you could do this with a loop in your method which tells the ball to turn when he hits the wall, because the problem probably is that the ball hits the wall again and again and again.
if you use:
while (getY() < 10) { //or another number. I don't know the real number from your game.
move(1); //or if this doesn't work use setLocation(getX(), getY()+1);
}
And maybe you could include a better artificial intelligence
This one only follows the ball. And if I hit the ball with a steep angle it doesn't get the ball most time.
But all in all a very nice game.
ok also an der stelle in dem Code von deinem Ball wo er auf den Schläger trifft schreibst du einfach das rein.
//den folgenden Teil fügst du Global ein also ganz oben unter der klassendeklaration.
private Schlaeger schlaeger;
//das hier kommt an den Anfang der act methode.
public void act() {
if (schlaeger == null) {
if (getWorld().getObjects(Schlaeger.class).size() != 0) {
schlaeger = (Schlaeger) getWorld().getObjects(Schlaeger.class).get(0);
}
}
else {
//hier fügst du den gesamten Code ein den du bereits in der Klasse Ball hast. Das würde sonst zu Exceptions führen.
...
//hier kommt nun der wichtige Teil den du in deinem Code ersetzen musst
if (canSee(Schlaeger.class)) {
ychange= -ychange;
int dif = getX()-schlaeger.getX();
if (dif < (int) (schlaeger.getImage().getWidth()/3)) {
if (ychange > 2) {
ychange--;
}
}
else if (dif > (int) ((schlaeger.getImage().getWidth()/3)*2)) {
if (ychange < 4) {
ychange++;
}
}
}
...
}
}
den code an der stelle "schlaeger.getImage().getWidth()" kannst du auch durch die breite des Bildes von deinem Schlaeger ersetzen aber so sollte es auf funktionieren.
Noch ein Tip: wenn du die Startwerte der variablen xchange und ychange vergrößerst wird der ball schnelle. könnte das spiel etwas anspruchsvoller gestalten. Aber du solltest dann auch diese passage in dem Schläger verändern:
if (Greenfoot.isKeyDown("left")) {
setLocation(getX()-3, getY());
}
if (Greenfoot.isKeyDown("ritght")) {
setLocation(getX()+3, getY());
}
Du solltest die werte bei setLocation getX()+... erhöhen damit dein schläger schneller wird. wie schnell musst du dann mal ausprobieren.
Und eins noch:
hör bitte auf mich zu Sie-zen ok.
2012/9/23
Gravity Engine
2012/9/23
Gravity Engine
2012/9/19
Breakout 1
2012/9/19
Breakout 1
2012/9/17
Breakout
2012/9/16
Breakout
2012/9/16
House Goes Boom
2012/9/16
Ping-Pong
2012/9/15
Breakout