From e15e1fc5a818fec26bf0ca5c4ede26d3a8f6e744 Mon Sep 17 00:00:00 2001 From: dvorakmortonxd Date: Thu, 22 Oct 2026 01:49:30 +0200 Subject: [PATCH 01/19] Finally added a simple player movement system (no animated sprites yet tho) --- .gitignore | 4 ++ README.md | 6 +-- src/main/java/dev/dvorakmortonxd/Game.java | 16 ++++++-- src/main/java/dev/dvorakmortonxd/input.java | 33 ++++++++++++++++ .../java/dev/dvorakmortonxd/loadAssets.java | 2 + src/main/java/dev/dvorakmortonxd/update.java | 38 ++++++++++++++++++- 6 files changed, 91 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 1f80551..0f3ae8c 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,10 @@ out/ !**/src/main/**/out/ !**/src/test/**/out/ +# Java +build/ +staging/ + ### Eclipse ### .apt_generated .classpath diff --git a/README.md b/README.md index 4487f86..739de3f 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ # My own SpaceSim written in Java pretty self-explanatory idk what else to write... -## docs i'd like to keep close +## docs I'd like to keep close Swing tutorial (Oracle): https://docs.oracle.com/javase/tutorial/uiswing/ JFrame, JPanel, key listeners, timers, etc. Java 2D graphics tutorial: https://docs.oracle.com/javase/tutorial/2d/ drawing shapes, images, and Graphics2D. ## credits for assets Ive used font from [OpenFont Library](https://openfont.org/) (the one called Caveat Brush) -all other assets are made by me, images are made in Krita. -while not a direct copy I took heavy inspiration for the plyer sprites from this guy: https://tnypixels.itch.io/top-down-rpg-character-sprite-walk-idle-animation \ No newline at end of file +while not a direct copy I took heavy inspiration for the plyer sprites from this guy: https://tnypixels.itch.io/top-down-rpg-character-sprite-walk-idle-animation +all other assets are made by me, images/sprites are made in Krita. \ No newline at end of file diff --git a/src/main/java/dev/dvorakmortonxd/Game.java b/src/main/java/dev/dvorakmortonxd/Game.java index bae74cc..c822272 100644 --- a/src/main/java/dev/dvorakmortonxd/Game.java +++ b/src/main/java/dev/dvorakmortonxd/Game.java @@ -60,7 +60,7 @@ public class Game extends JPanel implements ActionListener { /* defines the level which is used to determine what exactly shows (for example main menu is level 1), levelProgress which is only used for the animation from level 1 to level 2 and fadeAnimation which is also used for the animation from level 1 to level 2 */ - public int level = 1; + public int level = 3; public boolean levelProgress = false; // this is used to make the transition from the Game menu to the game level look cool public int fadeAnimation = 0; @@ -107,9 +107,17 @@ public class Game extends JPanel implements ActionListener { public int actionTimer = 0; // defines the initial player variables - public int playerX = 525; - public int playerY = 375; - + public int playerX = 423; + public int playerY = 310; + public int playerOldY = playerY; + public int playerSizeX = 14*4; + public int playerSizeY = 18*4; + public String playerDirection = "forward"; + public BufferedImage playerCurrentSprite; + public int playerWalkingModifier = 5; + public boolean playerOnFeet = true; + public boolean playerJumped = false; + public boolean playerActive = true; // Starts update.java which is basically a class that contains all the stuff that happens every tick @Override public void actionPerformed(ActionEvent e) { // update step diff --git a/src/main/java/dev/dvorakmortonxd/input.java b/src/main/java/dev/dvorakmortonxd/input.java index ba3555e..e692fd6 100644 --- a/src/main/java/dev/dvorakmortonxd/input.java +++ b/src/main/java/dev/dvorakmortonxd/input.java @@ -9,8 +9,30 @@ public class input implements KeyListener { } @Override public void keyPressed(KeyEvent e) { // input + if (m.playerActive) { + switch (e.getKeyCode()) { + case KeyEvent.VK_A: + m.playerDirection = "left"; + break; + case KeyEvent.VK_D: + m.playerDirection = "right"; + break; + case KeyEvent.VK_SPACE: + if (!m.playerJumped && m.playerOnFeet) { + m.playerJumped = true; + m.playerOldY = m.playerY; + } + break; + /* ONLY FOR DEBUGGING BELOW + case KeyEvent.VK_A -> m.playerX -= m.playerWalkingModifier; + case KeyEvent.VK_D -> m.playerX += m.playerWalkingModifier; + case KeyEvent.VK_S -> m.playerY += 1; + case KeyEvent.VK_W -> m.playerY -= 1; */ + } + } switch (e.getKeyCode()) { case KeyEvent.VK_ESCAPE -> System.exit(0); + case KeyEvent.VK_CONTROL -> System.out.println("X+Y="+m.playerX+"+"+m.playerY); } } @@ -19,6 +41,17 @@ public class input implements KeyListener { @Override public void keyReleased(KeyEvent e) { // what happens when you let go of a key + if (m.playerActive) { + switch (e.getKeyCode()) { + case KeyEvent.VK_A -> m.playerDirection = "forward"; + case KeyEvent.VK_D -> m.playerDirection = "forward"; + /* ONLY FOR DEBUGGING BELOW + case KeyEvent.VK_A -> m.playerX -= m.playerWalkingModifier; + case KeyEvent.VK_D -> m.playerX += m.playerWalkingModifier; + case KeyEvent.VK_S -> m.playerY += 1; + case KeyEvent.VK_W -> m.playerY -= 1; */ + } + } } diff --git a/src/main/java/dev/dvorakmortonxd/loadAssets.java b/src/main/java/dev/dvorakmortonxd/loadAssets.java index 7bcc1ea..5629d6b 100644 --- a/src/main/java/dev/dvorakmortonxd/loadAssets.java +++ b/src/main/java/dev/dvorakmortonxd/loadAssets.java @@ -44,6 +44,8 @@ public class loadAssets { m.playerRight0 = ImageIO.read(Game.class.getResource("/assets/player/playerSpriteRight.png")); m.playerRight1 = ImageIO.read(Game.class.getResource("/assets/player/playerSpriteRightWalk0.png")); m.playerRight2 = ImageIO.read(Game.class.getResource("/assets/player/playerSpriteRightWalk1.png")); + + m.playerCurrentSprite = m.playerForward0; } catch (IOException e) { e.printStackTrace(); } diff --git a/src/main/java/dev/dvorakmortonxd/update.java b/src/main/java/dev/dvorakmortonxd/update.java index cbdae29..6d3e3fe 100644 --- a/src/main/java/dev/dvorakmortonxd/update.java +++ b/src/main/java/dev/dvorakmortonxd/update.java @@ -29,7 +29,7 @@ public class update { } if (m.windowWidth - m.fadeAnimation <= 0) { m.level = 2; } } - if (m.level == 2) { + else if (m.level == 2) { if (m.actionTimer < 1000 && m.actionTimer > 950) { m.opacityAnimation = 0.01f; } @@ -38,9 +38,42 @@ public class update { m.actionTimer++; m.fadeAnimation += 20; if (m.actionTimer > 1760) { + m.playerActive = true; m.level = 3; } } + if (m.playerActive) { + if (m.playerDirection == "forward"){ + m.playerCurrentSprite = m.playerForward0; + } else if (m.playerDirection == "backward") { + m.playerCurrentSprite = m.playerBackward0; + } else if (m.playerDirection == "right") { + m.playerCurrentSprite = m.playerRight0; + m.playerX += m.playerWalkingModifier; + } else if (m.playerDirection == "left") { + m.playerCurrentSprite = m.playerLeft0; + m.playerX -= m.playerWalkingModifier; + } + if (m.playerJumped) { + m.playerOnFeet = false; + m.playerY -= 10; + if (m.playerOldY-100 >= m.playerY) { m.playerJumped = false; } + } + + // collisions + if (m.level == 3 && (m.playerY < 338 || (m.playerX >= 583 || m.playerX <= 274) && m.playerY < 366)) { + m.playerY += 5; + m.playerOnFeet = false; + } else if (m.playerX < 583 && m.playerX > 274) { + m.playerY = 338; + m.playerOnFeet = true; + } else { + m.playerOnFeet = true; + } + + // first ship + if (m.playerX < -m.playerSizeX || m.playerX > m.windowWidth) { m.level = 4; } + } // triggers render m.repaint(); } @@ -188,6 +221,9 @@ public class update { g.drawString("that I could ship it for now so I", 30, m.windowHeight/2-160+280); g.drawString("could be safe from ratticus (I'm scared)", 30, m.windowHeight/2-160+350); } + if (m.playerActive) { + g.drawImage(m.playerCurrentSprite, m.playerX, m.playerY, m.playerSizeX, m.playerSizeY, m); + } Toolkit.getDefaultToolkit().sync(); } } From 686e0814f6f9392b004ef636aef0d32919b853a0 Mon Sep 17 00:00:00 2001 From: dvorakmortonxd Date: Thu, 22 Oct 2026 01:51:24 +0200 Subject: [PATCH 02/19] I forgot I left level = 3 in previous commit for debugging --- build.gradle.kts | 2 +- src/main/java/dev/dvorakmortonxd/Game.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index e773016..e946794 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,7 +3,7 @@ plugins { } group = "dev.dvorakmortonxd" -version = "0.0.1a" +version = "0.0.2a" repositories { mavenCentral() diff --git a/src/main/java/dev/dvorakmortonxd/Game.java b/src/main/java/dev/dvorakmortonxd/Game.java index c822272..5bc27ae 100644 --- a/src/main/java/dev/dvorakmortonxd/Game.java +++ b/src/main/java/dev/dvorakmortonxd/Game.java @@ -60,7 +60,7 @@ public class Game extends JPanel implements ActionListener { /* defines the level which is used to determine what exactly shows (for example main menu is level 1), levelProgress which is only used for the animation from level 1 to level 2 and fadeAnimation which is also used for the animation from level 1 to level 2 */ - public int level = 3; + public int level = 1; public boolean levelProgress = false; // this is used to make the transition from the Game menu to the game level look cool public int fadeAnimation = 0; @@ -117,7 +117,7 @@ public class Game extends JPanel implements ActionListener { public int playerWalkingModifier = 5; public boolean playerOnFeet = true; public boolean playerJumped = false; - public boolean playerActive = true; + public boolean playerActive = false; // Starts update.java which is basically a class that contains all the stuff that happens every tick @Override public void actionPerformed(ActionEvent e) { // update step From 0eba03b1fc25b1dbcdb87cbf30fc58ae22b28186 Mon Sep 17 00:00:00 2001 From: dvorakmortonxd Date: Thu, 22 Oct 2026 02:03:45 +0200 Subject: [PATCH 03/19] changed up a bit of the "secret message" when you walk off the window --- src/main/java/dev/dvorakmortonxd/update.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/dev/dvorakmortonxd/update.java b/src/main/java/dev/dvorakmortonxd/update.java index 6d3e3fe..6fc2191 100644 --- a/src/main/java/dev/dvorakmortonxd/update.java +++ b/src/main/java/dev/dvorakmortonxd/update.java @@ -215,11 +215,11 @@ public class update { g.setColor(Color.WHITE); g.setFont(m.caveat.deriveFont(Font.BOLD, 56f)); g.drawString("Sorry, this is as far as I got with", 30, m.windowHeight/2-160); - g.drawString("this project, It's still a work in", 30, m.windowHeight/2-160+70); - g.drawString("progress so I'll definitely add more", 30, m.windowHeight/2-160+140); + g.drawString("this project so far, It's still a work", 30, m.windowHeight/2-160+70); + g.drawString("in progress so I'll definitely add more", 30, m.windowHeight/2-160+140); g.drawString("content but I just wanted to make sure", 30, m.windowHeight/2-160+210); g.drawString("that I could ship it for now so I", 30, m.windowHeight/2-160+280); - g.drawString("could be safe from ratticus (I'm scared)", 30, m.windowHeight/2-160+350); + g.drawString("could be safe from Ratticus (I'm scared)", 30, m.windowHeight/2-160+350); } if (m.playerActive) { g.drawImage(m.playerCurrentSprite, m.playerX, m.playerY, m.playerSizeX, m.playerSizeY, m); From bbf6b24fa0e626b459e193eeffb0eb6f7cc740f2 Mon Sep 17 00:00:00 2001 From: dvorakmortonxd Date: Thu, 22 Oct 2026 12:00:52 +0200 Subject: [PATCH 04/19] Got animated walking player sprites working --- src/main/java/dev/dvorakmortonxd/Game.java | 10 +++-- src/main/java/dev/dvorakmortonxd/input.java | 12 ++++- src/main/java/dev/dvorakmortonxd/update.java | 47 +++++++++++++++----- 3 files changed, 52 insertions(+), 17 deletions(-) diff --git a/src/main/java/dev/dvorakmortonxd/Game.java b/src/main/java/dev/dvorakmortonxd/Game.java index 5bc27ae..7f3cbaf 100644 --- a/src/main/java/dev/dvorakmortonxd/Game.java +++ b/src/main/java/dev/dvorakmortonxd/Game.java @@ -60,7 +60,7 @@ public class Game extends JPanel implements ActionListener { /* defines the level which is used to determine what exactly shows (for example main menu is level 1), levelProgress which is only used for the animation from level 1 to level 2 and fadeAnimation which is also used for the animation from level 1 to level 2 */ - public int level = 1; + public int level = 3; public boolean levelProgress = false; // this is used to make the transition from the Game menu to the game level look cool public int fadeAnimation = 0; @@ -112,12 +112,16 @@ public class Game extends JPanel implements ActionListener { public int playerOldY = playerY; public int playerSizeX = 14*4; public int playerSizeY = 18*4; - public String playerDirection = "forward"; + public String playerDirection = "none"; public BufferedImage playerCurrentSprite; public int playerWalkingModifier = 5; public boolean playerOnFeet = true; public boolean playerJumped = false; - public boolean playerActive = false; + public boolean playerActive = true; + public int walkTick; + public static int ticksPerFrame = 8; + public static int[] walkCycle = {1, 0, 2, 0}; + // Starts update.java which is basically a class that contains all the stuff that happens every tick @Override public void actionPerformed(ActionEvent e) { // update step diff --git a/src/main/java/dev/dvorakmortonxd/input.java b/src/main/java/dev/dvorakmortonxd/input.java index e692fd6..2ec07ae 100644 --- a/src/main/java/dev/dvorakmortonxd/input.java +++ b/src/main/java/dev/dvorakmortonxd/input.java @@ -11,9 +11,15 @@ public class input implements KeyListener { public void keyPressed(KeyEvent e) { // input if (m.playerActive) { switch (e.getKeyCode()) { + case KeyEvent.VK_W: + m.playerDirection = "forward"; + break; case KeyEvent.VK_A: m.playerDirection = "left"; break; + case KeyEvent.VK_S: + m.playerDirection = "backward"; + break; case KeyEvent.VK_D: m.playerDirection = "right"; break; @@ -43,8 +49,10 @@ public class input implements KeyListener { public void keyReleased(KeyEvent e) { // what happens when you let go of a key if (m.playerActive) { switch (e.getKeyCode()) { - case KeyEvent.VK_A -> m.playerDirection = "forward"; - case KeyEvent.VK_D -> m.playerDirection = "forward"; + case KeyEvent.VK_W -> m.playerDirection = "none"; + case KeyEvent.VK_A -> m.playerDirection = "none"; + case KeyEvent.VK_S -> m.playerDirection = "none"; + case KeyEvent.VK_D -> m.playerDirection = "none"; /* ONLY FOR DEBUGGING BELOW case KeyEvent.VK_A -> m.playerX -= m.playerWalkingModifier; case KeyEvent.VK_D -> m.playerX += m.playerWalkingModifier; diff --git a/src/main/java/dev/dvorakmortonxd/update.java b/src/main/java/dev/dvorakmortonxd/update.java index 6fc2191..fc5b3a1 100644 --- a/src/main/java/dev/dvorakmortonxd/update.java +++ b/src/main/java/dev/dvorakmortonxd/update.java @@ -1,9 +1,19 @@ package dev.dvorakmortonxd; import java.awt.*; +import java.awt.image.BufferedImage; import java.util.Random; public class update { + public static BufferedImage spriteFor(Game m, String direction, int frame) { + return switch (direction) { + case "forward" -> new BufferedImage[]{m.playerForward0, m.playerForward1, m.playerForward2}[frame]; + case "backward" -> new BufferedImage[]{m.playerBackward0, m.playerBackward1, m.playerBackward2}[frame]; + case "left" -> new BufferedImage[]{m.playerLeft0, m.playerLeft1, m.playerLeft2}[frame]; + case "right" -> new BufferedImage[]{m.playerRight0, m.playerRight1, m.playerRight2}[frame]; + default -> m.playerForward0; + }; + } static void performPerTick(Game m) { Random rand = new Random(); m.starSize = rand.nextInt(2,4); @@ -43,34 +53,47 @@ public class update { } } if (m.playerActive) { - if (m.playerDirection == "forward"){ - m.playerCurrentSprite = m.playerForward0; - } else if (m.playerDirection == "backward") { - m.playerCurrentSprite = m.playerBackward0; - } else if (m.playerDirection == "right") { - m.playerCurrentSprite = m.playerRight0; + boolean moving = false; + if (m.playerDirection.equals("right")) { m.playerX += m.playerWalkingModifier; - } else if (m.playerDirection == "left") { - m.playerCurrentSprite = m.playerLeft0; + moving = true; + } else if (m.playerDirection.equals("left")) { m.playerX -= m.playerWalkingModifier; + moving = true; + } else if (m.playerDirection.equals("forward")) { + moving = true; + } else if (m.playerDirection.equals("backward")) { + moving = true; + } else { + moving = false; + } + + int frame = 0; + if (moving) { + frame = m.walkCycle[(m.walkTick / m.ticksPerFrame) % m.walkCycle.length]; + m.walkTick++; + } else { + m.walkTick = 0; } if (m.playerJumped) { m.playerOnFeet = false; - m.playerY -= 10; - if (m.playerOldY-100 >= m.playerY) { m.playerJumped = false; } + m.playerY -= 20; + if (m.playerOldY-80 >= m.playerY) { m.playerJumped = false; } } // collisions if (m.level == 3 && (m.playerY < 338 || (m.playerX >= 583 || m.playerX <= 274) && m.playerY < 366)) { - m.playerY += 5; + m.playerY += 10; m.playerOnFeet = false; - } else if (m.playerX < 583 && m.playerX > 274) { + } else if (m.level == 3 && m.playerX < 583 && m.playerX > 274) { m.playerY = 338; m.playerOnFeet = true; } else { m.playerOnFeet = true; } + // update the player sprite based on direction and if hes walking and frame + m.playerCurrentSprite = spriteFor(m, m.playerDirection, frame); // first ship if (m.playerX < -m.playerSizeX || m.playerX > m.windowWidth) { m.level = 4; } } From 5e60db0dc466f1f131a64f4c84cb88bbacb15ee5 Mon Sep 17 00:00:00 2001 From: dvorakmortonxd Date: Thu, 22 Oct 2026 12:01:49 +0200 Subject: [PATCH 05/19] version bump --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index e946794..a7659a3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,7 +3,7 @@ plugins { } group = "dev.dvorakmortonxd" -version = "0.0.2a" +version = "0.0.3a" repositories { mavenCentral() From f36b9415eb74de09c0087ff17287392dd3a21edf Mon Sep 17 00:00:00 2001 From: dvorakmortonxd Date: Thu, 22 Oct 2026 15:02:42 +0200 Subject: [PATCH 06/19] fixed the controls (swapped W/S keys), fixed the accidentally commited variable level set to 3+playerActive which was set to true) --- src/main/java/dev/dvorakmortonxd/Game.java | 4 ++-- src/main/java/dev/dvorakmortonxd/input.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/dev/dvorakmortonxd/Game.java b/src/main/java/dev/dvorakmortonxd/Game.java index 7f3cbaf..4a63563 100644 --- a/src/main/java/dev/dvorakmortonxd/Game.java +++ b/src/main/java/dev/dvorakmortonxd/Game.java @@ -60,7 +60,7 @@ public class Game extends JPanel implements ActionListener { /* defines the level which is used to determine what exactly shows (for example main menu is level 1), levelProgress which is only used for the animation from level 1 to level 2 and fadeAnimation which is also used for the animation from level 1 to level 2 */ - public int level = 3; + public int level = 1; public boolean levelProgress = false; // this is used to make the transition from the Game menu to the game level look cool public int fadeAnimation = 0; @@ -117,7 +117,7 @@ public class Game extends JPanel implements ActionListener { public int playerWalkingModifier = 5; public boolean playerOnFeet = true; public boolean playerJumped = false; - public boolean playerActive = true; + public boolean playerActive = false; public int walkTick; public static int ticksPerFrame = 8; public static int[] walkCycle = {1, 0, 2, 0}; diff --git a/src/main/java/dev/dvorakmortonxd/input.java b/src/main/java/dev/dvorakmortonxd/input.java index 2ec07ae..d1dfbf0 100644 --- a/src/main/java/dev/dvorakmortonxd/input.java +++ b/src/main/java/dev/dvorakmortonxd/input.java @@ -12,13 +12,13 @@ public class input implements KeyListener { if (m.playerActive) { switch (e.getKeyCode()) { case KeyEvent.VK_W: - m.playerDirection = "forward"; + m.playerDirection = "backward"; break; case KeyEvent.VK_A: m.playerDirection = "left"; break; case KeyEvent.VK_S: - m.playerDirection = "backward"; + m.playerDirection = "forward"; break; case KeyEvent.VK_D: m.playerDirection = "right"; From 915afaa7cbacb9f4d998c0af26cd0d467b57d520 Mon Sep 17 00:00:00 2001 From: dvorakmortonxd Date: Thu, 22 Oct 2026 23:34:36 +0200 Subject: [PATCH 07/19] refined the movement, only partly I still wanna do some touches so it feels better --- src/main/java/dev/dvorakmortonxd/Game.java | 17 ++++++-- src/main/java/dev/dvorakmortonxd/input.java | 35 ++++++++++------- src/main/java/dev/dvorakmortonxd/update.java | 41 +++++++++++++++++--- 3 files changed, 69 insertions(+), 24 deletions(-) diff --git a/src/main/java/dev/dvorakmortonxd/Game.java b/src/main/java/dev/dvorakmortonxd/Game.java index 4a63563..f43f2a6 100644 --- a/src/main/java/dev/dvorakmortonxd/Game.java +++ b/src/main/java/dev/dvorakmortonxd/Game.java @@ -60,7 +60,7 @@ public class Game extends JPanel implements ActionListener { /* defines the level which is used to determine what exactly shows (for example main menu is level 1), levelProgress which is only used for the animation from level 1 to level 2 and fadeAnimation which is also used for the animation from level 1 to level 2 */ - public int level = 1; + public int level = 3; public boolean levelProgress = false; // this is used to make the transition from the Game menu to the game level look cool public int fadeAnimation = 0; @@ -109,15 +109,24 @@ public class Game extends JPanel implements ActionListener { // defines the initial player variables public int playerX = 423; public int playerY = 310; - public int playerOldY = playerY; + public double playerXVelocity = 0; + public double playerYVelocity = 0; + public boolean leftHeld, rightHeld; + + public static final double acceleration = 0.01; + public final double friction = 0.6; + public final double maxSpeed = 6.0; + public final double gravity = 1.0; + public final double jumpSpeed = -12.6; + public final double maxFall = 20.0; + public int playerSizeX = 14*4; public int playerSizeY = 18*4; public String playerDirection = "none"; public BufferedImage playerCurrentSprite; public int playerWalkingModifier = 5; public boolean playerOnFeet = true; - public boolean playerJumped = false; - public boolean playerActive = false; + public boolean playerActive = true; public int walkTick; public static int ticksPerFrame = 8; public static int[] walkCycle = {1, 0, 2, 0}; diff --git a/src/main/java/dev/dvorakmortonxd/input.java b/src/main/java/dev/dvorakmortonxd/input.java index d1dfbf0..40957a0 100644 --- a/src/main/java/dev/dvorakmortonxd/input.java +++ b/src/main/java/dev/dvorakmortonxd/input.java @@ -14,26 +14,23 @@ public class input implements KeyListener { case KeyEvent.VK_W: m.playerDirection = "backward"; break; - case KeyEvent.VK_A: + case KeyEvent.VK_A, KeyEvent.VK_LEFT: m.playerDirection = "left"; + m.leftHeld = true; break; case KeyEvent.VK_S: m.playerDirection = "forward"; break; - case KeyEvent.VK_D: + case KeyEvent.VK_D, KeyEvent.VK_RIGHT: m.playerDirection = "right"; + m.rightHeld = true; break; case KeyEvent.VK_SPACE: - if (!m.playerJumped && m.playerOnFeet) { - m.playerJumped = true; - m.playerOldY = m.playerY; + if (m.playerOnFeet) { + m.playerYVelocity = m.jumpSpeed; + m.playerOnFeet = false; } break; - /* ONLY FOR DEBUGGING BELOW - case KeyEvent.VK_A -> m.playerX -= m.playerWalkingModifier; - case KeyEvent.VK_D -> m.playerX += m.playerWalkingModifier; - case KeyEvent.VK_S -> m.playerY += 1; - case KeyEvent.VK_W -> m.playerY -= 1; */ } } switch (e.getKeyCode()) { @@ -49,10 +46,20 @@ public class input implements KeyListener { public void keyReleased(KeyEvent e) { // what happens when you let go of a key if (m.playerActive) { switch (e.getKeyCode()) { - case KeyEvent.VK_W -> m.playerDirection = "none"; - case KeyEvent.VK_A -> m.playerDirection = "none"; - case KeyEvent.VK_S -> m.playerDirection = "none"; - case KeyEvent.VK_D -> m.playerDirection = "none"; + case KeyEvent.VK_W: + m.playerDirection = "none"; + break; + case KeyEvent.VK_A, KeyEvent.VK_LEFT: + m.playerDirection = "none"; + m.leftHeld = false; + break; + case KeyEvent.VK_S: + m.playerDirection = "none"; + break; + case KeyEvent.VK_D, KeyEvent.VK_RIGHT: + m.playerDirection = "none"; + m.rightHeld = false; + break; /* ONLY FOR DEBUGGING BELOW case KeyEvent.VK_A -> m.playerX -= m.playerWalkingModifier; case KeyEvent.VK_D -> m.playerX += m.playerWalkingModifier; diff --git a/src/main/java/dev/dvorakmortonxd/update.java b/src/main/java/dev/dvorakmortonxd/update.java index fc5b3a1..08810b4 100644 --- a/src/main/java/dev/dvorakmortonxd/update.java +++ b/src/main/java/dev/dvorakmortonxd/update.java @@ -14,6 +14,13 @@ public class update { default -> m.playerForward0; }; } + public static double getGroundY(Game m) { + if (m.level == 3) { + if (m.playerX > 274 && m.playerX < 583) { return 338; } else { return 366; } + } else { + return m.windowHeight; + } + } static void performPerTick(Game m) { Random rand = new Random(); m.starSize = rand.nextInt(2,4); @@ -75,13 +82,35 @@ public class update { } else { m.walkTick = 0; } - if (m.playerJumped) { - m.playerOnFeet = false; - m.playerY -= 20; - if (m.playerOldY-80 >= m.playerY) { m.playerJumped = false; } + if (m.leftHeld && !m.rightHeld) { + m.playerXVelocity -= m.acceleration; + } else if (m.rightHeld && !m.leftHeld) { + m.playerXVelocity +=m.acceleration; + } else { + if (m.playerXVelocity > 0) { + m.playerXVelocity = Math.max(0, m.playerXVelocity - m.friction); + } else if (m.playerXVelocity < 0) { + m.playerXVelocity = Math.min(0, m.playerXVelocity + m.friction); + } } + m.playerXVelocity = Math.clamp(m.playerXVelocity, -m.maxSpeed, m.maxSpeed); + m.playerX += m.playerXVelocity; + m.playerYVelocity = Math.min(m.playerYVelocity + m.gravity, m.maxFall); + m.playerY += m.playerYVelocity; + // collisions + + double groundY = getGroundY(m); + if (m.playerY >= groundY) { + m.playerY = (int) groundY; + m.playerYVelocity = 0; + m.playerOnFeet = true; + } else { + m.playerOnFeet = false; + } + + /* if (m.level == 3 && (m.playerY < 338 || (m.playerX >= 583 || m.playerX <= 274) && m.playerY < 366)) { m.playerY += 10; m.playerOnFeet = false; @@ -90,9 +119,9 @@ public class update { m.playerOnFeet = true; } else { m.playerOnFeet = true; - } + }*/ - // update the player sprite based on direction and if hes walking and frame + // update the player sprite based on direction and if he's walking and frame m.playerCurrentSprite = spriteFor(m, m.playerDirection, frame); // first ship if (m.playerX < -m.playerSizeX || m.playerX > m.windowWidth) { m.level = 4; } From e2438b4005a5aba14f2332a249ea7f7661aaf2d1 Mon Sep 17 00:00:00 2001 From: dvorakmortonxd Date: Fri, 23 Oct 2026 00:18:39 +0200 Subject: [PATCH 08/19] fully revamped the movement system, also I once again left out level =3 and playeractive in variables so I fixed that and instead I made the "Delete" key set those variables to 3 and true --- src/main/java/dev/dvorakmortonxd/Game.java | 15 +++--- src/main/java/dev/dvorakmortonxd/input.java | 50 ++++++-------------- src/main/java/dev/dvorakmortonxd/update.java | 39 ++++----------- 3 files changed, 32 insertions(+), 72 deletions(-) diff --git a/src/main/java/dev/dvorakmortonxd/Game.java b/src/main/java/dev/dvorakmortonxd/Game.java index f43f2a6..2179dcf 100644 --- a/src/main/java/dev/dvorakmortonxd/Game.java +++ b/src/main/java/dev/dvorakmortonxd/Game.java @@ -60,7 +60,7 @@ public class Game extends JPanel implements ActionListener { /* defines the level which is used to determine what exactly shows (for example main menu is level 1), levelProgress which is only used for the animation from level 1 to level 2 and fadeAnimation which is also used for the animation from level 1 to level 2 */ - public int level = 3; + public int level = 1; public boolean levelProgress = false; // this is used to make the transition from the Game menu to the game level look cool public int fadeAnimation = 0; @@ -107,13 +107,13 @@ public class Game extends JPanel implements ActionListener { public int actionTimer = 0; // defines the initial player variables - public int playerX = 423; - public int playerY = 310; + public double playerX = 423; + public double playerY = 310; public double playerXVelocity = 0; public double playerYVelocity = 0; - public boolean leftHeld, rightHeld; + public boolean leftHeld, rightHeld, upHeld, downHeld; - public static final double acceleration = 0.01; + public static final double acceleration = 0.6; public final double friction = 0.6; public final double maxSpeed = 6.0; public final double gravity = 1.0; @@ -122,11 +122,10 @@ public class Game extends JPanel implements ActionListener { public int playerSizeX = 14*4; public int playerSizeY = 18*4; - public String playerDirection = "none"; + public String playerFacing = "forward"; public BufferedImage playerCurrentSprite; - public int playerWalkingModifier = 5; public boolean playerOnFeet = true; - public boolean playerActive = true; + public boolean playerActive = false; public int walkTick; public static int ticksPerFrame = 8; public static int[] walkCycle = {1, 0, 2, 0}; diff --git a/src/main/java/dev/dvorakmortonxd/input.java b/src/main/java/dev/dvorakmortonxd/input.java index 40957a0..14cde92 100644 --- a/src/main/java/dev/dvorakmortonxd/input.java +++ b/src/main/java/dev/dvorakmortonxd/input.java @@ -11,31 +11,26 @@ public class input implements KeyListener { public void keyPressed(KeyEvent e) { // input if (m.playerActive) { switch (e.getKeyCode()) { - case KeyEvent.VK_W: - m.playerDirection = "backward"; - break; - case KeyEvent.VK_A, KeyEvent.VK_LEFT: - m.playerDirection = "left"; - m.leftHeld = true; - break; - case KeyEvent.VK_S: - m.playerDirection = "forward"; - break; - case KeyEvent.VK_D, KeyEvent.VK_RIGHT: - m.playerDirection = "right"; - m.rightHeld = true; - break; - case KeyEvent.VK_SPACE: + case KeyEvent.VK_W, KeyEvent.VK_UP -> m.upHeld = true; + case KeyEvent.VK_A, KeyEvent.VK_LEFT -> m.leftHeld = true; + case KeyEvent.VK_S, KeyEvent.VK_DOWN -> m.downHeld = true; + case KeyEvent.VK_D, KeyEvent.VK_RIGHT -> m.rightHeld = true; + case KeyEvent.VK_SPACE -> { if (m.playerOnFeet) { m.playerYVelocity = m.jumpSpeed; m.playerOnFeet = false; } - break; + } } } switch (e.getKeyCode()) { case KeyEvent.VK_ESCAPE -> System.exit(0); case KeyEvent.VK_CONTROL -> System.out.println("X+Y="+m.playerX+"+"+m.playerY); + // THE LINE BELOW IS FOR ME WHEN DEBUGGING, I LEFT IT IN BECAUSE ITS IMPOSSIBLE TO KNOW ABOUT IT WITHOUT READING THE CODE LOL + case KeyEvent.VK_DELETE -> { + m.level = 3; + m.playerActive = true; + } } } @@ -46,25 +41,10 @@ public class input implements KeyListener { public void keyReleased(KeyEvent e) { // what happens when you let go of a key if (m.playerActive) { switch (e.getKeyCode()) { - case KeyEvent.VK_W: - m.playerDirection = "none"; - break; - case KeyEvent.VK_A, KeyEvent.VK_LEFT: - m.playerDirection = "none"; - m.leftHeld = false; - break; - case KeyEvent.VK_S: - m.playerDirection = "none"; - break; - case KeyEvent.VK_D, KeyEvent.VK_RIGHT: - m.playerDirection = "none"; - m.rightHeld = false; - break; - /* ONLY FOR DEBUGGING BELOW - case KeyEvent.VK_A -> m.playerX -= m.playerWalkingModifier; - case KeyEvent.VK_D -> m.playerX += m.playerWalkingModifier; - case KeyEvent.VK_S -> m.playerY += 1; - case KeyEvent.VK_W -> m.playerY -= 1; */ + case KeyEvent.VK_W, KeyEvent.VK_UP -> m.upHeld = false; + case KeyEvent.VK_A, KeyEvent.VK_LEFT -> m.leftHeld = false; + case KeyEvent.VK_S, KeyEvent.VK_DOWN -> m.downHeld = false; + case KeyEvent.VK_D, KeyEvent.VK_RIGHT -> m.rightHeld = false; } } } diff --git a/src/main/java/dev/dvorakmortonxd/update.java b/src/main/java/dev/dvorakmortonxd/update.java index 08810b4..c507059 100644 --- a/src/main/java/dev/dvorakmortonxd/update.java +++ b/src/main/java/dev/dvorakmortonxd/update.java @@ -60,20 +60,12 @@ public class update { } } if (m.playerActive) { - boolean moving = false; - if (m.playerDirection.equals("right")) { - m.playerX += m.playerWalkingModifier; - moving = true; - } else if (m.playerDirection.equals("left")) { - m.playerX -= m.playerWalkingModifier; - moving = true; - } else if (m.playerDirection.equals("forward")) { - moving = true; - } else if (m.playerDirection.equals("backward")) { - moving = true; - } else { - moving = false; - } + if (m.leftHeld && !m.rightHeld) { m.playerFacing = "left"; } + else if (m.rightHeld && !m.leftHeld) { m.playerFacing = "right"; } + else if (m.upHeld && !m.downHeld) { m.playerFacing = "backward"; } + else if (m.downHeld && !m.upHeld) { m.playerFacing = "forward"; } + + boolean moving = m.leftHeld != m.rightHeld || m.upHeld || m.downHeld; int frame = 0; if (moving) { @@ -82,6 +74,7 @@ public class update { } else { m.walkTick = 0; } + if (m.leftHeld && !m.rightHeld) { m.playerXVelocity -= m.acceleration; } else if (m.rightHeld && !m.leftHeld) { @@ -100,9 +93,8 @@ public class update { m.playerY += m.playerYVelocity; // collisions - double groundY = getGroundY(m); - if (m.playerY >= groundY) { + if (m.playerY+10 >= groundY) { // the +10 is so it feels like you can jump the instant you touch the ground even tho you technically are a bit above it, just makes the movement feel snappier m.playerY = (int) groundY; m.playerYVelocity = 0; m.playerOnFeet = true; @@ -110,19 +102,8 @@ public class update { m.playerOnFeet = false; } - /* - if (m.level == 3 && (m.playerY < 338 || (m.playerX >= 583 || m.playerX <= 274) && m.playerY < 366)) { - m.playerY += 10; - m.playerOnFeet = false; - } else if (m.level == 3 && m.playerX < 583 && m.playerX > 274) { - m.playerY = 338; - m.playerOnFeet = true; - } else { - m.playerOnFeet = true; - }*/ - // update the player sprite based on direction and if he's walking and frame - m.playerCurrentSprite = spriteFor(m, m.playerDirection, frame); + m.playerCurrentSprite = spriteFor(m, m.playerFacing, frame); // first ship if (m.playerX < -m.playerSizeX || m.playerX > m.windowWidth) { m.level = 4; } } @@ -274,7 +255,7 @@ public class update { g.drawString("could be safe from Ratticus (I'm scared)", 30, m.windowHeight/2-160+350); } if (m.playerActive) { - g.drawImage(m.playerCurrentSprite, m.playerX, m.playerY, m.playerSizeX, m.playerSizeY, m); + g.drawImage(m.playerCurrentSprite, (int) m.playerX, (int) m.playerY, m.playerSizeX, m.playerSizeY, m); } Toolkit.getDefaultToolkit().sync(); } From d32e8a8225bc07f98f37af03fc24f727f925f16e Mon Sep 17 00:00:00 2001 From: dvorakmortonxd Date: Fri, 23 Oct 2026 01:06:05 +0200 Subject: [PATCH 09/19] removed useless module import, also added jre-runtime to gitignore since I made that to make the .tar.gz binary releases smaller with jlink and jpackage --- .gitignore | 1 + src/main/java/dev/dvorakmortonxd/loadAssets.java | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 0f3ae8c..7c37451 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,7 @@ out/ !**/src/test/**/out/ # Java +jre-runtime/ build/ staging/ diff --git a/src/main/java/dev/dvorakmortonxd/loadAssets.java b/src/main/java/dev/dvorakmortonxd/loadAssets.java index 5629d6b..9bc60a5 100644 --- a/src/main/java/dev/dvorakmortonxd/loadAssets.java +++ b/src/main/java/dev/dvorakmortonxd/loadAssets.java @@ -2,7 +2,6 @@ package dev.dvorakmortonxd; import javax.imageio.ImageIO; import java.awt.*; -import java.io.File; import java.io.IOException; import java.io.InputStream; From d1841f0b3ac0c9ac467b63232b7e0900ca7ece0e Mon Sep 17 00:00:00 2001 From: dvorakmortonxd Date: Fri, 23 Oct 2026 09:58:55 +0200 Subject: [PATCH 10/19] redesigned asset/made more accurate collisions --- src/main/java/dev/dvorakmortonxd/Game.java | 2 +- src/main/java/dev/dvorakmortonxd/input.java | 6 +++++- src/main/java/dev/dvorakmortonxd/update.java | 6 +++--- src/main/resources/assets/landingPlatform.png | Bin 638 -> 1725 bytes .../assets/landingPlatform.png-autosave.kra | Bin 0 -> 43028 bytes src/main/resources/assets/landingPlatform.png~ | Bin 0 -> 638 bytes 6 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 src/main/resources/assets/landingPlatform.png-autosave.kra create mode 100644 src/main/resources/assets/landingPlatform.png~ diff --git a/src/main/java/dev/dvorakmortonxd/Game.java b/src/main/java/dev/dvorakmortonxd/Game.java index 2179dcf..16bf841 100644 --- a/src/main/java/dev/dvorakmortonxd/Game.java +++ b/src/main/java/dev/dvorakmortonxd/Game.java @@ -52,7 +52,7 @@ public class Game extends JPanel implements ActionListener { public static BufferedImage playerRight2; // sets the FPS up (its 16 because 1000/60 is around 16.666 but it only accepts integers so its just rounded to 60) - public final Timer timer = new Timer(16, this); // 60 FPS (actually more so around 62.5 but thats kinda irrelevant) + public Timer timer = new Timer(16, this); // 60 FPS (actually more so around 62.5 but thats kinda irrelevant) // predefines the mouse position variables public int mouseX, mouseY; diff --git a/src/main/java/dev/dvorakmortonxd/input.java b/src/main/java/dev/dvorakmortonxd/input.java index 14cde92..783db8c 100644 --- a/src/main/java/dev/dvorakmortonxd/input.java +++ b/src/main/java/dev/dvorakmortonxd/input.java @@ -1,5 +1,6 @@ package dev.dvorakmortonxd; +import javax.swing.*; import java.awt.event.*; public class input implements KeyListener { @@ -15,6 +16,8 @@ public class input implements KeyListener { case KeyEvent.VK_A, KeyEvent.VK_LEFT -> m.leftHeld = true; case KeyEvent.VK_S, KeyEvent.VK_DOWN -> m.downHeld = true; case KeyEvent.VK_D, KeyEvent.VK_RIGHT -> m.rightHeld = true; + // debug + case KeyEvent.VK_TAB -> m.timer = new Timer(8, m); // speeds up the game animations (125fps) case KeyEvent.VK_SPACE -> { if (m.playerOnFeet) { m.playerYVelocity = m.jumpSpeed; @@ -27,7 +30,8 @@ public class input implements KeyListener { case KeyEvent.VK_ESCAPE -> System.exit(0); case KeyEvent.VK_CONTROL -> System.out.println("X+Y="+m.playerX+"+"+m.playerY); // THE LINE BELOW IS FOR ME WHEN DEBUGGING, I LEFT IT IN BECAUSE ITS IMPOSSIBLE TO KNOW ABOUT IT WITHOUT READING THE CODE LOL - case KeyEvent.VK_DELETE -> { + case KeyEvent.VK_TAB -> m.timer = new Timer(16, m); // slows back the game animations (62fps) + case KeyEvent.VK_SLASH -> { m.level = 3; m.playerActive = true; } diff --git a/src/main/java/dev/dvorakmortonxd/update.java b/src/main/java/dev/dvorakmortonxd/update.java index c507059..06cbeba 100644 --- a/src/main/java/dev/dvorakmortonxd/update.java +++ b/src/main/java/dev/dvorakmortonxd/update.java @@ -16,9 +16,9 @@ public class update { } public static double getGroundY(Game m) { if (m.level == 3) { - if (m.playerX > 274 && m.playerX < 583) { return 338; } else { return 366; } + if (m.playerX > 290 && m.playerX < 572) { return 338; } else { return 366; } } else { - return m.windowHeight; + return m.windowHeight-m.playerSizeY; } } static void performPerTick(Game m) { @@ -92,7 +92,7 @@ public class update { m.playerYVelocity = Math.min(m.playerYVelocity + m.gravity, m.maxFall); m.playerY += m.playerYVelocity; - // collisions + // jumping and landing mechanics + collisions double groundY = getGroundY(m); if (m.playerY+10 >= groundY) { // the +10 is so it feels like you can jump the instant you touch the ground even tho you technically are a bit above it, just makes the movement feel snappier m.playerY = (int) groundY; diff --git a/src/main/resources/assets/landingPlatform.png b/src/main/resources/assets/landingPlatform.png index e6e102f858dfc2b92625a6c398b498e04c6a1d11..b3db18c839d4a1002b25b33fa06e077d2f77e704 100644 GIT binary patch literal 1725 zcmchY`#;kQ1INE(c8LwoIz?2Nmuuvb
GlWWOX=aD0cXGB{Wj?20*mmzg>&81XJ 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 z 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 U`2Ke@feDJi)78&qol`;+0B4OIyZ`_I literal 0 HcmV?d00001 From 41f1d820e12173d12c9f721826a99ca8bb8d8e86 Mon Sep 17 00:00:00 2001 From: dvorakmortonxd Date: Fri, 23 Oct 2026 12:45:52 +0200 Subject: [PATCH 11/19] updated groundY for the new sprite --- src/main/java/dev/dvorakmortonxd/update.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/dev/dvorakmortonxd/update.java b/src/main/java/dev/dvorakmortonxd/update.java index 06cbeba..bb87567 100644 --- a/src/main/java/dev/dvorakmortonxd/update.java +++ b/src/main/java/dev/dvorakmortonxd/update.java @@ -16,7 +16,7 @@ public class update { } public static double getGroundY(Game m) { if (m.level == 3) { - if (m.playerX > 290 && m.playerX < 572) { return 338; } else { return 366; } + if (m.playerX > 290 && m.playerX < 572) { return 338; } else { return 370; } } else { return m.windowHeight-m.playerSizeY; } From c3a2bb55c5798cfd0cd85d1c3d15f37693723f5b Mon Sep 17 00:00:00 2001 From: dvorakmortonxd Date: Fri, 23 Oct 2026 18:15:17 +0200 Subject: [PATCH 12/19] added something like a custom readme page when you click the planet on the main menu --- build.gradle.kts | 2 +- src/main/java/dev/dvorakmortonxd/Game.java | 1 + src/main/java/dev/dvorakmortonxd/input.java | 13 ++++++++--- src/main/java/dev/dvorakmortonxd/update.java | 23 +++++++++++++++++++- 4 files changed, 34 insertions(+), 5 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index a7659a3..0f66a48 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,7 +3,7 @@ plugins { } group = "dev.dvorakmortonxd" -version = "0.0.3a" +version = "0.0.4a" repositories { mavenCentral() diff --git a/src/main/java/dev/dvorakmortonxd/Game.java b/src/main/java/dev/dvorakmortonxd/Game.java index 16bf841..8042dae 100644 --- a/src/main/java/dev/dvorakmortonxd/Game.java +++ b/src/main/java/dev/dvorakmortonxd/Game.java @@ -171,5 +171,6 @@ public class Game extends JPanel implements ActionListener { frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // makes the X button on the title bar functional frame.setLocationRelativeTo(null); // centers the window on the screen frame.setVisible(true); // makes the window visible + frame.setIconImage(rocket); } } \ No newline at end of file diff --git a/src/main/java/dev/dvorakmortonxd/input.java b/src/main/java/dev/dvorakmortonxd/input.java index 783db8c..49cd8bd 100644 --- a/src/main/java/dev/dvorakmortonxd/input.java +++ b/src/main/java/dev/dvorakmortonxd/input.java @@ -29,7 +29,7 @@ public class input implements KeyListener { switch (e.getKeyCode()) { case KeyEvent.VK_ESCAPE -> System.exit(0); case KeyEvent.VK_CONTROL -> System.out.println("X+Y="+m.playerX+"+"+m.playerY); - // THE LINE BELOW IS FOR ME WHEN DEBUGGING, I LEFT IT IN BECAUSE ITS IMPOSSIBLE TO KNOW ABOUT IT WITHOUT READING THE CODE LOL + // THE LINE BELOW IS FOR ME WHEN DEBUGGING, I LEFT IT IN BECAUSE IT'S IMPOSSIBLE TO KNOW ABOUT IT WITHOUT READING THE CODE LOL case KeyEvent.VK_TAB -> m.timer = new Timer(16, m); // slows back the game animations (62fps) case KeyEvent.VK_SLASH -> { m.level = 3; @@ -43,6 +43,9 @@ public class input implements KeyListener { @Override public void keyReleased(KeyEvent e) { // what happens when you let go of a key + if (m.level == 0) { + m.level = 1; + } if (m.playerActive) { switch (e.getKeyCode()) { case KeyEvent.VK_W, KeyEvent.VK_UP -> m.upHeld = false; @@ -66,7 +69,7 @@ public class input implements KeyListener { m.addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { - if (m.level == 1) { + if (m.level == 1) { if (e.getButton() == MouseEvent.BUTTON1 && m.hoveringOverQuitButton) { m.quitButtonX = m.quitButtonX - 5; m.quitButtonY = m.quitButtonY + 5; @@ -86,7 +89,10 @@ public class input implements KeyListener { m.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent e) { - if (m.level == 1) { + if (m.level == 0) { + m.level = 1; + } + else if (m.level == 1) { if (e.getButton() == MouseEvent.BUTTON1 && m.hoveringOverQuitButton) { m.quitButtonX = m.quitButtonX + 5; m.quitButtonY = m.quitButtonY - 5; @@ -100,6 +106,7 @@ public class input implements KeyListener { if (e.getButton() == MouseEvent.BUTTON1 && m.hoveringOverPlanet) { m.planetX = m.planetX + 2; m.planetYPre = m.planetYPre - 2; + m.level = 0; } } } diff --git a/src/main/java/dev/dvorakmortonxd/update.java b/src/main/java/dev/dvorakmortonxd/update.java index bb87567..ae3dc32 100644 --- a/src/main/java/dev/dvorakmortonxd/update.java +++ b/src/main/java/dev/dvorakmortonxd/update.java @@ -111,7 +111,28 @@ public class update { m.repaint(); } static void paint(Game m, Graphics g) { - if (m.level == 1) { + if (m.level == 0) { + g.setColor(Color.BLACK); + g.fillRect(0,0,m.windowWidth,m.windowHeight); + g.setColor(Color.WHITE); + g.setFont(m.caveat.deriveFont(Font.BOLD, 60f)); + g.drawString("Hey! You discovered my hidden page!", 20, m.windowHeight/2-215); + g.setFont(m.caveat.deriveFont(Font.BOLD, 31f)); + g.drawString("this is my game project made in Java, it's actually my first game written", 20, m.windowHeight/2-200+35); + g.drawString("entirely in java, I built it using the Swing library, my only previous", 20, m.windowHeight/2-200+70); + g.drawString("experience was with pygame, the biggest advantage to switching to Swing", 20, m.windowHeight/2-200+105); + g.drawString("and java is that, this game actually uses your GPU instead of just CPU!", 20, m.windowHeight/2-200+140); + g.drawString("meaning you could squeeze in more cool effects than you could in pygame!", 20, m.windowHeight/2-200+175); + g.drawString("I plan to finish this project, I've always found space to be really cool", 20, m.windowHeight/2-200+210); + g.drawString("and I just didn't find the games about space that are out right now to be", 20, m.windowHeight/2-200+245); + g.drawString("as entertaining as I wished, the closest thing was Ad Astra/Galacticraft", 20, m.windowHeight/2-200+280); + g.drawString("modpacks in minecraft. I hope you enjoy this game it took me really long", 20, m.windowHeight/2-200+315); + g.drawString("time (as im typing this I have 19 hours, and it isnt even close to being", 20, m.windowHeight/2-200+350); + g.drawString("finished, for context right now I only finished the animations for the", 20, m.windowHeight/2-200+385); + g.drawString("main menu and rocket landing, and the player sprites, that just isn't", 20, m.windowHeight/2-200+420); + g.drawString("enough for a playable experience right now but i'll keep working on it!", 20, m.windowHeight/2-200+455); + } + else if (m.level == 1) { g.setColor(Color.WHITE); for (int i = 0; i < m.MENU_STAR_COUNT; i++) { // drawing the stars g.fillOval(m.starX[i]-m.starSize, m.starY[i]-m.starSize, m.starSize, m.starSize); From b4851409e26a47cafefca5f42f5fcadd99b6a24b Mon Sep 17 00:00:00 2001 From: dvorakmortonxd Date: Sat, 24 Oct 2026 13:17:37 +0200 Subject: [PATCH 13/19] fixed an issue I had with the landing platform and added a way to go between scenes on the planet --- src/main/java/dev/dvorakmortonxd/Game.java | 4 +- .../java/dev/dvorakmortonxd/loadAssets.java | 1 + src/main/java/dev/dvorakmortonxd/update.java | 85 ++++++++++++------ .../assets/landingPlatform.png-autosave.kra | Bin 43028 -> 0 bytes src/main/resources/assets/planetZX311Land.png | Bin 0 -> 1234 bytes 5 files changed, 63 insertions(+), 27 deletions(-) delete mode 100644 src/main/resources/assets/landingPlatform.png-autosave.kra create mode 100644 src/main/resources/assets/planetZX311Land.png diff --git a/src/main/java/dev/dvorakmortonxd/Game.java b/src/main/java/dev/dvorakmortonxd/Game.java index 8042dae..9872c62 100644 --- a/src/main/java/dev/dvorakmortonxd/Game.java +++ b/src/main/java/dev/dvorakmortonxd/Game.java @@ -50,6 +50,7 @@ public class Game extends JPanel implements ActionListener { public static BufferedImage playerRight0; public static BufferedImage playerRight1; public static BufferedImage playerRight2; + public static BufferedImage planetZX311Land; // sets the FPS up (its 16 because 1000/60 is around 16.666 but it only accepts integers so its just rounded to 60) public Timer timer = new Timer(16, this); // 60 FPS (actually more so around 62.5 but thats kinda irrelevant) @@ -112,18 +113,17 @@ public class Game extends JPanel implements ActionListener { public double playerXVelocity = 0; public double playerYVelocity = 0; public boolean leftHeld, rightHeld, upHeld, downHeld; - public static final double acceleration = 0.6; public final double friction = 0.6; public final double maxSpeed = 6.0; public final double gravity = 1.0; public final double jumpSpeed = -12.6; public final double maxFall = 20.0; - public int playerSizeX = 14*4; public int playerSizeY = 18*4; public String playerFacing = "forward"; public BufferedImage playerCurrentSprite; + public String currentPlayerLocation = "landingPlatformZX311"; public boolean playerOnFeet = true; public boolean playerActive = false; public int walkTick; diff --git a/src/main/java/dev/dvorakmortonxd/loadAssets.java b/src/main/java/dev/dvorakmortonxd/loadAssets.java index 9bc60a5..946ad59 100644 --- a/src/main/java/dev/dvorakmortonxd/loadAssets.java +++ b/src/main/java/dev/dvorakmortonxd/loadAssets.java @@ -43,6 +43,7 @@ public class loadAssets { m.playerRight0 = ImageIO.read(Game.class.getResource("/assets/player/playerSpriteRight.png")); m.playerRight1 = ImageIO.read(Game.class.getResource("/assets/player/playerSpriteRightWalk0.png")); m.playerRight2 = ImageIO.read(Game.class.getResource("/assets/player/playerSpriteRightWalk1.png")); + m.planetZX311Land = ImageIO.read(Game.class.getResource("/assets/planetZX311Land.png")); m.playerCurrentSprite = m.playerForward0; } catch (IOException e) { diff --git a/src/main/java/dev/dvorakmortonxd/update.java b/src/main/java/dev/dvorakmortonxd/update.java index ae3dc32..76489b8 100644 --- a/src/main/java/dev/dvorakmortonxd/update.java +++ b/src/main/java/dev/dvorakmortonxd/update.java @@ -15,8 +15,10 @@ public class update { }; } public static double getGroundY(Game m) { - if (m.level == 3) { - if (m.playerX > 290 && m.playerX < 572) { return 338; } else { return 370; } + if (m.currentPlayerLocation.equals("landingPlatformZX311")) { + if (m.playerX > 290 && m.playerX < 572) { return 358; } else { return 385; } + } else if (m.currentPlayerLocation.equals("observatoryZX311") || m.currentPlayerLocation.equals("villageEntranceZX311")) { + return 385; } else { return m.windowHeight-m.playerSizeY; } @@ -104,8 +106,32 @@ public class update { // update the player sprite based on direction and if he's walking and frame m.playerCurrentSprite = spriteFor(m, m.playerFacing, frame); - // first ship - if (m.playerX < -m.playerSizeX || m.playerX > m.windowWidth) { m.level = 4; } + // player moving between locations on planets + if (m.currentPlayerLocation.equals("landingPlatformZX311")) { + if (m.playerX < -m.playerSizeX) { + m.currentPlayerLocation = "observatoryZX311"; + m.playerX = m.windowWidth - m.playerSizeX; + } else if (m.playerX > m.windowWidth) { + m.currentPlayerLocation = "villageEntranceZX311"; + m.playerX = m.playerSizeX; + } + } else if (m.currentPlayerLocation.equals("observatoryZX311")) { + if (m.playerX < -m.playerSizeX) { + m.currentPlayerLocation = "villageEntranceZX311"; + m.playerX = m.windowWidth - m.playerSizeX; + } else if (m.playerX > m.windowWidth) { + m.currentPlayerLocation = "landingPlatformZX311"; + m.playerX = m.playerSizeX; + } + } else if (m.currentPlayerLocation.equals("villageEntranceZX311")) { + if (m.playerX < -m.playerSizeX) { + m.currentPlayerLocation = "landingPlatformZX311"; + m.playerX = m.windowWidth - m.playerSizeX; + } else if (m.playerX > m.windowWidth) { + m.currentPlayerLocation = "observatoryZX311"; + m.playerX = m.playerSizeX; + } + } } // triggers render m.repaint(); @@ -203,7 +229,7 @@ public class update { g.fillOval(m.starX[i] - m.starSize, m.starY[i] - m.starSize, m.starSize, m.starSize); } } - if ((m.rocketYPre + (m.actionTimer -321)/5) <= 300){ + if ((m.rocketYPre + (m.actionTimer -321)/5) <= 320){ g.drawImage(m.parachute, m.windowWidth / 2 - 73, m.rocketY - m.hoverYOffset / 3 - 42 + (m.actionTimer -321)/5, 147, 90, m); g.drawImage(m.rocketTop, m.windowWidth / 2 - 73, m.rocketY - m.hoverYOffset / 3 + (m.actionTimer -321)/5, 147, 84, m); } else { @@ -212,24 +238,23 @@ public class update { g2.drawImage(m.sun, 600, -80, 384, 384, m); g2.setComposite(AlphaComposite.SrcOver); // reset so nothing else is transparent if (m.actionTimer < 1200) { - g.drawImage(m.parachute, m.windowWidth / 2 - 73, 258, 147, 90, m); - g.drawImage(m.rocketTop, m.windowWidth / 2 - 73, 300, 147, 84, m); + g.drawImage(m.parachute, m.windowWidth / 2 - 73, 278, 147, 90, m); + g.drawImage(m.rocketTop, m.windowWidth / 2 - 73, 320, 147, 84, m); } else if (1400 > m.actionTimer && m.actionTimer >= 1200) { - g.drawImage(m.parachute, m.windowWidth / 2 - 73, 258, 147, 90, m); - g.drawImage(m.rocketLanding0, m.windowWidth / 2 - 73, 300, 147, 111, m); + g.drawImage(m.parachute, m.windowWidth / 2 - 73, 278, 147, 90, m); + g.drawImage(m.rocketLanding0, m.windowWidth / 2 - 73, 320, 147, 111, m); } else if (1400 <= m.actionTimer && m.actionTimer < 1550) {; - g.drawImage(m.parachute, m.windowWidth / 2 - 73, 258, 147, 90, m); - g.drawImage(m.rocketLanding1, m.windowWidth / 2 - 73, 300, 147, 111, m); + g.drawImage(m.parachute, m.windowWidth / 2 - 73, 278, 147, 90, m); + g.drawImage(m.rocketLanding1, m.windowWidth / 2 - 73, 320, 147, 111, m); } else { - g.drawImage(m.parachute, m.windowWidth / 2 - 73, 258+(m.actionTimer -1550)*3/2, 147, 90, m); // parachute is falling! - g.drawImage(m.rocketLanding1, m.windowWidth / 2 - 73, 300, 147, 111, m); + g.drawImage(m.parachute, m.windowWidth / 2 - 73, 278+(m.actionTimer -1550)*3/2, 147, 90, m); // parachute is falling! + g.drawImage(m.rocketLanding1, m.windowWidth / 2 - 73, 320, 147, 111, m); } - // (windowHeight-210) is the desired height - if ((1100-(m.actionTimer / 2 )) >= 340) { - g.drawImage(m.landingPlatform, 0, 1100-(m.actionTimer /2), m.windowWidth, m.windowWidth/128*30, m); + if ((1100-(m.actionTimer / 2 )) >= 370) { + g.drawImage(m.landingPlatform, 0, 1100-(m.actionTimer /2), m.windowWidth, m.windowWidth/256*60, m); } else { - g.drawImage(m.landingPlatform, 0, 340, m.windowWidth, m.windowWidth/128*30, m); + g.drawImage(m.landingPlatform, 0, 370, m.windowWidth, m.windowWidth/256*60, m); } } @@ -254,14 +279,24 @@ public class update { } } else if (m.level == 3) { - g.setColor(new Color(127, 127,255)); - g.fillRect(0,0,m.windowWidth,m.windowHeight); - Graphics2D g2 = (Graphics2D) g; - g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, m.opacityAnimation)); - g2.drawImage(m.sun, 600, -80, 384, 384, m); - g2.setComposite(AlphaComposite.SrcOver); // reset so nothing else is transparent - g.drawImage(m.landingPlatform, 0, 340, m.windowWidth, m.windowWidth/128*30, m); - g.drawImage(m.rocketLanding1, m.windowWidth / 2 - 73, 300, 147, 111, m); + if (m.currentPlayerLocation.equals("landingPlatformZX311")) { + g.setColor(new Color(127, 127, 255)); + g.fillRect(0, 0, m.windowWidth, m.windowHeight); + Graphics2D g2 = (Graphics2D) g; + g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, m.opacityAnimation)); + g2.drawImage(m.sun, 600, -80, 384, 384, m); + g2.setComposite(AlphaComposite.SrcOver); // reset so nothing else is transparent + g.drawImage(m.landingPlatform, 0, 370, m.windowWidth, m.windowWidth / 256 * 60, m); + g.drawImage(m.rocketLanding1, m.windowWidth / 2 - 73, 320, 147, 111, m); + } else if (m.currentPlayerLocation.equals("observatoryZX311")) { + g.setColor(new Color(127, 127, 255)); + g.fillRect(0, 0, m.windowWidth, m.windowHeight); + g.drawImage(m.planetZX311Land, 0, 457, m.windowWidth, m.windowWidth/256*31, m); + } else if (m.currentPlayerLocation.equals("villageEntranceZX311")) { + g.setColor(new Color(127, 127, 255)); + g.fillRect(0, 0, m.windowWidth, m.windowHeight); + g.drawImage(m.planetZX311Land, 0, 457, m.windowWidth, m.windowWidth/256*31, m); + } } else { g.setColor(Color.BLACK); diff --git a/src/main/resources/assets/landingPlatform.png-autosave.kra b/src/main/resources/assets/landingPlatform.png-autosave.kra deleted file mode 100644 index 5b8fc407b07fbedd4865d82907643935abb8766b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43028 zcmeFZ1ymf-n(tdJxVuB+9^8U7?gWBEAh?C#?(V??ganr$ArRbM5)w$zU`c?&0wg#g zK(O1KGw0khcb$1NYu>E)=B_o}RQ29p?Oj#-zkmCys^;6RqXC0s1Gg{7dq(EP2e1kf zRQh(oL@h2(E_U7l?siu0?vI^pth}AvT>1QYojskrt#nWoN&iypwqk{bs`)S!0OHXA z0Oz)%m6NNjo6Q}6m&Y;s=5Am3NkjH)4=x8rkFel^>4r^pZyvQ4CmVh#U86kU_qEN1 z=KNXq+m+RjtYRdRJZwKL@Orb`|JIjvf_XZY+XQ5JB4GWrDseO*V!xs=N~T8~NfS&N z(wlRg^MvS$qi0xvpI3~j9O+`pyZgd9DHFP08amXd}iqKvHa2kmUd zQ(ke&Qlh|PJ>`yRml)3V7j zxTg+nEd1;@9igf$OwPAxO6$~Xs0=MKQiCJ2tD>L3ztYYiqUNE{lT0|B{RcTw{g*gQ ztOrKk5+t^+zaL`i(oh^likq6xjJS{Ln_Is6l^7p2j|EZQ8uNn5JYeWO);6*%oS>Qm zyAw%ERb2f!sfn=9ygI$ie^@s?^uqk3S0A0V!9x(JmIJ5z@+nf#h6mx%nP1_QJ!Ep@ z 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 OfaF$`Q%Z~+dGFHW1oasfV)5rv6LNS3UTUo)bL zO4bjlyDjy2mwkFX9)FMD{7D5;fg39D{PySf4QVIkR3H@q1%9OrsX!`lUj;5>0Pi2~ z_dUgAo(eb>xP$>@^E*#Jx7}WW=iL>6=6`*8eZarv|4VRsVNiT9W06D7oRWcpuFXFb zLvPN_0CNLYz+?cWKwJgUQE%Mv#RS~xaN$N3ZDSm%5euiP{slkI31jff;Gnr^Y&x&% zD&mFqTwL$DaYK-va;x?av4G&4{)iMuq;G8}-{Reu;PH7G~Z7fot|{I4TKgc1G;ujt-NbZ zZjLpe`575}LnrIes)=dh5IYE98E^H*d;fkvNGbiD2wZID1U zfM^cWpIp&|j(FUYZbY$;$k9PASI8M$J?FYxeGfH&BIs@+X%#!8I5kW;e@=nbZ&&Bo z{og(8i$GXVe0_}~l5tW2RRP1>798Ua#y-pdKv*p39mG`&G8ZhV0C)9Y5@-OZ`da|{ zNpGWr-px$|&LcxCqJZ}S<=r=ncHIB~)rqE`MXHvUbNAg2t;R26j?)O@-bJUo@Psq1 z8^Fxwr?(G48-#}*@YOz)^qK%}e5w(|och6-m(<4lMi_D30A`4X8$YPwF%7P;xv?44 zSIAk@0_LD7BMp-)@*0K}H0p^#GhxUbssDNg01P`ce$PW&GPdIeWof)(0+F08c_Z_! z8q0daiqva81IXr&sn3o&MiyXXtQg_uMVX<6*#In8lX=oDp1Jeen#I{CyoD7o834YT zM85}&(#CpyYRVVcxbQ@VcqOLc3BB|C~rkL*TPlJm*tFV2IhNV$3`>b3N3M8V%+cmGkp_~3QJ$lBnwz59`5OL z8l$6m&*r4O=&@3WG10DC$CYa3$jL&HLD*(SWM^k}RV0Q)n0sG=@yA!?QvH$=807*qoM6N<$f^w}g!T Date: Sat, 24 Oct 2026 14:33:03 +0200 Subject: [PATCH 14/19] working on the observatory entrance --- src/main/java/dev/dvorakmortonxd/Game.java | 3 +++ .../java/dev/dvorakmortonxd/loadAssets.java | 2 ++ src/main/java/dev/dvorakmortonxd/update.java | 5 +++++ .../assets/landingPlatform.png-autosave.kra | Bin 0 -> 25410 bytes src/main/resources/assets/observatoryClosed.png | Bin 0 -> 8850 bytes src/main/resources/assets/observatoryOpened.png | Bin 0 -> 8538 bytes 6 files changed, 10 insertions(+) create mode 100644 src/main/resources/assets/landingPlatform.png-autosave.kra create mode 100644 src/main/resources/assets/observatoryClosed.png create mode 100644 src/main/resources/assets/observatoryOpened.png diff --git a/src/main/java/dev/dvorakmortonxd/Game.java b/src/main/java/dev/dvorakmortonxd/Game.java index 9872c62..e881525 100644 --- a/src/main/java/dev/dvorakmortonxd/Game.java +++ b/src/main/java/dev/dvorakmortonxd/Game.java @@ -51,6 +51,9 @@ public class Game extends JPanel implements ActionListener { public static BufferedImage playerRight1; public static BufferedImage playerRight2; public static BufferedImage planetZX311Land; + public static BufferedImage closedObservatory; + public static BufferedImage openedObservatory; + // sets the FPS up (its 16 because 1000/60 is around 16.666 but it only accepts integers so its just rounded to 60) public Timer timer = new Timer(16, this); // 60 FPS (actually more so around 62.5 but thats kinda irrelevant) diff --git a/src/main/java/dev/dvorakmortonxd/loadAssets.java b/src/main/java/dev/dvorakmortonxd/loadAssets.java index 946ad59..3f59cdc 100644 --- a/src/main/java/dev/dvorakmortonxd/loadAssets.java +++ b/src/main/java/dev/dvorakmortonxd/loadAssets.java @@ -44,6 +44,8 @@ public class loadAssets { m.playerRight1 = ImageIO.read(Game.class.getResource("/assets/player/playerSpriteRightWalk0.png")); m.playerRight2 = ImageIO.read(Game.class.getResource("/assets/player/playerSpriteRightWalk1.png")); m.planetZX311Land = ImageIO.read(Game.class.getResource("/assets/planetZX311Land.png")); + m.closedObservatory = ImageIO.read(Game.class.getResource("/assets/observatoryClosed.png")); + m.openedObservatory = ImageIO.read(Game.class.getResource("/assets/observatoryOpened.png")); m.playerCurrentSprite = m.playerForward0; } catch (IOException e) { diff --git a/src/main/java/dev/dvorakmortonxd/update.java b/src/main/java/dev/dvorakmortonxd/update.java index 76489b8..997a9a1 100644 --- a/src/main/java/dev/dvorakmortonxd/update.java +++ b/src/main/java/dev/dvorakmortonxd/update.java @@ -291,6 +291,11 @@ public class update { } else if (m.currentPlayerLocation.equals("observatoryZX311")) { g.setColor(new Color(127, 127, 255)); g.fillRect(0, 0, m.windowWidth, m.windowHeight); + if (m.playerX > 240 && m.playerX < 400) { + g.drawImage(m.openedObservatory, 100, 457 - 449, 235 * 2, 228 * 2, m); + } else { + g.drawImage(m.closedObservatory, 100, 457 - 449, 235 * 2, 228 * 2, m); + } g.drawImage(m.planetZX311Land, 0, 457, m.windowWidth, m.windowWidth/256*31, m); } else if (m.currentPlayerLocation.equals("villageEntranceZX311")) { g.setColor(new Color(127, 127, 255)); diff --git a/src/main/resources/assets/landingPlatform.png-autosave.kra b/src/main/resources/assets/landingPlatform.png-autosave.kra new file mode 100644 index 0000000000000000000000000000000000000000..928fb152de6aa94779ca88bf022401786f143725 GIT binary patch literal 25410 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 Lhy>2VZ;t*C+^O@# literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/observatoryClosed.png b/src/main/resources/assets/observatoryClosed.png new file mode 100644 index 0000000000000000000000000000000000000000..b38d697d8476172cf6a6718ebde06d4b9819a4b0 GIT binary patch literal 8850 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 Date: Sun, 25 Oct 2026 20:17:28 +0100 Subject: [PATCH 15/19] the observatory has an interior now and you can even walk in or out --- src/main/java/dev/dvorakmortonxd/Game.java | 1 + .../java/dev/dvorakmortonxd/loadAssets.java | 2 +- src/main/java/dev/dvorakmortonxd/update.java | 28 ++++++++++++++++++ src/main/resources/assets/observatoryDoor.png | Bin 0 -> 405 bytes .../resources/assets/observatoryDoor.png~ | Bin 0 -> 468 bytes 5 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/assets/observatoryDoor.png create mode 100644 src/main/resources/assets/observatoryDoor.png~ diff --git a/src/main/java/dev/dvorakmortonxd/Game.java b/src/main/java/dev/dvorakmortonxd/Game.java index e881525..7466250 100644 --- a/src/main/java/dev/dvorakmortonxd/Game.java +++ b/src/main/java/dev/dvorakmortonxd/Game.java @@ -53,6 +53,7 @@ public class Game extends JPanel implements ActionListener { public static BufferedImage planetZX311Land; public static BufferedImage closedObservatory; public static BufferedImage openedObservatory; + public static BufferedImage doorObservatory; // sets the FPS up (its 16 because 1000/60 is around 16.666 but it only accepts integers so its just rounded to 60) diff --git a/src/main/java/dev/dvorakmortonxd/loadAssets.java b/src/main/java/dev/dvorakmortonxd/loadAssets.java index 3f59cdc..1a19bc4 100644 --- a/src/main/java/dev/dvorakmortonxd/loadAssets.java +++ b/src/main/java/dev/dvorakmortonxd/loadAssets.java @@ -46,7 +46,7 @@ public class loadAssets { m.planetZX311Land = ImageIO.read(Game.class.getResource("/assets/planetZX311Land.png")); m.closedObservatory = ImageIO.read(Game.class.getResource("/assets/observatoryClosed.png")); m.openedObservatory = ImageIO.read(Game.class.getResource("/assets/observatoryOpened.png")); - + m.doorObservatory = ImageIO.read(Game.class.getResource("/assets/observatoryDoor.png")); m.playerCurrentSprite = m.playerForward0; } catch (IOException e) { e.printStackTrace(); diff --git a/src/main/java/dev/dvorakmortonxd/update.java b/src/main/java/dev/dvorakmortonxd/update.java index 997a9a1..efece40 100644 --- a/src/main/java/dev/dvorakmortonxd/update.java +++ b/src/main/java/dev/dvorakmortonxd/update.java @@ -19,6 +19,8 @@ public class update { if (m.playerX > 290 && m.playerX < 572) { return 358; } else { return 385; } } else if (m.currentPlayerLocation.equals("observatoryZX311") || m.currentPlayerLocation.equals("villageEntranceZX311")) { return 385; + } else if (m.currentPlayerLocation.equals("observatoryInteriorZX311")) { + return 400; } else { return m.windowHeight-m.playerSizeY; } @@ -122,6 +124,9 @@ public class update { } else if (m.playerX > m.windowWidth) { m.currentPlayerLocation = "landingPlatformZX311"; m.playerX = m.playerSizeX; + } else if (m.playerX > 250 && m.playerX < 390 && m.upHeld) { + m.currentPlayerLocation = "observatoryInteriorZX311"; + m.playerX = m.playerSizeX; } } else if (m.currentPlayerLocation.equals("villageEntranceZX311")) { if (m.playerX < -m.playerSizeX) { @@ -297,6 +302,29 @@ public class update { g.drawImage(m.closedObservatory, 100, 457 - 449, 235 * 2, 228 * 2, m); } g.drawImage(m.planetZX311Land, 0, 457, m.windowWidth, m.windowWidth/256*31, m); + if (m.playerX > 250 && m.playerX < 390) { + g.setColor(Color.WHITE); + g.setFont(m.caveat.deriveFont(Font.BOLD, 30f)); + g.drawString("Press W or UP arrow key to enter the observatory.", 180, m.windowHeight-35); + } + } else if (m.currentPlayerLocation.equals("observatoryInteriorZX311")) { + g.setColor(new Color(15, 15, 15)); + g.fillRect(0, 0, m.windowWidth, m.windowHeight); + g.setColor(new Color(20, 20, 20)); + g.fillRect(0, 0, m.windowWidth, 340+128); + if (m.playerX > 75) { + g.drawImage(m.doorObservatory, 10, 340, 50, 128, m); + } else { + g.setColor(Color.black); + g.fillRect(10, 340, 50, 127); + g.setColor(Color.WHITE); + g.setFont(m.caveat.deriveFont(Font.BOLD, 30f)); + g.drawString("Keep walking to the left thru the door to leave.", 180, m.windowHeight-35); + if (m.playerX < 0) { + m.playerX = 320; + m.currentPlayerLocation = "observatoryZX311"; + } + } } else if (m.currentPlayerLocation.equals("villageEntranceZX311")) { g.setColor(new Color(127, 127, 255)); g.fillRect(0, 0, m.windowWidth, m.windowHeight); diff --git a/src/main/resources/assets/observatoryDoor.png b/src/main/resources/assets/observatoryDoor.png new file mode 100644 index 0000000000000000000000000000000000000000..9c5ad0c5292508eee854ad5506e65e4ec03bf56e GIT binary patch literal 405 zcmV;G0c!qN$(TMDD134%eYUoseQB#t=sxlVIImCXFb1BgS zvFSSjq4?oeq#!gstx4lTp~#TsQ9>3XEq6BM_T~#ElU+wt%qAetnJ=oL zf{X5Qvv%bz!iCgS0#9UK7TYI$}t_ezh{e^MH zt@cAz({e3sueMVYaSD{>QGxnbvSpY5O^HiC3dC>XBzpu}00000NkvXXu0mjf-2kxo literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/observatoryDoor.png~ b/src/main/resources/assets/observatoryDoor.png~ new file mode 100644 index 0000000000000000000000000000000000000000..d3e110df31c1ea74f2b98fbdb12f4576562b3e90 GIT binary patch literal 468 zcmV;_0W1EAP)C)LKJPrBFc zK}At;u7)!Sd1(FYz&(VmtHox}5C-AlSIbXMXtxS%eaf#ObQV3sx`Kmw zabO-#j`!up!@?1`dztR2y%g|C;|7G`+9>OPL$##k6!17nhk*XW$7WrmCzwLpw)9!L zt|Rx^F`_`0k)q^zP8#Lx7;*G>5ow``G?O!p0l29wOLo_FeH(;TcDo&q8QM21#S)U@ zr0$I=-vvtOHBAF}U8G>UjXB-m1T>q?#%vP%E_!!?h#t0LCWM z!*RO$gvCno*@`~wZqjl|O+KK~KbhXYL6IK57^pZum;Nz^YJULcB#Z-lOSD4(0000< KMNUMnLSTaHP}dUx literal 0 HcmV?d00001 From 75945b59079e00e96d77954cb1cc92db64948b8a Mon Sep 17 00:00:00 2001 From: dvorakmortonxd Date: Sun, 25 Oct 2026 21:11:31 +0100 Subject: [PATCH 16/19] added credits so I can publish 0.0.4a --- src/main/java/dev/dvorakmortonxd/update.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/main/java/dev/dvorakmortonxd/update.java b/src/main/java/dev/dvorakmortonxd/update.java index efece40..af9a1ec 100644 --- a/src/main/java/dev/dvorakmortonxd/update.java +++ b/src/main/java/dev/dvorakmortonxd/update.java @@ -136,6 +136,12 @@ public class update { m.currentPlayerLocation = "observatoryZX311"; m.playerX = m.playerSizeX; } + } else if (m.currentPlayerLocation.equals("credits")) { // these two lines are basically responsible for the ping poing of the player when he reaches the window border on the credits scene lol + if (m.playerX < 0) { + m.playerXVelocity = 20; + } else if (m.playerX > m.windowWidth-m.playerSizeX) { + m.playerXVelocity = -20; + } } } // triggers render @@ -313,14 +319,19 @@ public class update { g.setColor(new Color(20, 20, 20)); g.fillRect(0, 0, m.windowWidth, 340+128); if (m.playerX > 75) { - g.drawImage(m.doorObservatory, 10, 340, 50, 128, m); + g.drawImage(m.doorObservatory, 0, 340, 50, 128, m); + if (m.playerX > m.windowWidth) { + m.playerX = -25; + m.currentPlayerLocation = "credits"; + m.level = 4; + } } else { g.setColor(Color.black); - g.fillRect(10, 340, 50, 127); + g.fillRect(0, 340, 50, 127); g.setColor(Color.WHITE); g.setFont(m.caveat.deriveFont(Font.BOLD, 30f)); g.drawString("Keep walking to the left thru the door to leave.", 180, m.windowHeight-35); - if (m.playerX < 0) { + if (m.playerX < -m.playerSizeX) { m.playerX = 320; m.currentPlayerLocation = "observatoryZX311"; } From ae49b3bbc1f039b9b52b1ee7237e4fbdc186577b Mon Sep 17 00:00:00 2001 From: dvorakmortonxd Date: Tue, 27 Oct 2026 11:19:10 +0000 Subject: [PATCH 17/19] put in a preview for the readme page --- src/main/resources/preview.png | Bin 0 -> 170019 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/preview.png diff --git a/src/main/resources/preview.png b/src/main/resources/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..1ba640e45ee8de4c6c0f478f72403bbf2abe46de GIT binary patch literal 170019 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�)(@&X8h~t-*Upduv>T2}Xs4ha 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 literal 0 HcmV?d00001 From e825b08783840795ad6b80f17d0306e78ff6e5a1 Mon Sep 17 00:00:00 2001 From: dvorakmortonxd Date: Tue, 27 Oct 2026 11:43:10 +0000 Subject: [PATCH 18/19] updated readme since it was pretty bare-bones before --- README.md | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 739de3f..fba9548 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,37 @@ -# My own SpaceSim written in Java -pretty self-explanatory idk what else to write... +

+ +# My own SpaceSim written in Java! + +
+
+ +# Preview: + +
+image + +# This is my work-in-progress game about space, it currently includes: + +- Main menu with cool hovering effects (like the planet hovering and it highlighting when you hover your cursor on it) +- a rocket detaching and landing animation on the ZX311 planet +- an observatory and a walkable land on the ZX311 +- neat and buttery smooth movement +- thats about it. I plan to add more stuff to the planet and a way to travel to more planets but I'm gonna need more time for that :) + +# Why did I make this? +Well I've always liked space games (especially galacticraft and ad astra modpacks in minecraft) and I thought it would keep me going on making a game about it, I also thought it would pretty much fit into this weeks theme ("Outside") on Terra, so I just went for it! also I wanted to learn to make games in java since one of my favourite games (minecraft) is written in Java and I wanted to learn java for a long time, also it would help me in school since right now we are doing C# in school which has a really similar syntax to java :) + +# How do I play? what are the controls for the game? +Well it is pretty basic, the main menu is just click and go so basically you only use your mouse cursor there, and until the rocket lands there aren't any other controls except the debug ones (I'll mention them at the end of this section), and when you land, theres only the basic WASD movement (however the W/S keys are used mainly for doors and stuff, since you cant really walk forward/backward on a 2d window lol) and space to jump (this one is self-explanatory). Now to the debug keys, if you opened this game in a terminal, then you can use the Control key (Ctrl) to get the players X and Y position (though it says the upper left corner of the players sprite since that's where it renders), and also this one you can use whenever but the Slash key (/) will skip the rocket's animation and will skip you to all the way to the part where you land so you can move immidiently (this will work anywhere so it's not really just the skip, it's basically a teleport to landing site and activates player movement). + +## how was this made? +I made it using Java 21 and the Swing library and Java's 2D Graphics :) + +# Thank you for playing/reviewing this project! below theres a few credits I thought made sense ## docs I'd like to keep close Swing tutorial (Oracle): https://docs.oracle.com/javase/tutorial/uiswing/ JFrame, JPanel, key listeners, timers, etc. From 872ff7db2282b34a04cee4ce52337baae5577351 Mon Sep 17 00:00:00 2001 From: dvorakmortonxd Date: Tue, 27 Oct 2026 11:58:48 +0000 Subject: [PATCH 19/19] forgot to include setup tutorial --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index fba9548..9cd247c 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,9 @@ Well I've always liked space games (especially galacticraft and ad astra modpack # How do I play? what are the controls for the game? Well it is pretty basic, the main menu is just click and go so basically you only use your mouse cursor there, and until the rocket lands there aren't any other controls except the debug ones (I'll mention them at the end of this section), and when you land, theres only the basic WASD movement (however the W/S keys are used mainly for doors and stuff, since you cant really walk forward/backward on a 2d window lol) and space to jump (this one is self-explanatory). Now to the debug keys, if you opened this game in a terminal, then you can use the Control key (Ctrl) to get the players X and Y position (though it says the upper left corner of the players sprite since that's where it renders), and also this one you can use whenever but the Slash key (/) will skip the rocket's animation and will skip you to all the way to the part where you land so you can move immidiently (this will work anywhere so it's not really just the skip, it's basically a teleport to landing site and activates player movement). +# How do I install/run this? +well you need any java 21 runtime (like temurin-21 or openjdk-21-jre) and then you just gotta install the .jar file from the [releases page](https://git.dvorakmortonxd.dev/dvorakmortonxd/space-sim/releases) , ORRR.. if you are on a MacOS, I included the .dmg build with an integrated runtime meaning you can just install that one and it'll run without any other requirements! I also have linux .tar.gz builds on earlier versions however I built this one while on vacation so I can't really build it for linux without any access to my desktop at home, and I can't build a windows .exe executables since I don't use windows at all, sorry :( + ## how was this made? I made it using Java 21 and the Swing library and Java's 2D Graphics :)