created moveable player
This commit is contained in:
19
src/de/mp/jgame2d/core/Direction.java
Normal file
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;
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
|
||||
18
src/de/mp/jgame2d/entity/Entity.java
Normal file
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
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);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user