Greenfoot

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Řešení situací: Přidáno mizení actorů)
(Zjištění kolize prvků ve hře: Doplněn obsah)
Řádka 55: Řádka 55:
  
 
== Zjištění kolize prvků ve hře ==
 
== Zjištění kolize prvků ve hře ==
* pole
+
 
 +
* Ke zjištění kolizí slouží metody ve třídě <tt>Actor</tt>, které se jmenují <code>get...Object...</code>.
 +
* Metod je hodně, ale chovají se podobně.
 +
 
 +
; Výběr třídy
 +
* Pokud zadáte parametr typu <tt>class</tt>, bere v potaz pouze objekty zadaného typu. Pokud zadáme <code>null</code>, berou se v potaz všechny objekty.
 +
* Všechny objekty:
 +
List<Actor> seznam = this.getIntersectingObjects(null);
 +
* Jen objekty zvoleného typu:
 +
List<Zradlo> seznam = this.getIntersectingObjects(Zradlo.class);
 +
 
 +
; Návratová hodnota
 +
* Vrací buď první kolidující objekt nebo <code>null</code> když nekoliduje:
 +
getOneIntersectingObject(class)
 +
getOneObjectAtOffset(int dx, int dy, class)
 +
* ... nebo seznam všech vyhovujících objektů.
 +
private void vyresKolidujici() {
 +
    List<Actor> seznam = this.getIntersectingObjects(null);
 +
    for (Actor prvek : seznam) {
 +
      prvek.aplikuj(this);
 +
    }
 +
}
 +
 
 +
; Filtr
 +
* intersecting objects ... objekty, které se prolínají se stávajícím (došlo ke kolizi)
 +
* objects at offset ... objekty, které jsou v dané vzdálenosti (dx, dy) od stávajícího objektu
  
 
== Řešení situací ==
 
== Řešení situací ==

Verze z 16. 12. 2013, 08:12


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):

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