Projeto do Netbeans travando durante a execução

Estou fazendo um jogo no Netbeans para a faculdade, aqui está o link para download:

http://www.mediafire.com/?m394925j2sb7hd4

Seguinte, vou falar de duas telas, a tela de inicio e a tela onde o jogo acontece. Quando eu rodo o projeto no Netbeans, aparece a primeira tela normalmente, mas quando eu passo para a próxima tela, o Netbeans trava e para de responder, fazendo eu ter que reiniciar o PC.

-Meu PC é Windows XP SP3, Athlon 64 3800+, 2.4Ghz, 2gb RAM, GeForce 6200 TurboCache.

-Testei em outros dois PCs e roda tudo normalmente, esses dois outros PCs usavam Windows 7.

-Tentei instalar outra IDE no meu PC, o Eclipse. Rodei o projeto e acontece a mesma coisa.

-Já tentei remover a JDK e baixar de novo. (JDK 7u7)

Resumindo, o código está certo e não há nenhum problema com a IDE, mas no meu PC trava durante a execução.

Estou sem ideias do que pode ser, algum driver ou algo assim?

Você esta executando o .jar ou está executando diretamente pelo NetBeans? Qual Versão do NetBeans?

Você tem outro Windows XP para fazer o teste da aplicação, de preferencia, com a mesma versão JDK instalada?

Quando trava no seu pc, dá algum erro ou somente trava?

Abraços

Diretamente pelo Netbeans. Versão 7.2. Já tentei reinstalar a IDE também, mas como eu disse, no Eclipse da o mesmo problema.

Infelizmente não. O que poderia não funcionar no XP e funcionar no 7?

Só trava, nenhum erro.

Fico pensando se tem algo a ver com o Thread que eu uso no código. Tem alguma limitação de SO ou Hardware pra isso funcionar corretamente?

Threads geralmente dá problema, mas acredito que se fosse para travar por causa da Thread, seria em qualquer SO.

Tente debuggar, embora vá travar do mesmo jeito, mas pelo menos você vai saber o momento exato que está causando o problema…

Outros projetos funcionam normal no seu pc?

Eu tinha um pc antigo que não funcionava no Eclipse… Dai desisti de usar. Um dia tive que trocar de memória e então funcionou…

Tem aplicações que travam por conflito com outro arquivo do computador, as vezes até mesmo uma dll de alguma outra coisa nada a ver…

Voce está utilizando JNI?

Tem mil e um motivos para dar defeito no computador e na maioria das vezes é de único jeito que se resolve kkkk

Vamos até descobrir amigo… :slight_smile:

Abraços

Sim, tentando debugar trava, e eu não consigo identificar onde parou. Eu nunca tentei usar a ferramenta de debugar antes, não sei muito bem como funciona, mas aparentemente não aparece nenhuma informação útil, e também não teria como tentar procurar alguma, já que a IDE fica travada e não tem como clicar em nada.

Sim.

JNI? Não sei o que é isso, então acho que não…

Se bem me lembro deu uma mensagem de algo faltando quando fui instalar a IDE, acho que era um dll mesmo, cliquei em ignorar e a instalação prosseguiu normalmente. Acho que até vou tentar reinstalar pra olhar essa mensagem melhor.

Vlw peja ajuda até agora!

EDIT:

Tentando desinstalar já deu a mesma mensagem:

Sei lá o que é isso. Não deve ter muito a ver.

Baixei aqui no meu computador amigo, funcionou normal.

Você tentou executar somente o jar, sem precisar abrir o NetBeans e o Eclipse?

Ahhh, parabéns pelo joguinho :slight_smile:

Abraços

Sim, tentei executar o .jar. No jar, aparece a primeira tela, mas apertando enter para ir para a próxima não vai. A diferença é que não parece travar, o aplicativo só não responde quando eu pressiono enter.

Projeto atualizado aqui:

http://www.mediafire.com/download.php?80g6u4xkg3pbbt4

Agora eu descobri mais ou menos o que está travando a aplicação, é na hora de criar inimigos:

[code]package nave;

… imports

public class PainelJogo extends JPanel implements Runnable {

… outros atributos

ArrayList<Inimigo> arrayInimigos = new ArrayList<Inimigo>();
private int qtdIni = 1;

… outros atributos e métodos

public void startGame() {
    jogador.definePosicaoInicial();
    jogador.setVida(5);
    jogador.setTempoInvensivel(3000);

    Random ra = new Random(System.currentTimeMillis());
    for (int i = 0 ; i < qtdIni; i++) {
        Inimigo inimigoI = new Inimigo();
        arrayInimigos.add(inimigoI);
        arrayInimigos.get(i).setX(ra.nextInt(TELA_LARGURA));
        arrayInimigos.get(i).setY(- ra.nextInt(2000));
        arrayInimigos.get(i).setVelocidadeX(0);
        arrayInimigos.get(i).setVelocidadeY(ra.nextInt(20)+5);
    }

}[/code]

Como se pode perceber, a variável qtdIni diz quantos inimigos vão ser criados, eu coloquei 1 ai, porque é isso que está travando. Com 1 inimigo, o jogo funciona, mas já é meio lento pra carregar. Colocando 2 inimigos, já passa a demorar pelo menos uns 15seg pra passar pra tela do jogo, colocando mais inimigos, a demora aumenta exponencialmente. Por isso que estava travando, porque eu estava colocando 75 inimigos.

Então eu percebi que o que está travando é na parte de instanciar objetos. Com a classe tiro ocorre a mesma coisa, toda vez que se aperta espaço, ele cria um objeto Tiro e adiciona ao array de tiros. Quando eu aperto espaço no jogo, demora uns 5 segundos pra dar o tiro, nesse meio tempo a nave fica até travada.

Quando um objeto Tiro ou Inimigo é instanciado, a única coisa que acontece é ele chamar o construtor dele, que tem um super(), passando a imagem e um this.setLargura, o problema tem que estar proai Talvez na imagem.

Fiz mais alguns testes. Tentei criar imagens png e jpg, de 10x10 e de 100x100, e fazer o construtor das classes carregarem essas imagens ao invés das imagens que estavam lá. Nada mudou, continua travando do mesmo jeito, independente do tamanho ou formato da imagem.

Também mexi no construtor da classe Sprite, fiz isso:

[code]public Sprite(String nomeDoArquivo) {
/*x = 0;
y = 0;
try {
imagem = ImageIO.read(getClass().getResource(nomeDoArquivo));

        this.altura = imagem.getHeight();
        this.largura = imagem.getWidth();

    } catch (IOException ex) {
        ex.printStackTrace();
    }*/
    System.out.println("Sprite criada.");



}[/code]

Ou seja, comentei tudo e só mandei escrever “sprite criada” na tela toda vez. O resultado disso é que agora, apesar de ainda um pouco travado, eu consigo criar 75 instancias de Inimigo sem travar por completo o meu programa. Ou seja, o problema tem que ser algo relacionado a uma dessas linhas comentadas.