1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

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

Discussão em 'Programação' iniciada por Jv.Batista, 15 de Novembro de 2008. (Respostas: 7; Visualizações: 626)

  1. Jv.Batista

    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: 15 de Novembro de 2008
  2. IComeFromBehind

    IComeFromBehind Power Member

    Geras de cada vez que invocas o método geras um número aleatório.
     
  3. Jv.Batista

    Jv.Batista I fold therefore I AM

    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....
     
  4. IComeFromBehind

    IComeFromBehind Power Member

    Podias mostrar o código do RandomGen?
     
  5. Jv.Batista

    Jv.Batista I fold therefore I AM

    Código:
       private int RandomGen(int x, int y)
       {
          int random;
          RandomGenerator rgen = RandomGenerator.getInstance();
          random = rgen.nextInt(x, y);
          return random;
       }
    
     
  6. IComeFromBehind

    IComeFromBehind Power Member

    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?
     
  7. Jv.Batista

    Jv.Batista I fold therefore I AM

    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....
     
  8. AliFromCairo

    AliFromCairo Power Member

    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.
     

Partilhar esta Página