Rodar algo apenas uma vez dentro do Graphics

1 resposta
programaçãojava
Guilherme_Prado

Pessoal estou com um problema no Graphics , eu quero adicionar ao meu banco o nome,e pontuação do jogador assim que o jogo acaba , o problema é que está dentro do graphics e ele fica adicionando varias vezes ao banco , teria como fazer ele executar isso apenas uma vez?

segue como esta o meu metodo graphics

public void paint(Graphics g) {  
    Graphics2D graficos2D = (Graphics2D) g;  
    graficos2D.drawImage(background, 0, 0, null);  

if (emJogo) {  

    graficos2D.drawImage(personagem.getImagem(), personagem.getX(), personagem.getY(), this); 
    

    List<Disparo> misseis = personagem.getMisseis();  

    for (int i = 0; i < misseis.size(); i++) {
        Disparo m = (Disparo) misseis.get(i);
        graficos2D.drawImage(m.getImagem(), m.getX(), m.getY(), this);  
    }
    for (int i = 0; i < vovozinha.size(); i++) {
        Vovozinha inn = vovozinha.get(i);
        graficos2D.drawImage(inn.getImagem(), inn.getX(), inn.getY(), this);  
    }
    for (int i = 0; i < inimigos.size(); i++) {
        Inimigo in = inimigos.get(i);
        graficos2D.drawImage(in.getImagem(), in.getX(), in.getY(), this); 
    }

    graficos2D.setColor(Color.WHITE);  

    graficos2D.drawString("INIMIGOS: " + (inimigos.size()), 5, 15);
    graficos2D.drawString("PONTUACAO: " + pontuacao, 5, 30); 
} else {

    ImageIcon fimJogo = new ImageIcon(getClass().getResource("gm.png"));  // TELA DE FIM DE JOGO PRECISANDO SER ARRUMADA URGENTEMENTE
    graficos2D.drawImage(fimJogo.getImage(), 0, 0, null);
    
    //System.out.println("P: " + Pontuacao.getInstance().getPontuacao() + " N: " + Pontuacao.getInstance().getNome());

    Pontuacao.getInstance().setPontuacao(pontuacao);
    insertDao = new insertDAO();     

    insertDao.insertPontuacao();  //AQUI ESTOU PASSANDO PARA O BANCO, O NOME É PASSADO POR OUTRA CLASSE 


   
}
g.dispose();

}

O TANTO DE DADOS QUE É CRIADO NO BANCO

1 Resposta

juliofsn

O método paint é chamado automaticamente pela JVM, e deve conter apenas a lógica para desenho na tela. Se você está fazendo um jogo, o correto é ter um loop em outro método ( de preferência numa thread) com as regras de jogo.

Criado 26 de outubro de 2016
Ultima resposta 27 de out. de 2016
Respostas 1
Participantes 2