pequena/grande dúvida em java... [URGENTE]

Jv.Batista

I fold therefore I AM
boas tardes,

é assim, tenho um programita em que umas imagens caem de cima da janela e nós temos de lhe clicar para fazer pontos... até aqui tudo bem... o problema é que posso escolher entre bolas, quadrados ou aleatório(aqui é que reside a minha dúvida...

tenho um método para a criação da bola, outro para a criação do quadrado e outro para o aleatório...

só que o aleatório, apenas faz a escolha 1 vez, ficando o resto do jogo sempre com a mesma imagem em vez de esta ir alterando a cada novo aparecimento...

ajudem-me....
 
Última edição:
eu tenho isto

Código:
   private GOval circle;
   public void CircleCreation()
   {
      if (this.circle != null)
      {
         this.remove(circle);
      }
      this.circle = new GOval(this.RandomGen(50, this.getWidth() - 51
               - this.userValue), yPosition, this.userValue, this.userValue);
      this.circle.setFilled(true);
      this.circle.setFillColor(Color.orange);
      this.circle.setColor(Color.blue);
      this.add(circle);
      while (this.lifes > 0 && this.numb != 0)
      {
         this.circle.move(this.dx, this.dy);
         this.pause(5);
         if (circle.getY() > this.getHeight())
         {
            this.NumObj();
            this.incrementMiss();
            this.lifes = this.lifes - 1;
            this.lifesLeft.setLabel(this.lifes + "");
            this.CircleCreation();
         }
      }
      this.dialogwindows();
   }
   
   private GRect square;
   public void SquareCreation()
   {
      if (this.square != null)
      {
         this.remove(square);
      }

      this.square = new GRect(this.RandomGen(50, 700 - this.userValue),
               yPosition, this.userValue, this.userValue);
      this.square.setFilled(true);
      this.square.setFillColor(Color.green);
      this.square.setColor(Color.red);
      this.add(square);
      while (this.lifes > 0 && this.numb != 0)
      {
         square.move(this.dx, this.dy);
         this.pause(5);
         if (square.getY() > this.getHeight())
         {
            this.incrementMiss();
            this.lifes = this.lifes - 1;
            this.lifesLeft.setLabel(this.lifes + "");
            this.SquareCreation();
         }
      }
      this.dialogwindows();
   }
   
   private int random;
   public void RandomFigure()
   {
      this.random = this.RandomGen(0, 5);
      if (random == 0 || random == 2 || random == 4)
      {
         this.CircleCreation();
      }
      else
      {
         this.SquareCreation();
      }
   }

como disse, ele faz o primeiro, mas depois faz tudo igual, random n faz mais nenhum....
 
Presumo que estejas a usar o RandomGenerator do acm. Em principio o problema não é este mas podias confirmar se estás mesmo a gerar números aleatórios diferentes de cada vez que chamas o método?
 
Presumo que estejas a usar o RandomGenerator do acm. Em principio o problema não é este mas podias confirmar se estás mesmo a gerar números aleatórios diferentes de cada vez que chamas o método?

sim e sim... já n sei que fazer...

se reparares, cada imagem cria um ciclo que só para quando ou ficas sem vidas, ou ficas sem objectos... talvez o problema seja esse....
 
Boas, coloca esse RandomGenerator como variável de instância da tua classe. Em seguida, no método RandomGen, apenas invocas o método nextInt da variável. Algo do género:

Código:
public class X 
{
    private RandomGenerator rGen = RandomGenerator.getInstance();
 
    /* ... código ... */
    private int RandomGen(int x, int y)
    {
        return rGen.nextInt(x, y);
    }
}

Espero que ajude.
 
Back
Topo