diff --git a/src/main/java/net/h4ckx0r/Arkanoid.java b/src/main/java/net/h4ckx0r/Arkanoid.java index 5bb6267..abd04a3 100644 --- a/src/main/java/net/h4ckx0r/Arkanoid.java +++ b/src/main/java/net/h4ckx0r/Arkanoid.java @@ -116,7 +116,7 @@ public class Arkanoid { List actores = new ArrayList(); int anchoJugador = 55; int altoJugador = 15; - actores.add(new Jugador(anchoJugador, altoJugador, (anchoVentana - anchoJugador) / 2, altoVentana - (altoVentana / 9), ResourceCache.IMAGEN_JUGADOR)); + actores.add(new Jugador(anchoJugador, altoJugador, (anchoVentana - anchoJugador) / 2, altoVentana - (altoVentana / 9))); int diametroPelota = 20; actores.add(new Pelota(diametroPelota, (anchoVentana - diametroPelota) / 2, 400, ResourceCache.IMAGEN_PELOTA)); @@ -124,7 +124,7 @@ public class Arkanoid { for (int i = 0; i < ResourceCache.IMAGEN_LADRILLO.length; i++) { for (int j = 0; j < numLadrillosPorLinea; j++) { - actores.add(new Ladrillo(anchoLadrillos, 10, i, j, separacionBloques, altoVentana / 12, ResourceCache.IMAGEN_LADRILLO)); + actores.add(new Ladrillo(anchoLadrillos, 15, i, j, separacionBloques, altoVentana / 12, ResourceCache.IMAGEN_LADRILLO)); } } diff --git a/src/main/java/net/h4ckx0r/ResourceCache.java b/src/main/java/net/h4ckx0r/ResourceCache.java index af52b36..b399e03 100644 --- a/src/main/java/net/h4ckx0r/ResourceCache.java +++ b/src/main/java/net/h4ckx0r/ResourceCache.java @@ -8,9 +8,8 @@ import java.util.HashMap; public class ResourceCache { - public static final String IMAGEN_JUGADOR = "Player1.png"; public static final String IMAGEN_PELOTA = "Pelota.png"; - public static final String[] IMAGEN_LADRILLO = new String[] {"LadrilloRojo.png", "LadrilloNaranja.png", "LadrilloAmarillo.png", "LadrilloVerde.png", "LadrilloAzul.png", "LadrilloAzulOscuro.png" }; + public static final String[] IMAGEN_LADRILLO = new String[] {"LadrilloRojo.png", "LadrilloNaranja.png", "LadrilloAmarillo.png", "LadrilloVerde.png", "LadrilloAzul.png" }; private HashMap cacheImagenes = new HashMap<>(); diff --git a/src/main/java/net/h4ckx0r/actores/Actor.java b/src/main/java/net/h4ckx0r/actores/Actor.java index cb8ed6b..2ce3532 100644 --- a/src/main/java/net/h4ckx0r/actores/Actor.java +++ b/src/main/java/net/h4ckx0r/actores/Actor.java @@ -18,6 +18,13 @@ public abstract class Actor { this.sprite = ResourceCache.getInstance().getImage(imgName); } + public Actor(int x, int y, int ancho, int alto) { + this.x = x; + this.y = y; + this.ancho = ancho; + this.alto = alto; + } + public void paint(Graphics g) { g.drawImage(this.sprite, this.x, this.y, this.ancho, this.alto, null); } diff --git a/src/main/java/net/h4ckx0r/actores/Explosion.java b/src/main/java/net/h4ckx0r/actores/Explosion.java new file mode 100644 index 0000000..cbfc9c5 --- /dev/null +++ b/src/main/java/net/h4ckx0r/actores/Explosion.java @@ -0,0 +1,45 @@ +package net.h4ckx0r.actores; + +import net.h4ckx0r.Arkanoid; +import net.h4ckx0r.ResourceCache; + +import java.awt.image.BufferedImage; +import java.util.ArrayList; +import java.util.List; + +public class Explosion extends Actor{ + + List spritesAnimacion = new ArrayList<>(); + int velocidadCambioSprite = 5; + int tiempoSprites = 0; + + public Explosion(int x, int y, int ancho, int alto) { + super(x, y, ancho, alto); + this.spritesAnimacion.add(ResourceCache.getInstance().getImage("explosion/sprite-explosion2.png")); + this.spritesAnimacion.add(ResourceCache.getInstance().getImage("explosion/sprite-explosion1.png")); + this.spritesAnimacion.add(ResourceCache.getInstance().getImage("explosion/sprite-explosion3.png")); + this.spritesAnimacion.add(ResourceCache.getInstance().getImage("explosion/sprite-explosion4.png")); + this.spritesAnimacion.add(ResourceCache.getInstance().getImage("explosion/sprite-explosion5.png")); + this.spritesAnimacion.add(ResourceCache.getInstance().getImage("explosion/sprite-explosion6.png")); + this.spritesAnimacion.add(ResourceCache.getInstance().getImage("explosion/sprite-explosion7.png")); + this.spritesAnimacion.add(ResourceCache.getInstance().getImage("explosion/sprite-explosion8.png")); + this.spritesAnimacion.add(ResourceCache.getInstance().getImage("explosion/sprite-explosion9.png")); + this.sprite = this.spritesAnimacion.getFirst(); + } + + @Override + public void actua() { + if (!this.spritesAnimacion.isEmpty()) { + tiempoSprites++; + if (tiempoSprites % velocidadCambioSprite == 0){ + tiempoSprites = 0; + int indiceSpriteActual = spritesAnimacion.indexOf(this.sprite); + int indiceSiguienteSprite = (indiceSpriteActual + 1) % spritesAnimacion.size(); + this.sprite = spritesAnimacion.get(indiceSiguienteSprite); + } + } + if (this.sprite.equals(this.spritesAnimacion.getLast())) { + Arkanoid.getInstance().eliminaActor(this); + } + } +} diff --git a/src/main/java/net/h4ckx0r/actores/Jugador.java b/src/main/java/net/h4ckx0r/actores/Jugador.java index 42baba8..2f984f7 100644 --- a/src/main/java/net/h4ckx0r/actores/Jugador.java +++ b/src/main/java/net/h4ckx0r/actores/Jugador.java @@ -1,8 +1,12 @@ package net.h4ckx0r.actores; import net.h4ckx0r.Arkanoid; +import net.h4ckx0r.ResourceCache; import java.awt.*; +import java.awt.image.BufferedImage; +import java.util.ArrayList; +import java.util.List; public class Jugador extends Actor { @@ -11,8 +15,16 @@ public class Jugador extends Actor { private int velocidadX = 4; - public Jugador(int ancho, int alto, int initialX, int initialY, String imgName) { - super(initialX, initialY, ancho, alto, imgName); + List spritesAnimacion = new ArrayList<>(); + int velocidadCambioSprite = 5; + int tiempoSprites = 0; + + public Jugador(int ancho, int alto, int initialX, int initialY) { + super(initialX, initialY, ancho, alto); + this.spritesAnimacion.add(ResourceCache.getInstance().getImage("Player1.png")); + this.spritesAnimacion.add(ResourceCache.getInstance().getImage("Player2.png")); + this.spritesAnimacion.add(ResourceCache.getInstance().getImage("Player3.png")); + this.sprite = this.spritesAnimacion.getFirst(); } @Override @@ -24,6 +36,17 @@ public class Jugador extends Actor { if (this.x < 0) this.x = 0; if (this.x + this.ancho > Arkanoid.getInstance().getCanvas().getWidth()) this.x = Arkanoid.getInstance().getCanvas().getWidth() - this.ancho; + + + if (!this.spritesAnimacion.isEmpty()) { + tiempoSprites++; + if (tiempoSprites % velocidadCambioSprite == 0){ + tiempoSprites = 0; + int indiceSpriteActual = spritesAnimacion.indexOf(this.sprite); + int indiceSiguienteSprite = (indiceSpriteActual + 1) % spritesAnimacion.size(); + this.sprite = spritesAnimacion.get(indiceSiguienteSprite); + } + } } public void movimientoRaton(int x, int y) { diff --git a/src/main/java/net/h4ckx0r/actores/Ladrillo.java b/src/main/java/net/h4ckx0r/actores/Ladrillo.java index 89f27b9..e5435ae 100644 --- a/src/main/java/net/h4ckx0r/actores/Ladrillo.java +++ b/src/main/java/net/h4ckx0r/actores/Ladrillo.java @@ -24,6 +24,7 @@ public class Ladrillo extends Actor { public void colisionaCon(Actor a, Rectangle act1Rectangle, Rectangle act2Rectangle) { if (a instanceof Pelota) { Arkanoid.getInstance().eliminaActor(this); + Arkanoid.getInstance().incorporaActor(new Explosion(this.x, this.y, this.ancho, this.alto)); } } } diff --git a/src/main/resources/images/explosion/sprite-explosion1.png b/src/main/resources/images/explosion/sprite-explosion1.png new file mode 100644 index 0000000..fd2e5d2 Binary files /dev/null and b/src/main/resources/images/explosion/sprite-explosion1.png differ diff --git a/src/main/resources/images/explosion/sprite-explosion2.png b/src/main/resources/images/explosion/sprite-explosion2.png new file mode 100644 index 0000000..3752422 Binary files /dev/null and b/src/main/resources/images/explosion/sprite-explosion2.png differ diff --git a/src/main/resources/images/explosion/sprite-explosion3.png b/src/main/resources/images/explosion/sprite-explosion3.png new file mode 100644 index 0000000..2735495 Binary files /dev/null and b/src/main/resources/images/explosion/sprite-explosion3.png differ diff --git a/src/main/resources/images/explosion/sprite-explosion4.png b/src/main/resources/images/explosion/sprite-explosion4.png new file mode 100644 index 0000000..4d674c7 Binary files /dev/null and b/src/main/resources/images/explosion/sprite-explosion4.png differ diff --git a/src/main/resources/images/explosion/sprite-explosion5.png b/src/main/resources/images/explosion/sprite-explosion5.png new file mode 100644 index 0000000..ca4065f Binary files /dev/null and b/src/main/resources/images/explosion/sprite-explosion5.png differ diff --git a/src/main/resources/images/explosion/sprite-explosion6.png b/src/main/resources/images/explosion/sprite-explosion6.png new file mode 100644 index 0000000..2550dd3 Binary files /dev/null and b/src/main/resources/images/explosion/sprite-explosion6.png differ diff --git a/src/main/resources/images/explosion/sprite-explosion7.png b/src/main/resources/images/explosion/sprite-explosion7.png new file mode 100644 index 0000000..ae5ae60 Binary files /dev/null and b/src/main/resources/images/explosion/sprite-explosion7.png differ diff --git a/src/main/resources/images/explosion/sprite-explosion8.png b/src/main/resources/images/explosion/sprite-explosion8.png new file mode 100644 index 0000000..720b240 Binary files /dev/null and b/src/main/resources/images/explosion/sprite-explosion8.png differ diff --git a/src/main/resources/images/explosion/sprite-explosion9.png b/src/main/resources/images/explosion/sprite-explosion9.png new file mode 100644 index 0000000..f9172e3 Binary files /dev/null and b/src/main/resources/images/explosion/sprite-explosion9.png differ