Não sei o que fazer - Nao consigo reiniciar jPanel

Gente,ja nao sei mais o que fazer… Segui o tutorial, depurei tudo isso , mas simplesmente nao consigo.
Desculpa tantos posts, mas é que realmente agora empaquei… na vdd essa dúvida é a junção das outras duas atrás…

Pior que não achei ninguem com essa dúvida… Isso de java2D é meio estranho… Enfim, estou upando o código, junto com a snake.jpg.

Nao sei se alguem vai conseguir me ajudar, mas pelo menos fica aqui postado , caso tenha alguem com a mesma dúvida…Talvez Ajude.

Ah ta, então, quando eu mudo a Snake de lugar e chamo o Método Running(), ela fica bugada, e as vezes apaga as outras snakes e as vezes nao, e fica criando uma em cima da outra.
Nao sei o que fazer. Ja estou copiando o Graphics, ja tentei dar dispose, repaint, etc.

NAO FUNCIONA.

[code]package Controllers;

import Objetos.Snake;
import View.MainView;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;

/**
*

  • @author André
    */
    public class GameUpdate {

    private MainView mainView;
    private Snake snake;
    private int gamePanelWidth,gamePanelHeight;

    public GameUpdate(MainView mv)
    {
    mainView = mv;

     snake = new Snake(10,10);
     
     gamePanelWidth = mainView.jPanel_GamePanel.getWidth();
     gamePanelHeight = mainView.jPanel_GamePanel.getHeight();
    

    }

    public void Running()
    {
    //Pegar o Graphics do JPAnel GAME :
    Graphics2D jPanelGraphics = (Graphics2D) mainView.jPanel_GamePanel.getGraphics();

     // Criar um Auxliar desse Graphic
     Graphics jPanelAuxGraphic = jPanelGraphics.create();
     
     //Carrega a imagem da Snake
     BufferedImage snakeImage = snake.getSnakeImage();
     
     //Cria imagem Auxiliar
     Image drawingImage =  mainView.jPanel_GamePanel.createImage(gamePanelWidth, gamePanelHeight);
     
    
     //Pega o Graphics da Imagem auxiliar para colocar no jPanel
     Graphics2D graphicsImage = (Graphics2D) drawingImage.getGraphics();
     
     
     //Desenha a snake na imagem Auxiliar
     graphicsImage.drawImage(snakeImage,0,0,null);
     
     
     //Desenha a Imagem Auxiliar no jPanel_GamePanel
     jPanelAuxGraphic.drawImage(drawingImage,snake.getPositionX(),snake.getPositionY(),null);
    
     //jPanelAuxGraphic.dispose();
     //graphicsImage.dispose();
    

    }

    public void moveSnakeLeft()
    {
    snake.setPositionX(snake.getPositionX() - 10);

    }

    public void moveSnakeRight()
    {
    snake.setPositionX(snake.getPositionX() + 10);
    }

    public void moveSnakeUp()
    {
    snake.setPositionY(snake.getPositionY()+ 10);
    }

    public void moveSnakeDown()
    {
    snake.setPositionY(snake.getPositionY()- 10);
    }

}
[/code]


1 detalhe mude isso:

[code]public void moveSnakeUp()
{
snake.setPositionY(snake.getPositionY()+ 10);
}

public void moveSnakeDown()
{
    snake.setPositionY(snake.getPositionY()- 10);
}[/code]

pra subir é -10 pra descer é +10

nas variaveis da classe GameUpdate criei essa variavel:

no Construtor fiz:

mudei seu método Running e criei um método delete.

[code]public void Running(){

    Tela.drawImage(snake.getSnakeImage(),snake.getPositionX(),snake.getPositionY(),null);

}

public void DeleteSnake(){

    Tela.clearRect(snake.getPositionX(), snake.getPositionY(), snake.getSnakeImage().getWidth(), snake.getSnakeImage().getHeight()); 
    
}[/code]

chamo DeleteSnake antes de mudar a posição:

ex:

[code]public void moveSnakeLeft()
{
DeleteSnake();
snake.setPositionX(snake.getPositionX() - 10);

}[/code]

mas da pra estruturar melhor isso ai…

[quote=douglaskd]nas variaveis da classe GameUpdate criei essa variavel:

no Construtor fiz:

mudei seu método Running e criei um método delete.

[code]public void Running(){

    Tela.drawImage(snake.getSnakeImage(),snake.getPositionX(),snake.getPositionY(),null);

}

public void DeleteSnake(){

    Tela.clearRect(snake.getPositionX(), snake.getPositionY(), snake.getSnakeImage().getWidth(), snake.getSnakeImage().getHeight()); 
    
}[/code]

chamo DeleteSnake antes de mudar a posição:

ex:

[code]public void moveSnakeLeft()
{
DeleteSnake();
snake.setPositionX(snake.getPositionX() - 10);

}[/code]

mas da pra estruturar melhor isso ai…[/quote]

DOUGLAS!!! Funcionou!!!
Deixa eu te perguntar… Vc saberia dizer pq estava dando errado ? Era porque eu nao estava dando clearRect ? Pq se eu crio uma nova Image… Ela nao deveria ter apagado tudo e criado do começo ?
Mais uma coisa, posso dar um create nesse objeto Tela?

MUiTO OBRIGADO!!!

tem muita técnica que da pra você aplicar ai…

na verdade não sei nem te dizer se a maneira que eu fiz é a melhor maneira…

pega o código do JMario e o código do TowerDefence aqui no guj mesmo.

tem uns lances de GameLoop, sprites, o doublebufferering que ainda não funciona ai no seu.

Valeu Douglas.

Aquilo que eu estava fazendo, nao era ja double buffering ?

O gameloop vou colocar depois… Por enquanto só quero conseguir pintar na tela sem nenhum problema.
Não tem jeito de resetar o jPanel ?