created moveable player
BIN
assets/player/boy_down_1.png
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
BIN
assets/player/boy_down_2.png
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
BIN
assets/player/boy_left_1.png
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
BIN
assets/player/boy_left_2.png
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
BIN
assets/player/boy_right_1.png
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
BIN
assets/player/boy_right_2.png
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
BIN
assets/player/boy_up_1.png
Normal file
|
After Width: | Height: | Size: 5.7 KiB |
BIN
assets/player/boy_up_2.png
Normal file
|
After Width: | Height: | Size: 5.7 KiB |
19
src/de/mp/jgame2d/core/Direction.java
Normal file
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
package de.mp.jgame2d.core;
|
package de.mp.jgame2d.core;
|
||||||
|
|
||||||
|
import de.mp.jgame2d.entity.Player;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
|
||||||
@@ -9,7 +11,7 @@ public class GamePanel extends JPanel implements Runnable {
|
|||||||
final int originalTileSize = 16; //16x16 tile
|
final int originalTileSize = 16; //16x16 tile
|
||||||
final int scale = 3;
|
final int scale = 3;
|
||||||
|
|
||||||
final int tileSize = originalTileSize * scale; //48x48 tile
|
public final int tileSize = originalTileSize * scale; //48x48 tile
|
||||||
// 4:3 ratio
|
// 4:3 ratio
|
||||||
final int maxScreenCol = 16;
|
final int maxScreenCol = 16;
|
||||||
final int maxScreenRow = 12;
|
final int maxScreenRow = 12;
|
||||||
@@ -21,6 +23,7 @@ public class GamePanel extends JPanel implements Runnable {
|
|||||||
|
|
||||||
KeyHandler keyH = new KeyHandler();
|
KeyHandler keyH = new KeyHandler();
|
||||||
Thread gameThread;
|
Thread gameThread;
|
||||||
|
Player player = new Player(this, keyH);
|
||||||
|
|
||||||
//Default position
|
//Default position
|
||||||
int playerX = 100;
|
int playerX = 100;
|
||||||
@@ -70,23 +73,13 @@ public class GamePanel extends JPanel implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void update() {
|
public void update() {
|
||||||
//Move player
|
player.update();
|
||||||
if(keyH.upPressed) {
|
|
||||||
playerY -= playerSpeed;
|
|
||||||
} else if(keyH.downPressed) {
|
|
||||||
playerY += playerSpeed;
|
|
||||||
} else if(keyH.leftPressed) {
|
|
||||||
playerX -= playerSpeed;
|
|
||||||
} else if(keyH.rightPressed) {
|
|
||||||
playerX += playerSpeed;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void paintComponent(Graphics graphics) {
|
public void paintComponent(Graphics graphics) {
|
||||||
super.paintComponent(graphics);
|
super.paintComponent(graphics);
|
||||||
Graphics2D graphics2d = (Graphics2D) graphics;
|
Graphics2D graphics2d = (Graphics2D) graphics;
|
||||||
graphics2d.setColor(Color.white);
|
player.draw(graphics2d);
|
||||||
graphics2d.fillRect(playerX, playerY, tileSize, tileSize);
|
|
||||||
graphics.dispose();
|
graphics.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
18
src/de/mp/jgame2d/entity/Entity.java
Normal file
@@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
91
src/de/mp/jgame2d/entity/Player.java
Normal file
@@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||