diff --git a/assets/player/boy_down_1.png b/assets/player/boy_down_1.png new file mode 100644 index 0000000..4807748 Binary files /dev/null and b/assets/player/boy_down_1.png differ diff --git a/assets/player/boy_down_2.png b/assets/player/boy_down_2.png new file mode 100644 index 0000000..0ff298c Binary files /dev/null and b/assets/player/boy_down_2.png differ diff --git a/assets/player/boy_left_1.png b/assets/player/boy_left_1.png new file mode 100644 index 0000000..85d10ad Binary files /dev/null and b/assets/player/boy_left_1.png differ diff --git a/assets/player/boy_left_2.png b/assets/player/boy_left_2.png new file mode 100644 index 0000000..92f39a8 Binary files /dev/null and b/assets/player/boy_left_2.png differ diff --git a/assets/player/boy_right_1.png b/assets/player/boy_right_1.png new file mode 100644 index 0000000..247ecea Binary files /dev/null and b/assets/player/boy_right_1.png differ diff --git a/assets/player/boy_right_2.png b/assets/player/boy_right_2.png new file mode 100644 index 0000000..4628500 Binary files /dev/null and b/assets/player/boy_right_2.png differ diff --git a/assets/player/boy_up_1.png b/assets/player/boy_up_1.png new file mode 100644 index 0000000..eb81fe2 Binary files /dev/null and b/assets/player/boy_up_1.png differ diff --git a/assets/player/boy_up_2.png b/assets/player/boy_up_2.png new file mode 100644 index 0000000..8bc797a Binary files /dev/null and b/assets/player/boy_up_2.png differ diff --git a/src/de/mp/jgame2d/core/Direction.java b/src/de/mp/jgame2d/core/Direction.java new file mode 100644 index 0000000..0f9b7b0 --- /dev/null +++ b/src/de/mp/jgame2d/core/Direction.java @@ -0,0 +1,19 @@ +package de.mp.jgame2d.core; + +public enum Direction { + + UP("up"), + DOWN("down"), + LEFT("left"), + RIGHT("right"); + + private final String name; + + Direction(String name) { + this.name = name; + } + + public String getName() { + return name; + } +} diff --git a/src/de/mp/jgame2d/core/GamePanel.java b/src/de/mp/jgame2d/core/GamePanel.java index 293a3f6..781f752 100644 --- a/src/de/mp/jgame2d/core/GamePanel.java +++ b/src/de/mp/jgame2d/core/GamePanel.java @@ -1,5 +1,7 @@ package de.mp.jgame2d.core; +import de.mp.jgame2d.entity.Player; + import javax.swing.*; import java.awt.*; @@ -9,7 +11,7 @@ public class GamePanel extends JPanel implements Runnable { final int originalTileSize = 16; //16x16 tile final int scale = 3; - final int tileSize = originalTileSize * scale; //48x48 tile + public final int tileSize = originalTileSize * scale; //48x48 tile // 4:3 ratio final int maxScreenCol = 16; final int maxScreenRow = 12; @@ -21,6 +23,7 @@ public class GamePanel extends JPanel implements Runnable { KeyHandler keyH = new KeyHandler(); Thread gameThread; + Player player = new Player(this, keyH); //Default position int playerX = 100; @@ -70,23 +73,13 @@ public class GamePanel extends JPanel implements Runnable { } public void update() { - //Move player - if(keyH.upPressed) { - playerY -= playerSpeed; - } else if(keyH.downPressed) { - playerY += playerSpeed; - } else if(keyH.leftPressed) { - playerX -= playerSpeed; - } else if(keyH.rightPressed) { - playerX += playerSpeed; - } + player.update(); } public void paintComponent(Graphics graphics) { super.paintComponent(graphics); Graphics2D graphics2d = (Graphics2D) graphics; - graphics2d.setColor(Color.white); - graphics2d.fillRect(playerX, playerY, tileSize, tileSize); + player.draw(graphics2d); graphics.dispose(); } diff --git a/src/de/mp/jgame2d/entity/Entity.java b/src/de/mp/jgame2d/entity/Entity.java new file mode 100644 index 0000000..4604bed --- /dev/null +++ b/src/de/mp/jgame2d/entity/Entity.java @@ -0,0 +1,18 @@ +package de.mp.jgame2d.entity; + +import de.mp.jgame2d.core.Direction; + +import java.awt.image.BufferedImage; + +public class Entity { + + public int x, y; + public int speed; + + public BufferedImage up1, up2, down1, down2, left1, left2, right1, right2; + public Direction direction; + + public int spriteCounter = 0; + public int spriteNum = 1; + +} diff --git a/src/de/mp/jgame2d/entity/Player.java b/src/de/mp/jgame2d/entity/Player.java new file mode 100644 index 0000000..921b672 --- /dev/null +++ b/src/de/mp/jgame2d/entity/Player.java @@ -0,0 +1,91 @@ +package de.mp.jgame2d.entity; + +import de.mp.jgame2d.core.Direction; +import de.mp.jgame2d.core.GamePanel; +import de.mp.jgame2d.core.KeyHandler; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.*; + +public class Player extends Entity { + + GamePanel panel; + KeyHandler keyH; + + public Player(GamePanel panel, KeyHandler keyH) { + this.panel = panel; + this.keyH = keyH; + setDefaultValues(); + getPlayerImage(); + } + + public void setDefaultValues() { + x = 100; + y = 100; + speed = 4; + direction = Direction.DOWN; + } + + public void getPlayerImage() { + try { + up1 = ImageIO.read(new FileInputStream("assets/player/boy_up_1.png")); + up2 = ImageIO.read(new FileInputStream("assets/player/boy_up_2.png")); + down1 = ImageIO.read(new FileInputStream("assets/player/boy_down_1.png")); + down2 = ImageIO.read(new FileInputStream("assets/player/boy_down_2.png")); + left1 = ImageIO.read(new FileInputStream("assets/player/boy_left_1.png")); + left2 = ImageIO.read(new FileInputStream("assets/player/boy_left_2.png")); + right1 = ImageIO.read(new FileInputStream("assets/player/boy_right_1.png")); + right2 = ImageIO.read(new FileInputStream("assets/player/boy_right_2.png")); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public void update() { + //Move player + if(keyH.upPressed || keyH.downPressed || keyH.leftPressed || keyH.rightPressed) { + if(keyH.upPressed) { + direction = Direction.UP; + y -= speed; + } else if(keyH.downPressed) { + direction = Direction.DOWN; + y += speed; + } else if(keyH.leftPressed) { + direction = Direction.LEFT; + x -= speed; + } else if(keyH.rightPressed) { + direction = Direction.RIGHT; + x += speed; + } + + spriteCounter++; + if(spriteCounter > 12) { + if(spriteNum == 1) spriteNum = 2; + else if(spriteNum == 2) spriteNum = 1; + else spriteNum = 0; + } + } + } + + public void draw(Graphics2D graphics2d) { + BufferedImage image = null; + switch (direction) { + case UP: + image = (spriteNum == 1) ? up1 : up2; + break; + case DOWN: + image = (spriteNum == 1) ? down1 : down2; + break; + case LEFT: + image = (spriteNum == 1) ? left1 : left2; + break; + case RIGHT: + image = (spriteNum == 1) ? right1 : right2; + break; + } + graphics2d.drawImage(image, x, y, panel.tileSize, panel.tileSize, null); + } + +}