Greenfoot '.class' expected. showText

MaSoBa

Acabo de empezar DAW y estamos trabajando con Greenfoot. Estoy trasteando aquí por mi cuenta y me he encontrado un problema.

Quiero mostrar en pantalla las vidas y puntuación de un juego. Ya tengo todo menos cómo mostrarlo. El caso es que al utilizar un showText me da el error .class expected y no sé como solucionarlo. El problema está en el showText del principio.

public class Rana extends Actor
{
    private int vidas;
    private int puntuación;
    public Rana(){
        vidas = 5;
        puntuación = 0;
    }

/**
 * Act - do whatever the Rana wants to do. This method is called whenever
 * the 'Act' or 'Run' button gets pressed in the environment.
 */
public void act() 
{
    getWorld().showText(int vidas, 300, 300);
    
    if (Greenfoot.isKeyDown("up")){
        arriba();}

    if (Greenfoot.isKeyDown("down")){
        abajo();}
    if (Greenfoot.isKeyDown("right")){
        derecha();}

    if (Greenfoot.isKeyDown("left")){
        izquierda();}

    Actor coche = getOneIntersectingObject(Coche.class);
    Actor ambulancia = getOneIntersectingObject(Ambulancia.class);
    if (coche != null || ambulancia != null) {
        //Perdemos una vida
        vidas = vidas -1;
        //Si NO nos quedas más vidas
        if(vidas == 0) {
            //Eliminamos la rana
            getWorld().removeObject(this);
            //Paramos el juego
            Greenfoot.stop();
        } else {
            setLocation(getWorld().getWidth()/2, getWorld().getHeight()-30);

        }
    }
}

public void arriba()
{
    setLocation(getX(), getY()-5);
    
    if(getY() == 10) {
        puntuación = puntuación + 1;
        setLocation(getWorld().getWidth()/2, getWorld().getHeight()-30);
    }
}

public void abajo()
{
    setLocation(getX(), getY()+5);
}

public void izquierda()
{
    setLocation(getX()-5, getY());
}

public void derecha()
{
    setLocation(getX()+5, getY());
}
}
NoRelaX

Qué recuerdos me trae Greenfoot de 1º de DAM -

Creo que tienes que poner this.getWorld()

1 respuesta
MaSoBa

#2 Nada. El error me lo marca aquí

smintcs

a ese metodo hay que pasarle: string, int, int

prueba a poner showText("paco", 300, 300);

si eso funciona es que le estas diciendo que imprima un int y no un string y tienes que convertir dicho int a String

1 respuesta
MaSoBa

#4 El paco si funciona, ya lo había probado. Entonces como convierto el int a String? Esto es nuevo para mi. Ya siento si son preguntas de 1º de programación.

smintcs

Digamos que en java todo son Objetos menos los tipos primitivos, int, char, long. Luego hay unas clases envoltorio que son Integer, Long, Character...

La solución más fácil sin entrar en grandes líos es:

showText(Integer.toString(vidas), 300, 300);

tambien puedes poner antes de esa linea:
Integer objetoVidas = Integer(vidas);
showText(objetoVidas, 300, 300);

2 1 respuesta
MaSoBa

#6 Muchas gracias sobre todo por la explicación. Ya sé un poco más. Ha funcionado perfectamente.

MaSoBa

Tengo una nueva duda! Resulta que quiero llamar a un método que he creado en una clase World desde una clase actor. He creado el método que quiero en World, pero a la hora de ir a la clase y querer ejecutarlo desde allí, no puedo.

getWorld().miMetodo();

Y no reconoce miMetodo... ¿Alguna explicación?

Usuarios habituales

  • MaSoBa
  • smintcs
  • NoRelaX