Saludos:
de antemano gracias si alguien me puede colaborar con mi problema, el cual es el siguiente:
estoy haciendo un juego snake como el de los celulares, en java, pero tiene ciertas variaciones una de ellas es que el movimiento de la culebra no es angular sino como elipses, me explico al presionar por ejemplo izquierda en el teclado, la culebra no cambiara su direccion de vertical a horizontal si no que rotara un poco hacia la izquierda digamos unos 45 grados, entonces se que podria aplicar el metodo rotate(double, double, double), y ya se como hacer para que no se me recorte la imagen la cual por cierto es un .gif pero por la forma en que he hecho el juego, no puedo obtener la imagen en la clase usuario1 que es la culebra que maneja el ususario 1, ya que tengo una clase SpriteCache que se encarga de otorgar imagenes a kien se las pida, asi que si alguien me pudiese ayudar con esto se lo agradeceria muchisimo, se que es algo confuso pedir ayuda sobre un codigo sin que la persona conozca el codigo asi que voy a pegar el codigo pertinente a la clase usuario1 y pues si alguien tiene alguna idea le podria enviar todo lo que he hecho.
de nuevo muchisimas gracias y aqui va el codigo
import java.awt.event.KeyEvent;
import java.awt.Rectangle;
import java.awt.Graphics2D;
public class Usuario1 extends Actor{
public static final int USUARIO1_SPEED = 4;
protected int vX;
protected int vY;
private boolean up, down, left, right;
private int score;
private Usuario1 usuario1;
private double rad;
public Usuario1(Stage stage){
super(stage);
setSpriteNames ( new String[] {"Culebra1.gif"});
score = 0;
//setFrameSpeed(35);
}
public void act(){
super.act();
x+=vX;
y+=vY;
if (x < 0)
x = 0;
if (x > Stage.Width - getWidth())
x = Stage.Width - getWidth();
if (y < 0)
y = 0;
if (y > Stage.Play_Height - getHeight())
y = Stage.Play_Height - getHeight();
}
public int getVx(){return vX;}
public void setVx(int i){vX = i;}
public int getVy() {return vY;}
public void setVy(int i){vY = i;}
protected void updateSpeed(){
vX=0;
vY=0;
if (down) vY = USUARIO1_SPEED;
if (up) vY = -USUARIO1_SPEED;
if (left) vX = -USUARIO1_SPEED;
if (right) vX = USUARIO1_SPEED;
}
public void keyReleased(KeyEvent e){
switch (e.getKeyCode()){
case KeyEvent.VK_DOWN : down = false; break;
case KeyEvent.VK_UP : up = false; break;
case KeyEvent.VK_LEFT : left = false; break;
case KeyEvent.VK_RIGHT : right = false; break;
}
updateSpeed();
}
public void keyPressed(KeyEvent e){
switch (e.getKeyCode()){
case KeyEvent.VK_UP : up = true; break;
//rotar(g);
case KeyEvent.VK_LEFT : left = true; break;
case KeyEvent.VK_RIGHT : right = true; break;
case KeyEvent.VK_DOWN : down = true; break;
}
updateSpeed();
}
public int getScore(){return score;}
public void setScore(int i){score = i;}
public void addScore(int i) { score += i; }
public void collision(Actor a){
if (a instanceof Usuario2){
a.remove();
stage.gameOver();
stage.getSoundCache().playSound("Colision.wav");
System.out.println("Colision con culebra1 + colision.wav");
//if (a instanceof bonoRaton || a instanceof bonoCraneo){
// a.crecer(a);
}
}
public void rotar(Graphics2D g){
}
}
por cierto sobra decir que soy novato en java