Greenfoot

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Zjištění kolize prvků ve hře: Doplněn obsah)
(Rozepsáno podrobněji pozicování)
Řádka 19: Řádka 19:
 
== Pohyb Actora ==
 
== Pohyb Actora ==
 
Máme dvě varianty ovládání prvku (actora):
 
Máme dvě varianty ovládání prvku (actora):
*turn() + move() + setRotation()
+
; Relativní pozicování
** realizuje relativní pozicování
+
* <code>turn(int oKolik)</code> ... otáčí o daný počet stupňů ve směru hodinových ručiček
***turn(int oKolik)
+
* <code>move(int delka)</code> ... pokročí vpřed o daný počet dílků ve směru, do kterého je otočen
****otáčí o daný počet stupňů ve směru hodinových ručiček
+
* <code>setRotation(int uhel)</code> ... natočí prvek do daného směru (0 je směr vpravo, po směru hodinových ručiček)
**x + y + setLocation()
+
* <code>turnTowards(int x, int y)</code> ... natočí prvek směrem k zadaným souřadnicím.
*Příklad viz dále.
+
; Absolutní pozicování
 +
* <code>setLocation(int x, int y)</code>
 +
** přesune prvek na zadané souřadnice
 +
** obvykle je třeba uložit si souřadnice.
 +
; Příklad: vytvoření metody <code>move(int dx, int dy)</code>
 +
    public void act()
 +
    {
 +
        this.move(3,-1);
 +
    }
 +
   
 +
    private void move(int dx, int dy) {
 +
        int cilX = this.getX()+dx;
 +
        int cilY = this.getY()+dy;
 +
        this.turnTowards(cilX, cilY);
 +
        this.setLocation(cilX, cilY);
 +
    }
  
 
== Reakce na klávesy ==
 
== Reakce na klávesy ==
Řádka 31: Řádka 46:
 
*Příklad viz dále.
 
*Příklad viz dále.
  
== Příklad: Pohyb podle kláves ==
+
; Příklad: Pohyb podle kláves
 
  String vstup = Greenfoot.getKey();
 
  String vstup = Greenfoot.getKey();
 
  if (vstup != null) {
 
  if (vstup != null) {

Verze z 16. 12. 2013, 08:24


Obsah

Co je to Greenfoot?

Dokumentaci tříd najdete na adrese:

Svět a volání metod act()

Nastavení pozadí hrací plochy
World.setBackground(GreenfootImage obrazek)

Vytvoření a přidání Actorů

Pohyb Actora

Máme dvě varianty ovládání prvku (actora):

Relativní pozicování
Absolutní pozicování
Příklad
vytvoření metody move(int dx, int dy)
   public void act() 
   {
       this.move(3,-1);
   }
   
   private void move(int dx, int dy) {
       int cilX = this.getX()+dx;
       int cilY = this.getY()+dy;
       this.turnTowards(cilX, cilY);
       this.setLocation(cilX, cilY);
   }

Reakce na klávesy

Příklad
Pohyb podle kláves
String vstup = Greenfoot.getKey();
if (vstup != null) {
   if (vstup.equals("right")) {
      this.setRotation(0);
   } else if (vstup.equals("left")) {
      this.setRotation(180);
   } else if (vstup.equals("up")) {
      this.setRotation(-90);
   } else if (vstup.equals("down")) {
      this.setRotation(90);
   }
   this.move(1);
}

Náhodná čísla

Standardní řešení Javy
Řešení Greenfootu

Zjištění kolize prvků ve hře

Výběr třídy
List<Actor> seznam = this.getIntersectingObjects(null); 
List<Zradlo> seznam = this.getIntersectingObjects(Zradlo.class);
Návratová hodnota
getOneIntersectingObject(class)
getOneObjectAtOffset(int dx, int dy, class)
private void vyresKolidujici() {
   List<Actor> seznam = this.getIntersectingObjects(null); 
   for (Actor prvek : seznam) {
      prvek.aplikuj(this);
   }
}
Filtr

Řešení situací

Zdi
Mizení Actorů

K mizení slouží metoda:

MouseWorld.removeObject(Actor kdoMaZmizet)

Příklad:

private void sezerVsechnyKolidujici() {
   World svet = this.getWorld();
   List<Actor> seznam = this.getIntersectingObjects(null); 
   for (Actor prvek : seznam) {
      prvek.aplikuj(this);
      svet.removeObject(prvek);
   }
Změna obrázku Actoru
Výpis stavu hry, hlášky

Úkol: Vytvořte hru!

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje