# Locaction Rockets



## Bengaltiger (28. Apr 2011)

hallo

ich kommt nicht weiter hab vieles probiert...

ich finde mein denkfehler nicht, für mich erscheint alles logisch...


```
public void Rockets(int Typ, int Number){
     Location loc= new Location((int)(Math.random()),0);}
     rocket[n] = new Rockets("sprites/rocket"+Typ+".gif");
     addActor(rocket[n], new Location(loc));
     rocket[n].show();
     if(reset==true){rocket[n].removeSelf();n=Number;return;}}
```

mit dieser methode kann man "raketen" erstellen


```
static void Levels(){
    if(newgame.isPressed()){
    return;}
    switch(level){
    case 0:
    level=1;
    case 1:
    galaxy.Rockets(1,2,1,8,5,5,1,5,3,true,500,50);
    galaxy.Rockets(2,2,2,4,5,5,2,2,1,false,0,0);
    level=2;
    break;
    case 2:
    galaxy.Rockets(3,2);
    galaxy.Rockets(4,2);
    level=3;
    break;
        }
    }
```
mit dieser methode generiere ich die rakten
die variable level ist am anfang 0 wenn sie 0 ist wird daraus ne 1
wenn die variable 1 ist generiert er die vorgegeben raketen wen der damit fertig ist
dann kommt level 2 und das gehts so weiter...

vor dem switch hab ich noch das eingebaut:

```
if(newgame.isPressed()){
    return;}
```
damit man die möglichkeit hat mitten im spiel neu zu starten

in der main methode rufe ich die methode Levels() so auf:

```
public static void main(String[] args){
     while(true){
     Levels();
                    }
                                                  }
```
das while(true) hab ich benutzt dass es nach dem Abbruch wieder ausgeführt wird, ohne das wird es ya nur einmal ausgeführt oder?


Naja zu meinem problem wenn ich jetzt miten in lvl 2 neu starte, kommt lvl 3 
obwohl ich beim neustarten die variable level auf 0 setze!!!!!!!!!!!

Kann einer biiiiiiiiiiiiiiiiiiiiiiitttttttttttttttttttttttteeeeeeeeeeeeeeeeeeeeeee helfen????????????????????????


----------



## Noctarius (28. Apr 2011)

Ich würde mal vernünftiger Einrückung anfangen. Also wenn ich schon zwei Blicke brauche um zu sehen, warum du im ersten Codefragment in der letzten Zeile zwei '}' hast, dann ist der Code massiv hässlich.


----------



## bengaltiger (28. Apr 2011)

sry ich habe den
code verkürzt deshalb..


----------



## Sonecc (28. Apr 2011)

ich sehe nirgends dass die variable level auf 0 gesetzt wird


----------



## bengaltiger (28. Apr 2011)

hab ich in der hauptklasse definiert...


----------



## Sonecc (28. Apr 2011)

ohne relevanten code, kann ich nicht helfen


----------



## Bengaltiger (28. Apr 2011)

ich hoffe der code ist besser hab überflüssiges entfernt...


