From 9e6834b3049d4ace0252ce7d5679d830a093e23e Mon Sep 17 00:00:00 2001 From: Maurice Date: Wed, 26 Nov 2025 21:34:49 +0100 Subject: [PATCH] added map tiles --- assets/tiles/earth.png | Bin 0 -> 614 bytes assets/tiles/grass.png | Bin 0 -> 616 bytes assets/tiles/sand.png | Bin 0 -> 5533 bytes assets/tiles/tree.png | Bin 0 -> 6311 bytes assets/tiles/wall.png | Bin 0 -> 6303 bytes assets/tiles/water.png | Bin 0 -> 619 bytes src/de/miaurizius/jgame2d/core/GamePanel.java | 10 ++-- src/de/miaurizius/jgame2d/tile/Tile.java | 10 ++++ .../miaurizius/jgame2d/tile/TileManager.java | 43 ++++++++++++++++++ 9 files changed, 58 insertions(+), 5 deletions(-) create mode 100644 assets/tiles/earth.png create mode 100644 assets/tiles/grass.png create mode 100644 assets/tiles/sand.png create mode 100644 assets/tiles/tree.png create mode 100644 assets/tiles/wall.png create mode 100644 assets/tiles/water.png create mode 100644 src/de/miaurizius/jgame2d/tile/Tile.java create mode 100644 src/de/miaurizius/jgame2d/tile/TileManager.java diff --git a/assets/tiles/earth.png b/assets/tiles/earth.png new file mode 100644 index 0000000000000000000000000000000000000000..9255b38a3e3598938a8caf80b93035d995d5ce69 GIT binary patch literal 614 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 literal 0 HcmV?d00001 diff --git a/assets/tiles/tree.png b/assets/tiles/tree.png new file mode 100644 index 0000000000000000000000000000000000000000..b0d91bafe3e327e127353894c7ad17730246bdb0 GIT binary patch literal 6311 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 FV1n`81O5O2 literal 0 HcmV?d00001 diff --git a/src/de/miaurizius/jgame2d/core/GamePanel.java b/src/de/miaurizius/jgame2d/core/GamePanel.java index fd972a0..dc3a506 100644 --- a/src/de/miaurizius/jgame2d/core/GamePanel.java +++ b/src/de/miaurizius/jgame2d/core/GamePanel.java @@ -1,6 +1,7 @@ package de.miaurizius.jgame2d.core; import de.miaurizius.jgame2d.entity.Player; +import de.miaurizius.jgame2d.tile.TileManager; import javax.swing.*; import java.awt.*; @@ -21,15 +22,11 @@ public class GamePanel extends JPanel implements Runnable { //FPS int FPS = 60; + TileManager tileM = new TileManager(this); KeyHandler keyH = new KeyHandler(); Thread gameThread; Player player = new Player(this, keyH); - //Default position - int playerX = 100; - int playerY = 100; - int playerSpeed = 4; - public GamePanel() { this.setPreferredSize(new Dimension(screenWidth, screenHeight)); this.setBackground(Color.black); @@ -79,6 +76,9 @@ public class GamePanel extends JPanel implements Runnable { public void paintComponent(Graphics graphics) { super.paintComponent(graphics); Graphics2D graphics2d = (Graphics2D) graphics; + + //Draw all components + tileM.draw(graphics2d); player.draw(graphics2d); graphics.dispose(); } diff --git a/src/de/miaurizius/jgame2d/tile/Tile.java b/src/de/miaurizius/jgame2d/tile/Tile.java new file mode 100644 index 0000000..937a9b7 --- /dev/null +++ b/src/de/miaurizius/jgame2d/tile/Tile.java @@ -0,0 +1,10 @@ +package de.miaurizius.jgame2d.tile; + +import java.awt.image.BufferedImage; + +public class Tile { + + public BufferedImage image; + public boolean collision = false; + +} diff --git a/src/de/miaurizius/jgame2d/tile/TileManager.java b/src/de/miaurizius/jgame2d/tile/TileManager.java new file mode 100644 index 0000000..9da4ab7 --- /dev/null +++ b/src/de/miaurizius/jgame2d/tile/TileManager.java @@ -0,0 +1,43 @@ +package de.miaurizius.jgame2d.tile; + +import de.miaurizius.jgame2d.core.GamePanel; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.io.FileInputStream; +import java.io.IOException; + +public class TileManager { + + GamePanel panel; + Tile[] tile; + + public TileManager(GamePanel panel) { + this.panel = panel; + tile = new Tile[10]; + getTileImage(); + } + + public void getTileImage() { + try { + tile[0] = new Tile(); + tile[0].image = ImageIO.read(new FileInputStream("assets/tiles/grass.png")); + + tile[1] = new Tile(); + tile[1].image = ImageIO.read(new FileInputStream("assets/tiles/wall.png")); + + tile[2] = new Tile(); + tile[2].image = ImageIO.read(new FileInputStream("assets/tiles/grass.png")); + + tile[3] = new Tile(); + tile[3].image = ImageIO.read(new FileInputStream("assets/tiles/water.png")); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public void draw(Graphics2D graphics2D) { + graphics2D.drawImage(tile[0].image, 0, 0, panel.tileSize, panel.tileSize, null); + } + +}