ArrayList com números aleatórios

3 respostas
paulonoforum

Olá a todos,
estou desenvolvendo um jogo tipo Ikaruga - http://www.youtube.com/watch?v=LES0bAg0dBk e quero que cada inimigo tenha uma posição aleatória. A quantidade de inimigos é definida pela dificuldade que o usuário escolhe.
Entretanto, eu não sei como eu passo para cada inimigo essa posição aleatória.
Vejam:
Eu tenho meus Inimigos, a List e a quantidade que eu quero.

private List<Inimigo> inimigos;
private static int quantidade;

Os instâncio no construtor. ( O quê eu não sei se estou fazendo certo).

quantidade = 3; // A quantidade aqui foi definida por mim  para fins de não deixar algo no post muito grande.
coordenadas = new int[quantidade][2]; //Acho que é assim pelo fato de serem 3 linhas (inimigos) com 2 colunas (posições x e y na tela - horizontal e vertical)
inicializaInimigos();

Aqui eu chamo da classe Inimigo cada um deles.

public void inicializaInimigos()
{
    inimigos = new ArrayList<>();
    for(int cont = 0; cont < coordenadas.length; cont ++)
    {
        inimigos.add(new Inimigo(coordenadas[cont][0], coordenadas[cont][1])); 
    }
}

Pois bem, como eu gero na minha matriz um número aleatório em cada posição x e y dos meus inimigos?
Algo do tipo:

Random random1, random2, random3, random4, random5, random6 = new Random(); // Sei que não é assim, mas é só para deixar o post mais curto.
matriz = {{random1, random2}, {random3, random4}{random5, random6}}; // A minha matriz com cada número aleatório(supondo que já foram gerados).

Grato.

3 Respostas

romarcio

Use a classe Random para gerar os valores aleatórios para cada posição.
Mas acredito que será necessário conferir a cada numero gerado, se ele já não foi usado antes. Mas para isso basta colocar cada numero gerado em um lista e depois comparar se o novo número já não existe na lista.

Random random = new Random(); int n = random.nextInt(100); //gera um número até 100.
Dai a lógica usada para de como fazer, você precisa definir conforme o que você precisa.

paulonoforum

romarcio:
Use a classe Random para gerar os valores aleatórios para cada posição.
Mas acredito que será necessário conferir a cada numero gerado, se ele já não foi usado antes. Mas para isso basta colocar cada numero gerado em um lista e depois comparar se o novo número já não existe na lista.

Random random = new Random(); int n = random.nextInt(100); //gera um número até 100.
Dai a lógica usada para de como fazer, você precisa definir conforme o que você precisa.

Então, cara! Como eu disse, havia pensado em utilizar a classe Random().
Entretanto, eu não teria que declarar um objeto Random() para cada inimigo?
E se eu tiver em uma fase, tipo, uns 200 inimigos; vou ter que declarar todas as 400 variáveis (já que eu terei 200 posições na horizontal e 200 posições na vertical)?
Ou há uma forma mais fácil/inteligente?

romarcio

Não, basta criar um array ou uma lista onde cada posição represente um dos inimigos. Dai você criar um for que vai gerar um número para cada posição do array.

Criado 4 de outubro de 2013
Ultima resposta 5 de out. de 2013
Respostas 3
Participantes 2