From 09969807f3da2132ec22aabc524ad34891686a9f Mon Sep 17 00:00:00 2001 From: Maurice Date: Wed, 26 Nov 2025 23:16:15 +0100 Subject: [PATCH] added a few (yet not working) objects --- assets/maps/testworld.map | 2 +- .../miaurizius/jgame2d/core/AssetSetter.java | 45 +++++++++++++++++++ src/de/miaurizius/jgame2d/core/Boot.java | 1 + src/de/miaurizius/jgame2d/core/GamePanel.java | 8 +++- .../miaurizius/jgame2d/object/ChestObj.java | 18 ++++++++ src/de/miaurizius/jgame2d/object/DoorObj.java | 18 ++++++++ src/de/miaurizius/jgame2d/object/KeyObj.java | 1 - .../jgame2d/object/SuperObject.java | 14 ++++++ .../miaurizius/jgame2d/tile/TileManager.java | 2 + 9 files changed, 106 insertions(+), 3 deletions(-) create mode 100644 src/de/miaurizius/jgame2d/core/AssetSetter.java create mode 100644 src/de/miaurizius/jgame2d/object/ChestObj.java create mode 100644 src/de/miaurizius/jgame2d/object/DoorObj.java diff --git a/assets/maps/testworld.map b/assets/maps/testworld.map index 61fcfb0..ffe537e 100644 --- a/assets/maps/testworld.map +++ b/assets/maps/testworld.map @@ -5,7 +5,7 @@ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 2 2 2 2 2 2 2 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 2 2 2 2 2 2 2 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 1 1 1 1 1 4 4 4 4 4 4 4 4 2 2 2 2 2 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 1 3 3 3 1 4 4 4 4 4 4 4 0 0 0 5 0 0 0 4 4 4 4 4 4 0 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 +4 4 4 4 4 4 4 4 1 3 3 3 1 4 4 4 4 4 4 4 0 0 0 0 0 0 0 4 4 4 4 4 4 0 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 1 3 3 3 1 4 4 4 4 4 4 4 4 0 0 0 0 0 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 1 3 3 3 1 4 4 4 4 4 4 4 4 4 0 0 0 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 1 3 3 3 1 4 4 4 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 diff --git a/src/de/miaurizius/jgame2d/core/AssetSetter.java b/src/de/miaurizius/jgame2d/core/AssetSetter.java new file mode 100644 index 0000000..0a501ee --- /dev/null +++ b/src/de/miaurizius/jgame2d/core/AssetSetter.java @@ -0,0 +1,45 @@ +package de.miaurizius.jgame2d.core; + +import de.miaurizius.jgame2d.object.ChestObj; +import de.miaurizius.jgame2d.object.DoorObj; +import de.miaurizius.jgame2d.object.KeyObj; + +public class AssetSetter { + + GamePanel panel; + + public AssetSetter(GamePanel panel) { + this.panel = panel; + } + + public void setObject() { + panel.obj[0] = new KeyObj(); + panel.obj[0].worldX = 23 * panel.tileSize; + panel.obj[0].worldY = 7 * panel.tileSize; + + panel.obj[1] = new KeyObj(); + panel.obj[1].worldX = 23 * panel.tileSize; + panel.obj[1].worldY = 40 * panel.tileSize; + + panel.obj[2] = new KeyObj(); + panel.obj[2].worldX = 37 * panel.tileSize; + panel.obj[2].worldY = 7 * panel.tileSize; + + panel.obj[3] = new DoorObj(); + panel.obj[3].worldX = 10 * panel.tileSize; + panel.obj[3].worldY = 9 * panel.tileSize; + + panel.obj[4] = new DoorObj(); + panel.obj[4].worldX = 8 * panel.tileSize; + panel.obj[4].worldY = 28 * panel.tileSize; + + panel.obj[5] = new DoorObj(); + panel.obj[5].worldX = 12 * panel.tileSize; + panel.obj[5].worldY = 22 * panel.tileSize; + + panel.obj[6] = new ChestObj(); + panel.obj[6].worldX = 10 * panel.tileSize; + panel.obj[6].worldY = 7 * panel.tileSize; + } + +} diff --git a/src/de/miaurizius/jgame2d/core/Boot.java b/src/de/miaurizius/jgame2d/core/Boot.java index ab3445b..017de1c 100644 --- a/src/de/miaurizius/jgame2d/core/Boot.java +++ b/src/de/miaurizius/jgame2d/core/Boot.java @@ -18,6 +18,7 @@ public class Boot { window.setLocationRelativeTo(null); window.setVisible(true); + gamePanel.setupGame(); gamePanel.startGameThread(); } diff --git a/src/de/miaurizius/jgame2d/core/GamePanel.java b/src/de/miaurizius/jgame2d/core/GamePanel.java index 51a2e40..484df15 100644 --- a/src/de/miaurizius/jgame2d/core/GamePanel.java +++ b/src/de/miaurizius/jgame2d/core/GamePanel.java @@ -33,6 +33,7 @@ public class GamePanel extends JPanel implements Runnable { KeyHandler keyH = new KeyHandler(); Thread gameThread; public CollisionHandler collisionH = new CollisionHandler(this); + public AssetSetter assetSetter = new AssetSetter(this);; public Player player = new Player(this, keyH); public SuperObject[] obj = new SuperObject[10]; @@ -44,6 +45,10 @@ public class GamePanel extends JPanel implements Runnable { this.setFocusable(true); } + public void setupGame() { + assetSetter.setObject(); + } + public void startGameThread() { gameThread = new Thread(this); gameThread.start(); @@ -71,7 +76,7 @@ public class GamePanel extends JPanel implements Runnable { drawCount++; } if(timer >= 1000000000) { - //System.out.println("FPS: " + drawCount); + System.out.println("FPS: " + drawCount); drawCount = 0; timer = 0; } @@ -88,6 +93,7 @@ public class GamePanel extends JPanel implements Runnable { //Draw all components tileM.draw(graphics2d); + for (SuperObject superObject : obj) if (superObject != null) superObject.draw(graphics2d, this); player.draw(graphics2d); graphics.dispose(); } diff --git a/src/de/miaurizius/jgame2d/object/ChestObj.java b/src/de/miaurizius/jgame2d/object/ChestObj.java new file mode 100644 index 0000000..f39ff73 --- /dev/null +++ b/src/de/miaurizius/jgame2d/object/ChestObj.java @@ -0,0 +1,18 @@ +package de.miaurizius.jgame2d.object; + +import javax.imageio.ImageIO; +import java.io.FileInputStream; +import java.io.IOException; + +public class ChestObj extends SuperObject { + + public ChestObj() { + name = "chest"; + try { + image = ImageIO.read(new FileInputStream("assets/objects/chest.png")); + } catch(IOException e) { + e.printStackTrace(); + } + } + +} diff --git a/src/de/miaurizius/jgame2d/object/DoorObj.java b/src/de/miaurizius/jgame2d/object/DoorObj.java new file mode 100644 index 0000000..37f10ca --- /dev/null +++ b/src/de/miaurizius/jgame2d/object/DoorObj.java @@ -0,0 +1,18 @@ +package de.miaurizius.jgame2d.object; + +import javax.imageio.ImageIO; +import java.io.FileInputStream; +import java.io.IOException; + +public class DoorObj extends SuperObject { + + public DoorObj() { + name = "door"; + try { + image = ImageIO.read(new FileInputStream("assets/objects/door.png")); + } catch(IOException e) { + e.printStackTrace(); + } + } + +} diff --git a/src/de/miaurizius/jgame2d/object/KeyObj.java b/src/de/miaurizius/jgame2d/object/KeyObj.java index d2fbc4b..2add2a9 100644 --- a/src/de/miaurizius/jgame2d/object/KeyObj.java +++ b/src/de/miaurizius/jgame2d/object/KeyObj.java @@ -3,7 +3,6 @@ package de.miaurizius.jgame2d.object; import javax.imageio.ImageIO; import java.io.FileInputStream; import java.io.IOException; -import java.security.Key; public class KeyObj extends SuperObject { diff --git a/src/de/miaurizius/jgame2d/object/SuperObject.java b/src/de/miaurizius/jgame2d/object/SuperObject.java index 3de0882..b2e543f 100644 --- a/src/de/miaurizius/jgame2d/object/SuperObject.java +++ b/src/de/miaurizius/jgame2d/object/SuperObject.java @@ -1,5 +1,8 @@ package de.miaurizius.jgame2d.object; +import de.miaurizius.jgame2d.core.GamePanel; + +import java.awt.*; import java.awt.image.BufferedImage; public class SuperObject { @@ -9,4 +12,15 @@ public class SuperObject { public boolean collision = false; public int worldX, worldY; + public void draw(Graphics2D graphics2D, GamePanel panel) { + int screenX = worldX - panel.player.worldX + panel.player.screenX; + int screenY = worldY - panel.player.worldY + panel.player.screenY; + + if(worldX + panel.tileSize > panel.player.worldX - panel.player.screenX && + worldX - panel.tileSize < panel.player.worldX + panel.player.screenX && + worldY + panel.tileSize > panel.player.worldY - panel.player.screenY && + worldY - panel.tileSize < panel.player.worldY + panel.player.screenY + ) graphics2D.drawImage(image, screenX, screenY, panel.tileSize, panel.tileSize, null); + } + } diff --git a/src/de/miaurizius/jgame2d/tile/TileManager.java b/src/de/miaurizius/jgame2d/tile/TileManager.java index 55345ab..c532ba6 100644 --- a/src/de/miaurizius/jgame2d/tile/TileManager.java +++ b/src/de/miaurizius/jgame2d/tile/TileManager.java @@ -78,6 +78,7 @@ public class TileManager { while(worldCol < panel.maxWorldCol && worldRow < panel.maxWorldRow) { int tileNum = mapTileNum[worldCol][worldRow]; + int worldX = worldCol * panel.tileSize; int worldY = worldRow * panel.tileSize; int screenX = worldX - panel.player.worldX + panel.player.screenX; @@ -90,6 +91,7 @@ public class TileManager { ) graphics2D.drawImage(tile[tileNum].image, screenX, screenY, panel.tileSize, panel.tileSize, null); worldCol++; + if(worldCol == panel.maxWorldCol) { worldCol = 0; worldRow++;