Finally added a simple player movement system (no animated sprites yet tho)
This commit is contained in:
parent
67dc122043
commit
e15e1fc5a8
6 changed files with 91 additions and 8 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
|
@ -18,6 +18,10 @@ out/
|
|||
!**/src/main/**/out/
|
||||
!**/src/test/**/out/
|
||||
|
||||
# Java
|
||||
build/
|
||||
staging/
|
||||
|
||||
### Eclipse ###
|
||||
.apt_generated
|
||||
.classpath
|
||||
|
|
|
|||
|
|
@ -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
|
||||
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.
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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; */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue