Compare commits

..

2 Commits

Author SHA1 Message Date
Asecave
86bd78713a Merge branch 'master' of https://git.ngb.schule/Tim/Zoelda 2021-06-23 16:15:25 +02:00
Asecave
3c124629fa SpriteLoader now universally usable 2021-06-23 16:15:15 +02:00
3 changed files with 80 additions and 70 deletions

View File

@@ -5,10 +5,10 @@ import ea.Taste;
public class Player extends LivingEntity {
private Malin main; // Referenz auf die main Klasse. Wird später für den Keyboardinput verwendet
private static PlayerSheetLoader loader = new PlayerSheetLoader();
private static SheetLoader loader = new SheetLoader("/res/images/player_sprite_sheet.png", 64, 32, new int[] {5, 8, 7, 6, 2, 5, 4, 7});
public Player(Malin main) {
super(loader.getPlayer(0), "idle_left");
super(loader.getFigur(0), "idle_left");
this.main = main;
// Entity-Eigenschaften werden festgelegt
@@ -22,16 +22,16 @@ public class Player extends LivingEntity {
// unterschiedliche Animationsgeschwindigkeiten
// für idle
loader.getPlayer(0).animationsGeschwindigkeitSetzen(200);
loader.getFigur(0).animationsGeschwindigkeitSetzen(200);
// fürs laufen
loader.getPlayer(1).animationsGeschwindigkeitSetzen(50);
loader.getFigur(1).animationsGeschwindigkeitSetzen(50);
// Zustände werden hinzugefügt
actionFigur.neuerZustand(loader.getPlayer(0), "idle");
actionFigur.neuerZustand(loader.getPlayer(1), "walk");
actionFigur.neuerZustand(loader.getPlayer(2), "strike");
actionFigur.neuerZustand(loader.getPlayer(3), "swipe");
actionFigur.neuerZustand(loader.getPlayer(4), "die");
actionFigur.neuerZustand(loader.getFigur(0), "idle");
actionFigur.neuerZustand(loader.getFigur(1), "walk");
actionFigur.neuerZustand(loader.getFigur(2), "strike");
actionFigur.neuerZustand(loader.getFigur(3), "swipe");
actionFigur.neuerZustand(loader.getFigur(7), "die");
}
@Override
@@ -71,6 +71,9 @@ public class Player extends LivingEntity {
if (main.tasteGedrueckt(Taste.Q)) {
zustandSetzen("strike");
}
if (main.tasteGedrueckt(Taste.F)) {
zustandSetzen("die");
}
}
// auf Kollisionen prüfen

View File

@@ -1,61 +0,0 @@
package main;
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import ea.Figur;
import ea.internal.gra.PixelFeld;
public class PlayerSheetLoader {
private static Figur[] player;
public PlayerSheetLoader() {
try {
BufferedImage sheet = ImageIO.read(Tile.class.getResourceAsStream("/res/images/player_sprite_sheet.png"));
PixelFeld[][] sprites = new PixelFeld[5][];
sprites[0] = new PixelFeld[5];
sprites[1] = new PixelFeld[8];
sprites[2] = new PixelFeld[7];
sprites[3] = new PixelFeld[6];
sprites[4] = new PixelFeld[7];
loadSprites(sprites[0], 0, 64, 32, sheet);
loadSprites(sprites[1], 1, 64, 32, sheet);
loadSprites(sprites[2], 2, 64, 32, sheet);
loadSprites(sprites[3], 3, 64, 32, sheet);
loadSprites(sprites[4], 4, 64, 32, sheet);
Figur fig;
player = new Figur[5];
for (int i = 0; i < player.length; i++) {
fig = new Figur();
fig.animationSetzen(sprites[i]);
player[i] = fig;
}
} catch (IOException e) {
e.printStackTrace();
}
}
public Figur getPlayer(int y) {
return player[y];
}
private void loadSprites(PixelFeld[] sprites, int row, int w, int h, BufferedImage sheet) {
for (int s = 0; s < sprites.length; s++) {
sprites[s] = new PixelFeld(w, h, 1);
for (int x = 0; x < w; x++) {
for (int y = 0; y < h; y++) {
Color clr = new Color(sheet.getRGB((s * w + x), (row * h + y)), true);
sprites[s].farbeSetzen(x, y, clr);
}
}
}
}
}

View File

@@ -0,0 +1,68 @@
package main;
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import ea.Figur;
import ea.internal.gra.PixelFeld;
public class SheetLoader {
private static Figur[] figures;
/**
* Macht aus einem Spritesheet Figuren.
* @param path - Der pfad zum sheet
* @param width - die Breite von einem Bild
* @param height - die Höhe von einem Bild (nicht das ganze sheet)
* @param lengths - die Anzahl der Frames der verschiedenen Animationen
*/
public SheetLoader(String path, int width, int height, int[] frames) {
try {
// Bild laden
BufferedImage sheet = ImageIO.read(Tile.class.getResourceAsStream(path));
// Anzahl der Animationen
int rows = frames.length;
// Sprites anordnen *magie*
PixelFeld[][] sprites = new PixelFeld[rows][];
for (int i = 0; i < frames.length; i++) {
sprites[i] = new PixelFeld[frames[i]];
}
for (int i = 0; i < sprites.length; i++) {
loadSprites(sprites[i], i, width, height, sheet);
}
Figur fig;
figures = new Figur[rows];
for (int i = 0; i < figures.length; i++) {
fig = new Figur();
fig.animationSetzen(sprites[i]);
figures[i] = fig;
}
} catch (IOException e) {
e.printStackTrace();
}
}
public Figur getFigur(int y) {
return figures[y];
}
private void loadSprites(PixelFeld[] sprites, int row, int w, int h, BufferedImage sheet) {
for (int s = 0; s < sprites.length; s++) {
sprites[s] = new PixelFeld(w, h, 1);
for (int x = 0; x < w; x++) {
for (int y = 0; y < h; y++) {
Color clr = new Color(sheet.getRGB((s * w + x), (row * h + y)), true);
sprites[s].farbeSetzen(x, y, clr);
}
}
}
}
}