K (Konstruktoren)
(Weitere Zustände hinzufügen)
Zeile 35: Zeile 35:
  
 
=== Weitere Zustände hinzufügen ===
 
=== Weitere Zustände hinzufügen ===
...
+
 
 +
[[Datei:Hase Kampf.gif|mini|kämpfender Hase]]
 +
Eine <code>FIGUR</code> kann nicht nur einen Zustand und damit nicht nur eine Bildfolge enthalten. Moderne Spielfiguren verfügen über '''situationsbedingte Bildfolgen'''. Hierbei wird '''intern in einen anderen Zustand der Figur umgeschaltet''' und entsprechend eine andere Bildfolge animiert. So kann unser Hase z.B. entweder stehen oder boxen oder kicken. Dabei kann die Animationsgeschwindigkeit für jeden Zustand individuell und unabhängig von den anderen Zuständen eingestellt werden.
 +
Zustände kann man im Code namentlich aktivieren, z.B. innerhalb von Fallunterscheidungen oder allgemein nach gewissen Ereignissen. Geeignete Methoden sind hierfür <code>tick()</code> (zeitgesteuert, wiederkehrend prüfen) oder <code>tasteReagieren(int code)</code> (auf eine Tastatur-Ereignis hin) oder <code>bildAktualisierungReagieren()</code> (bei jedem neu generierten Einzelbild der Bühne).
 +
Man kann auch automatisch nach einem Zustand in einen anderen Übergehen.
 +
 
 +
Dafür bietet die Klasse <code>FIGUR</code> folgende Methoden an:
 +
 
 +
* <source lang="java">fuegeZustandVonEinzelbildHinzu(String neuerZustand , String... Dateipfade)</source>
 +
* <source lang="java">fuegeZustandVonGifHinzu(String neuerZustand , String Dateiname)</source>
 +
* <source lang="java">fuegeZustandVonPraefixHinzu(String neuerZustand , String Verzeichnis, String praefix)</source>
 +
* <source lang="java">fuegeZustandVonSpritesheetHinzu(String neuerZustand , String Bildpfad, int anz_Bilder_X, int anz_Bilder_Y)</source>
 +
* <source lang="java">setzeAnimationsGeschwindigkeit(String Zustand , double sekunden_pro_Bild)</source>
 +
* <source lang="java">setzeAutomatischenUebergang(String zustandVon, String zustandNach)</source>
 +
* <source lang="java">setzeZustand(String Zustand)</source>
 +
* <source lang="java">nenneZustand() : String</source>
  
 
=== Übergänge von Zuständen ===
 
=== Übergänge von Zuständen ===

Version vom 19. Dezember 2020, 15:49 Uhr


Dies ist ein Tutorial für die Edu-Variante der Engine Alpha 4.x. Eine Übersicht aller Edu-Tutorials siehst du hier.

Inhalt

In diesem Tutorial:

  • erstellst du Figuren aus Einzelbildern, animierten Grafiken, Bildfolgen in Ordnern oder Spritesheets
  • weist du einer Figur situationsbedingt andere Bildfolgen / Animationen zu

Klasse FIGUR

Einer FIGUR können mehrere Bilder, Bildfolgen, Spritesheets oder animierte GIFs zugeordnet werden. Deshalb wird jedem Bild, Bilderfolge, Spritesheet oder animiertem GIF in der Regel zusätzlich ein Zustand zugewiesen werden. Dieser Zustand ist ein beliebiger Name, den man der Bildfolge entsprechend aussagekräftig benennen sollte. Der Zustandsname dient später dazu, zwischen diesen Zuständen (situationsbedingt) hin und her zu wechseln.

Konstruktoren

Es gibt 4 Konstruktoren der Klasse FIGUR:

Einzel Bild
  • Konstruktor für normale Bilder (PNG, JPG, GIF)    
    FIGUR(String Bilddatei)
    
    hase_bild = new FIGUR( "Hase.png" );
    

       Die Bilddatei muss mit Endung angegeben werden und im BlueJ-Projekt-Ordner liegen!
       Dieser einfache Konstruktor verzichtet auf Übergabe eines Zustandsnamens und vergibt intern den Namen "standard"

GIF aninmiert
  • Konstruktor für animierte GIFs    
    FIGUR(String Zustandsname, String Bilddatei)
    
    hase_anim_gif = new FIGUR( "boxen" , "Hase_boxen_anim.gif" );
    

       Die Bilddatei muss mit Endung angegeben werden und im BlueJ-Projekt-Ordner liegen!

Spritesheet 4x1
  • Konstruktor für Spritesheets    
    FIGUR(String Zustandsname, String Bilddatei, int anz_Bilder_X, int anz_Bilder_Y)
    
    hase_spritesheet = new FIGUR( "stehen" , "hase_stehen_spritesheet_4_1.png" , 4 , 1 );
    

       Die Bilddatei muss mit Endung angegeben werden und im BlueJ-Projekt-Ordner liegen!
       Spritesheets sind Bildfolgen in rechteckiger Anordnung: anz_Bilder_X in der Breite, anz_Bilder_Y inder Höhe.

Ordner mit Bildern
  • Konstruktor für Bildfolgen in einem separaten Ordner    
    FIGUR(String Zustandsname, String Ordnername, String Dateipräfix)
    
    hase_einzelbilder = new FIGUR( "kicken" , "Bilder" , "Hase_kick" );
    

       Der Ordner mit den Einzelbildern muss im BlueJ-Projekt-Ordner liegen!
       Von den Bildern muss nur der gemeinsame Namens-Anteil (Präfix) angegeben werden. So können nummerierte Bilder "in einem Rutsch" geladen werden.

Weitere Zustände hinzufügen

kämpfender Hase

Eine FIGUR kann nicht nur einen Zustand und damit nicht nur eine Bildfolge enthalten. Moderne Spielfiguren verfügen über situationsbedingte Bildfolgen. Hierbei wird intern in einen anderen Zustand der Figur umgeschaltet und entsprechend eine andere Bildfolge animiert. So kann unser Hase z.B. entweder stehen oder boxen oder kicken. Dabei kann die Animationsgeschwindigkeit für jeden Zustand individuell und unabhängig von den anderen Zuständen eingestellt werden. Zustände kann man im Code namentlich aktivieren, z.B. innerhalb von Fallunterscheidungen oder allgemein nach gewissen Ereignissen. Geeignete Methoden sind hierfür tick() (zeitgesteuert, wiederkehrend prüfen) oder tasteReagieren(int code) (auf eine Tastatur-Ereignis hin) oder bildAktualisierungReagieren() (bei jedem neu generierten Einzelbild der Bühne). Man kann auch automatisch nach einem Zustand in einen anderen Übergehen.

Dafür bietet die Klasse FIGUR folgende Methoden an:

  • fuegeZustandVonEinzelbildHinzu(String neuerZustand , String... Dateipfade)
    
  • fuegeZustandVonGifHinzu(String neuerZustand , String Dateiname)
    
  • fuegeZustandVonPraefixHinzu(String neuerZustand , String Verzeichnis, String praefix)
    
  • fuegeZustandVonSpritesheetHinzu(String neuerZustand , String Bildpfad, int anz_Bilder_X, int anz_Bilder_Y)
    
  • setzeAnimationsGeschwindigkeit(String Zustand , double sekunden_pro_Bild)
    
  • setzeAutomatischenUebergang(String zustandVon, String zustandNach)
    
  • setzeZustand(String Zustand)
    
  • nenneZustand() : String
    

Übergänge von Zuständen

...



Das Tutorial ist beendet. Das nächste ist Die Superklasse EduActor . Wenn du Feedback für uns hast, melde dich gerne.