Boa noite
Comecei a fazer um jogo (spider solitaire) em J2ME. Para tanto, criei um método que gera uma sequencia de números inteiros aleatórios sem repetição (geraSeqAleatoria()). Dentro do método run eu tenho o método inicializaJogo que chama o método geraSeqAleatoria(). Estou usando o NetBeans. O problema é que a lista de aleatórios não é passada de um método para o outro. Se eu faço no eclipse (J2SE) dá certo. Não aparece nenhum erro, simplesmente não é impressa na tela. Tenho a impressão de ser algum problema relacionado à capacidade de memória (me corrijam se eu estiver falando besteira). Já fiz diversas tentativas e nem sei onde atacar.
Se alguém puder testar pra mim, eu envio a imagem do sprite por e-mail (esthercamilo@gmail.com)
Vou postar o código juntamente com toda a configuração que utilizei:
Netbeans 6.7 - J2ME - CLDC 1.1 MIDP - 2.0
ClasseMeuCanvas.java
[code]import java.io.IOException;
import java.util.Random;
import javax.microedition.lcdui.game.;
import javax.microedition.lcdui.;
public class ClasseMeuCanvas extends GameCanvas implements Runnable {
Thread meuThread;
Graphics meuGrafico = this.getGraphics();
Image baralho;
Sprite[] carta = new Sprite[56];
LayerManager meuLayerManager;
public ClasseMeuCanvas() {
super(false);
meuThread = new Thread(this);
meuThread.start();
}
public void determinaCartas() {
try {
baralho = Image.createImage("/images/baralho.png");
int[] sprite = new int[55];
for (int i = 0; i <= 54; i++) {
sprite[i] = i;
} for (int j = 0; j <= 5; j++) {
for (int i = 0; i <= 9; i++) {
carta[j * 10 + i] = new Sprite(baralho, 15, 20);
carta[j * 10 + i].setFrameSequence(sprite);
carta[j * 10 + i].setFrame(j * 10 + i);
if (j * 10 + i > 52) {
break;
}
}
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
public int[] geraSeqAleatoria(int tamanho) {
Random random = new Random();
int i = 0;
int aux = 0;
int[] seqAleatoria = new int[tamanho]; //array vazia {0,0,0,.....}
while (i <= tamanho) {
boolean repete = false;
aux = random.nextInt(tamanho); //gera um número aleatório, por ex. 3
for (int j = 0; j <= tamanho - 1; j++) { //percorre a seqAleatorio pra ver se tem o 3
if (aux == seqAleatoria[j]) {
repete = true;
break; // se encontra sai do laço
} else {
continue; //se não encontra percorre a array até o final e repete é false
}
}
if (repete == false) {
seqAleatoria[i] = aux;
System.out.println(seqAleatoria[i]);
i++;
}
}
System.out.println(seqAleatoria);
return seqAleatoria;
}
public void inicializaJogo() {
meuLayerManager = new LayerManager();
meuLayerManager.append(carta[1]);
carta[1].setPosition(10, 10);
geraSeqAleatoria(10);
}
public void run() {
determinaCartas();
inicializaJogo();
boolean fimDeJogo = false;
while (fimDeJogo == false) {
try {
meuLayerManager.paint(meuGrafico, 0, 0);
meuThread.sleep(50);
} catch (InterruptedException ex) {
ex.printStackTrace();
} finally {
flushGraphics();
}
}
}
}
[/code]
Midlet.java
[code]/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
import javax.microedition.lcdui.Display;
import javax.microedition.midlet.*;
/**
-
@author Professor
*/
public class Midlet extends MIDlet {Display meuDisplay = Display.getDisplay(this);
ClasseMeuCanvas meuCanvas = new ClasseMeuCanvas();public void startApp() {
meuDisplay.setCurrent(meuCanvas);
}public void pauseApp() {
}public void destroyApp(boolean unconditional) {
}
}
[/code]