Invocarea unei metode a lumii în Greenfoot este esențială pentru gestionarea și manipularea întregului context al scenariului. Vom explora cum să invoci o metodă a lumii în cadrul proiectului Greenfoot. Vom lua ca exemplu o metodă simplă care modifică proprietățile lumii.

Exemplu Practic: Invocarea unei Metode a Lumii

1. Deschideți Greenfoot:

2. Accesați Bara de Instrumente:

3. Selectați Instrumentul de Adăugare Actor:

4. Alegeți un Actor pentru a Reprezenta Lumea:

5. Deschideți Fișierul Java al Lumii:

6. Adăugați o Metodă nouă în Fișierul Java al Lumii:

import greenfoot.*;

public class NumeleLumii extends World {
    public NumeleLumii() {
        super(600, 400, 1);
        setBackground("background.jpg"); // Setăm imaginea de fundal
    }

    public void schimbaCuloareaFundalului() {
        setBackground("new_background.jpg"); // Modificăm imaginea de fundal
    }
}

7. Invocați Metoda în Metoda act():

import greenfoot.*;

public class NumeleLumii extends World {
    public NumeleLumii() {
        super(600, 400, 1);
        setBackground("background.jpg");
    }

    public void schimbaCuloareaFundalului() {
        setBackground("new_background.jpg");
    }

    public void act() {
        // Alte acțiuni...
        if (Greenfoot.isKeyDown("space")) {
            schimbaCuloareaFundalului(); // Invocăm metoda când se apasă tasta "space"
        }
    }
}

8. Rulează Scenariul:

Observații:

Vom dezvolta un exemplu simplificat în care Wombat1 se va deplasa în jurul unui cerc în Greenfoot. Pentru acest exemplu, vom utiliza metoda turn() pentru a-l face să se rotească în jurul punctului central al scenei.

import greenfoot.*;

public class Wombat1 extends Actor {
    private int razaCerc = 100; // Raza cercului

    public void act() {
        deplasareInCerc();
    }

    private void deplasareInCerc() {
        // Obținem poziția actuală a wombatului
        int x = getX();
        int y = getY();

        // Calculăm noi coordonate pentru a se deplasa în jurul cercului
        double radians = Math.toRadians(getRotation()); // Convertim unghiul în radiani
        int newX = x + (int) (razaCerc * Math.cos(radians));
        int newY = y + (int) (razaCerc * Math.sin(radians));

        // Setăm noile coordonate și ajustăm unghiul pentru următoarea cadru
        setLocation(newX, newY);
        setRotation(getRotation() + 1); // Ajustăm unghiul pentru a rota în jurul cercului
    }
}

În acest exemplu: