Dúvidas sobre 2D e Popcore

E aí galera blz?
Bom, vou encher o saco de vocês um pouco com uma dúvida minha.

Estou brincando com desenvolvimento de jogos e tive a idéia de fazer um jogo RPG mais ou menos estilo Diablo(camera, texturas, personagens, etc), porém nada mto complexo.
A minha dúvida é com relação a movimentação de personagens, pois eu não consigo fazer meu personagem se movimentar nas direções X e/ou Y quando eu clico com o mouse. Acontece o seguinte: ele anda no eixo X porém quando eu clico no eixo Y ele não vai. No começo eu estava fazendo esse jogo apenas com a API Java, agora estou tentando utilizar o framework Popcore, mas não consigo criar esse movimento X, Y. Gostaria de apenas uma dica, não precisam fazer o jogo pra mim. E outra coisa, um jogo como Diablo possui 8 direções em que os personagens se movimentam, como eu poderia fazer meu personagem andar não só nos eixos X,Y mas também na diagonal? Utilizando a classe Point?
E também eu não consigo fazer algo para o personagem andar enquanto o botão do mouse estiver clicado, e sim a cada clique.

Essa movimentação q eu disse q consigo é mais ou menos assim:
Agradeço a todos. Abraço!


...
//posição do objeto
int x_pos = 30;
//velocidade do objeto
int x_speed = 1;

public boolean mouseDown(Event e, int x, int y)
{
     while(x != x_pos)
     {
          x_pos += x_speed;
      }
}

...

Na sua classe de eventos (Se voce usa o MouseListener)

Voce pode colocar no evento do mousePressed

public void mousePressed(MouseEvent evnt){
int x = evnt.getX();
int y = evnt.getY();

boolean xEqual = x_pos == x;
boolean yEqual = y_pos == y;
boolean xGreater = x_pos < x;
boolean yGreater = y_pos < y;
boolean half = xGreater && yGreater;
double speed = speed * half ? 0.5 : 1;

x_pos += xEqual ? speed : xGreater ? speed : -speed;
y_pos += yEqual ? speed : yGreater ? speed : -speed;
}

Apesar… que aconselho mudar esse modo de fazer a movimentação estudar matematica vetorial e aplicar no jogo… o ViniGodoy fez o framework JGF(Java Game Framework) que tem umas classes que podem te ajudar nisso.

Com Vetores voce só precisaria pegar o vetor girar na direção do clique e somar a velocidade ao vetor.

Valeu cara!!!Eu ainda não testei o seu jeito pq eu não estou conseguindo chamar uma classe que usa MouseListener() usando o applet. Eu faço isso no método init()?Como?

Ahh… não sabia que era Applet…

Não sei como funciona o sistema de listeners dele.