```
//test.java

import ch.aplu.jgamegrid.*;
import java.awt.event.KeyEvent;
import java.awt.*;
import java.util.ArrayList;

class test extends GameGrid implements GGButtonListener{

 static test galaxy = new test();

 Player player = new Player();
 ArrayList<Actor> rockets = getActors(Rockets.class);

 int x=getWidth();
 int y=getHeight();
 static int level;
 static int score;
 static int life;
 static int n;
 static boolean reset=false;

 static GGButton newgame = new GGButton("sprites/newgame.png",true);

 public test(){
   super(625, 725,1,null,"",false);
     String bar;
     bar= String.format("RocketGun created by Imran");
     setTitle(bar);
     setSimulationPeriod(15);
                }

 public void Actor(){
     addActor(player, new Location(300,550));
     player.show();
                      }

 public void Rockets(int Typ, int Number){
     Location loc= new Location((int)(500*Math.random()+50),50);
     Rockets[] rocket = new Rockets[Number];
     rocket[n] = new Rockets("sprites/rocket"+Typ+".gif");
     addActor(rocket[n], new Location(loc));
     rocket[n].show();
     if(reset==true){rocket[n].removeSelf();n=Number;return;}}

 public static void main(String[] args){
     galaxy.show();
     galaxy.Actor();
     galaxy.doRun();
     while(true){Levels();}
 }


  public void pausemenu(){
      addActor(newgame, new Location(312, 350));
      newgame.addButtonListener(this);
      newgame.show();
 }

 public void buttonClicked(GGButton button){

   if(button==newgame){
        reset();
        doRun();}
  }

  public void buttonPressed(GGButton button){}

  public void buttonReleased(GGButton button){}
//<---End Menu--->\\

//<---Begin Levels--->\\
static void Levels(){
    if(newgame.isPressed()){
    return;}
    switch(level){
    case 0:
    level=1;
    case 1:
    galaxy.Rockets(1,2);
    galaxy.Rockets(2,2);
    delay(5000);
    level=2;
    break;
    case 2:
    galaxy.Rockets(3,2);
    galaxy.Rockets(4,2);
    level=3;
    break;
        }
    }
//<---End Levels--->\\

//<---Begin class Player--->\\
class Player extends Actor{
 public Player(){
  super("sprites/player_0.png");}
  private void shoot(){
      Bomb bomb1 = new Bomb();
      gameGrid.addActor(bomb1,new Location(getX(),getY()-45));
      bomb1.show();}
        @Override
 public void act(){
   if (gameGrid.isKeyPressed(KeyEvent.VK_LEFT) && getX() > 36){
       setX(getX() - 4);}
   if (gameGrid.isKeyPressed(KeyEvent.VK_RIGHT) && getX() < x-36){
       setX(getX() + 4);}
   if (gameGrid.isKeyPressed(KeyEvent.VK_UP) && getY() > 62){
       setY(getY() - 4);}
   if (gameGrid.isKeyPressed(KeyEvent.VK_DOWN) &&  getY() < y-36){
       setY(getY() + 4);}
   if (gameGrid.isKeyPressed(KeyEvent.VK_SPACE)){
       shoot();}
   if (isKeyPressed(KeyEvent.VK_PAUSE)){
       doPause();
       pausemenu();}
                   }
                        }
//<---End class Player--->\\

//<---Begin class Rockets--->\\
class Rockets extends Actor{
 public Rockets(String imagePath){
  super(imagePath);
   setVertMirror(true);}
        @Override
 public void act(){
   Location loc=new Location(getX(),getY()+2);
   setLocation(loc);
   if(!isInGrid()){
      removeSelf();}
                  }
                            }
//<---End class Rockets--->\\

//<---Begin Remove--->\\
public void remove(){
    doPause();
    removeActors(Player.class);
    removeActors(Rockets.class);
    removeActors(Bomb.class);
    removeActors(RocketsBomb.class);
    getBg().clear();
                   }
//<---End Remove--->\\

//<---Begin Reset--->\\
    public void reset(){
    doPause();
    remove();
    reset=true;
    level=0;
    n=0;
                   }
//<---End Reset--->\\
}
```

ich hoffe ihr könnt helfen...


----------



## Final_Striker (28. Apr 2011)

> if(button==newgame){



Mit == vergleicht man primitive Datentypen (int, float...). Zum Vergleich von Objekten nutzt man die Methode [c]equals[/c]


----------



## Bengaltiger (28. Apr 2011)

danke für den hinweis 
jetzt lässt sich leichter klicken =)


----------



## bengaltiger (28. Apr 2011)

warum ist das thema als erledigt makiert? Das problem besteht weiterhin..


----------



## Samuel72 (29. Apr 2011)

Bengaltiger hat gesagt.:


> ```
> public static void main(String[] args){
> while(true){
> Levels();
> ...


Also ohne mir das jetzt genauer angeschaut zu haben:
So wie du das gemacht hast, müsste die Methode Levels() ununterbrochen immer wieder aufgerufen werden.
(Und bitte Naming-Conventions beachten! Methoden schreibt man klein.)


----------



## Sonecc (29. Apr 2011)

Mich wundert in dem Zusammenhang, dass die Gui nicht einfriert.


----------



## bengaltiger (29. Apr 2011)

ok wenns unterbrochen aufgerufen wird warum beginnt der net von vorn?


----------



## Final_Striker (29. Apr 2011)

Hast du mal überprüft ob die Methode reset() überhaupt aufgerufen wird?


----------



## bengaltiger (30. Apr 2011)

ja der wird aufgerufen


----------



## Bengaltiger (30. Apr 2011)

so habs geschafft das er bei lvevel 1 anfängt doch es werden keine raketen mehr erstellt???


----------



## Bengaltiger (30. Apr 2011)

sry startet bei lvl 0 
keine ahnung warum es nicht mehr auf 1 gesetzt wird
wird die schleife nicht mehr ausgeführt??


----------



## Bengaltiger (1. Mai 2011)

anscheinend kann keiner helfen..


----------

