From 0f39c420069e94c01d37dcd7a2a8faf0a162c177 Mon Sep 17 00:00:00 2001 From: John Date: Mon, 20 Jun 2022 11:32:02 -0400 Subject: [PATCH 1/6] Fix p, add loading screen --- src/GamePanel.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/GamePanel.java b/src/GamePanel.java index c8bc46d..874e1b1 100644 --- a/src/GamePanel.java +++ b/src/GamePanel.java @@ -37,6 +37,7 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ public static Font loreFont = new Font(Font.MONOSPACED, Font.ITALIC + Font.BOLD, 36); public static Color tutorialColor = Color.darkGray; public static Color loreColor = Color.lightGray; + public PauseMenu loadingMenu; public int bombCount; @@ -94,6 +95,7 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ public boolean isRunning; public ArrayList tutorialSign = new ArrayList(); public ArrayList loreSign = new ArrayList(); + public boolean isLoaded; public GamePanel(JPanel gameFrame) throws IOException, SpriteException, UnsupportedAudioFileException, LineUnavailableException { @@ -107,6 +109,7 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ pauseMenuExitOne = new PauseMenu(GAME_HEIGHT/2, 0, 400, 400, GAME_WIDTH, new Font(Font.MONOSPACED, Font.BOLD, 24), "Press ENTER to return", true); pauseMenuExitTwo = new PauseMenu(GAME_HEIGHT/2, -20, 400, 400, GAME_WIDTH, new Font(Font.MONOSPACED, Font.BOLD, 24), "to the main menu", true); pauseMenuResume = new PauseMenu(GAME_HEIGHT/2, -50, 400, 400, GAME_WIDTH, new Font(Font.MONOSPACED, Font.BOLD, 18), "(or press ESC to resume)", true); + loadingMenu = new PauseMenu(GAME_HEIGHT/2, 0, GAME_WIDTH, GAME_HEIGHT, GAME_WIDTH, new Font(Font.MONOSPACED, Font.BOLD, 60), "Loading...", true); dialogueMenu = new DialogueMenu(GAME_HEIGHT-100, 200, new Font(Font.MONOSPACED, Font.BOLD, 20), narratorPortrait, true); try { // load player sprites from disk here @@ -355,6 +358,9 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ // throw new RuntimeException(e); } } + if (!isLoaded) { + loadingMenu.draw(g, Color.white, Color.black); + } } //call the move methods in other classes to update positions @@ -433,6 +439,7 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ } else { LevelManager.bombs = bombCount; } + isLoaded = true; //the CPU runs our game code too quickly - we need to slow it down! The following lines of code "force" the computer to get stuck in a loop for short intervals between calling other methods to update the screen. long lastTime = System.nanoTime(); double amountOfTicks = 60; @@ -564,7 +571,11 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ player.keyReleased(e); if(e.getKeyChar() == 'p'){ LevelManager.nextLevel(); - + try { + player.resetNoSound(); + } catch (IOException ex) { + ex.printStackTrace(); + } } } From 856f3ede0776744a6b1b3e75d42c32655dda547c Mon Sep 17 00:00:00 2001 From: John Date: Mon, 20 Jun 2022 11:42:50 -0400 Subject: [PATCH 2/6] Change default sprite, sprite change behaviour when downkey is pressed --- src/Player.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Player.java b/src/Player.java index b23dfe3..98fe8b2 100644 --- a/src/Player.java +++ b/src/Player.java @@ -446,8 +446,8 @@ public class Player extends GenericSprite { if(rightMouseDown){ g.drawOval((int)(x+WIDTH/2-(reach*steelReachRange)),(int)(y+HEIGHT/2-(reach*steelReachRange)), (int)(reach*steelReachRange*2),(int)(reach*steelReachRange*2)); } - if (!upPressed && !downPressed && !leftPressed && !rightPressed) { - g.drawImage(spriteArray[lastXDirection][lastYDirection][0].image, x-10, y, null); + if (!upPressed && !leftPressed && !rightPressed) { + g.drawImage(spriteArray[lastXDirection][lastYDirection][7].image, x-10, y, null); return 0; } else { lastXDirection = (int)(Math.signum(xVelocity) + 1) / 2; From 46d7fa2dfeecac99fa96c64a3e087bf6cbaf9dc4 Mon Sep 17 00:00:00 2001 From: John Date: Mon, 20 Jun 2022 12:31:24 -0400 Subject: [PATCH 3/6] Change oof to csgo death sound --- sound/OOF.wav | Bin 108386 -> 194138 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/sound/OOF.wav b/sound/OOF.wav index c7f7e8f16f09d6f41f2522d67cf22bba9ddd2837..5d7e6b8aecce387d561d2d39bef0a14392ade659 100644 GIT binary patch literal 194138 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 z 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ЗC^NXR;X6nmadkRz+Q-TrjVu%=J95=R?U`cR;!jl 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 literal 108386 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 Date: Mon, 20 Jun 2022 12:41:58 -0400 Subject: [PATCH 4/6] Change ceiling height, default player frame --- src/GamePanel.java | 4 ++-- src/Player.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/GamePanel.java b/src/GamePanel.java index 0334709..10eda7e 100644 --- a/src/GamePanel.java +++ b/src/GamePanel.java @@ -263,8 +263,8 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ g.setColor(oldColor); g.setFont(oldFont); if (isPaused || isDialogue) { - // set player frame to 0 to prevent frame from changing when player moves - playerFrame = 0; + // set player frame to 7 to prevent frame from changing when player moves + playerFrame = 7; Graphics2D g2d = (Graphics2D)(g); // remove extraneous details from game when paused g2d.setPaint(Color.white); diff --git a/src/Player.java b/src/Player.java index 98fe8b2..2b04203 100644 --- a/src/Player.java +++ b/src/Player.java @@ -108,7 +108,7 @@ public class Player extends GenericSprite { // calls parent public boolean canUpdate(double x, double y) throws UnsupportedAudioFileException, LineUnavailableException, IOException { - if(this.y+y<=-HEIGHT){ + if(this.y+y<=-(HEIGHT+Tile.length*2)){ return false; } boolean canUpdate = true; From e65e0fc385c525f3fec4103c15ae74e46a33137c Mon Sep 17 00:00:00 2001 From: John Date: Mon, 20 Jun 2022 13:25:45 -0400 Subject: [PATCH 5/6] Document GamePanel and remove obsolete documentation --- doc/index.md | 25 ------ src/GamePanel.java | 186 +++++++++++++++++++++++++++------------------ 2 files changed, 111 insertions(+), 100 deletions(-) delete mode 100644 doc/index.md diff --git a/doc/index.md b/doc/index.md deleted file mode 100644 index 9256125..0000000 --- a/doc/index.md +++ /dev/null @@ -1,25 +0,0 @@ -# Function Overview - -This document intended to assist developers who seek to extend the game by modifying source code in src/. - -## Classes - -### BackgroundImage - -Its constructor takes the following arguments: - -`int x, int y, BufferedImage backgroundImage, int width, int height, int parallaxRatio` - -Draws a background image that moves one pixel every `parallaxRatio` pixels when `BackgroundImage.draw()` is called. - -### Camera - -placeholder - -## Utility Functions - -These functions are located in the `public final` class UtilityFunction; please note that the UtilityFunction constructor is private to prevent initialization. - -### readFromFile - -placeholder \ No newline at end of file diff --git a/src/GamePanel.java b/src/GamePanel.java index 10eda7e..e9bbdde 100644 --- a/src/GamePanel.java +++ b/src/GamePanel.java @@ -1,4 +1,6 @@ -/* GamePanel class acts as the main "game loop" - continuously runs the game and calls whatever needs to be called +/* Eric Li, Charlie Zhao, ICS4U, Finished 2022-06-20 + +GamePanel class acts as the main "game loop" - continuously runs the game and calls whatever needs to be called Child of JPanel because JPanel contains methods for drawing to the screen @@ -46,7 +48,7 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ public transient Thread gameThread; public transient Image image; public transient Graphics graphics; - public transient boolean isNewStart = false; + public transient boolean isNewStart; public Player player; public BackgroundImage background, cloudOneBackground, cloudTwoBackground, cloudThreeBackground; public int playerFrame, enemyFrame; @@ -59,22 +61,19 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ public DialogueMenu dialogueMenu; public ArrayList dialogueArray = new ArrayList(); - public BufferedImageWrapper[][][] playerSpriteArray = new BufferedImageWrapper[2][2][11]; public BufferedImageWrapper[][][] slimeSpriteArray = new BufferedImageWrapper[2][2][3]; public BufferedImageWrapper[] explosionArray = new BufferedImageWrapper[9]; - //public static ArrayListmap = new ArrayList(); - public Tile[][]map = new Tile[1000][18]; - public ArrayList middlewareArray = new ArrayList(); + public ArrayList middlewareArray = new ArrayList<>(); - public ArrayListparticleTiles = new ArrayList(); + public ArrayListparticleTiles = new ArrayList<>(); - public ArrayListshootingTiles = new ArrayList(); + public ArrayListshootingTiles = new ArrayList<>(); - public ArrayListfireballs = new ArrayList(); - public ArrayListenemy = new ArrayList(); + public ArrayListfireballs = new ArrayList<>(); + public ArrayListenemy = new ArrayList<>(); public ArrayListbombs = new ArrayList<>(); public BombDirectionShow bombDir = null; public ArrayListparticles = new ArrayList(); @@ -82,15 +81,11 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ // image imports begin here public BufferedImageWrapper backgroundImage = new BufferedImageWrapper(("img/backgrounds/pointyMountains.png")); - public BufferedImageWrapper box = new BufferedImageWrapper(("img/tiles/boxes/box.png")); - public BufferedImageWrapper boxCoin = new BufferedImageWrapper(("img/tiles/boxes/boxCoin.png")); public BufferedImageWrapper cloud1 = new BufferedImageWrapper(("img/backgrounds/cloud1.png")); public BufferedImageWrapper cloud2 = new BufferedImageWrapper(("img/backgrounds/cloud2.png")); public BufferedImageWrapper cloud3 = new BufferedImageWrapper(("img/backgrounds/cloud3.png")); public BufferedImageWrapper bomb; public BufferedImageWrapper narratorPortrait = new BufferedImageWrapper(("img/dialogue/Gunther.png")); - public BufferedImageWrapper villainPortrait = new BufferedImageWrapper(("img/dialogue/Bouncer.png")); - public String lastText; public boolean isContinue; public boolean isRunning; public ArrayList tutorialSign = new ArrayList(); @@ -99,17 +94,22 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ public GamePanel(JPanel gameFrame) throws IOException, SpriteException, UnsupportedAudioFileException, LineUnavailableException { + // set gameFrame to enable switching between different panels (in the gameFrame) this.gameFrame = gameFrame; camera = new Camera(0); + // create background mountains and images background = new BackgroundImage(0, 0, backgroundImage, GAME_WIDTH, GAME_HEIGHT, 10, camera); cloudOneBackground = new BackgroundImage(200, 200, cloud1, cloud1.image.getWidth(), cloud1.image.getHeight(), 5, camera); cloudTwoBackground = new BackgroundImage(600, 250, cloud2, cloud2.image.getWidth(), cloud3.image.getHeight(), 5, camera); cloudThreeBackground = new BackgroundImage(1000, 200, cloud3, cloud2.image.getWidth(), cloud3.image.getHeight(), 5, camera); + // create pause menu and text in pause menu pauseMenu = new PauseMenu(GAME_HEIGHT/2, 100, 400, 400, GAME_WIDTH, new Font(Font.MONOSPACED, Font.BOLD, 60), "Paused", true); pauseMenuExitOne = new PauseMenu(GAME_HEIGHT/2, 0, 400, 400, GAME_WIDTH, new Font(Font.MONOSPACED, Font.BOLD, 24), "Press ENTER to return", true); pauseMenuExitTwo = new PauseMenu(GAME_HEIGHT/2, -20, 400, 400, GAME_WIDTH, new Font(Font.MONOSPACED, Font.BOLD, 24), "to the main menu", true); pauseMenuResume = new PauseMenu(GAME_HEIGHT/2, -50, 400, 400, GAME_WIDTH, new Font(Font.MONOSPACED, Font.BOLD, 18), "(or press ESC to resume)", true); + // create menu shown when loading game loadingMenu = new PauseMenu(GAME_HEIGHT/2, 0, GAME_WIDTH, GAME_HEIGHT, GAME_WIDTH, new Font(Font.MONOSPACED, Font.BOLD, 60), "Loading...", true); + // create text box shown during dialogue dialogueMenu = new DialogueMenu(GAME_HEIGHT-100, 200, new Font(Font.MONOSPACED, Font.BOLD, 20), narratorPortrait, true); try { // load player sprites from disk here @@ -141,13 +141,15 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ // load bomb sprites bomb = new BufferedImageWrapper(("img/misc/bomb.png")); } catch (IOException e) { - e.printStackTrace(); + e.printStackTrace(); // TODO: remove stack trace } player = new Player(GAME_WIDTH/2, GAME_HEIGHT/2, playerSpriteArray); //create a player controlled player, set start location to middle of screenk - // the height of 35 is set because it is half of the original tile height (i.e., 70px) + // add mouse and keyboard listeners addUserInterface(); this.setPreferredSize(new Dimension(GAME_WIDTH, GAME_HEIGHT)); + // indicate that dialogue should be shown on load isNewStart = true; + // allow while look in run() to run isRunning = true; } @@ -156,7 +158,7 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ this.addKeyListener(this); //start listening for keyboard input // request focus when the CardLayout selects this game requestFocusable(); - //add the MousePressed method from the MouseAdapter - by doing this we can listen for mouse input. We do this differently from the KeyListener because MouseAdapter has SEVEN mandatory methods - we only need one of them, and we don't want to make 6 empty methods + // add the mouse adapter methods addMouseListener(); } @@ -180,10 +182,8 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ } else if (!isDialogue && !isPaused) { try { player.mouseReleased(e); - } catch (IOException ex) { - throw new RuntimeException(ex); - } catch (SpriteException ex) { - throw new RuntimeException(ex); + } catch (IOException | SpriteException ex) { + throw new RuntimeException(ex); // TODO: remove stack trace } } } @@ -195,10 +195,8 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ public void mouseDragged(MouseEvent e) { try { player.mouseDragged(e); - } catch (IOException ex) { - throw new RuntimeException(ex); - } catch (SpriteException ex) { - throw new RuntimeException(ex); + } catch (IOException | SpriteException ex) { + throw new RuntimeException(ex); // TODO: remove stack } } public void mouseMoved(MouseEvent e) { @@ -219,12 +217,12 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ }); } - // startThread is to be called after the game has started to avoid any issues TODO: better explanation + // startThread is to be called after the game has started to avoid any issues + // this allows serialization to work without having to implement a custom readObject method public void startThread() { //make this class run at the same time as other classes (without this each class would "pause" while another class runs). By using threading we can remove lag, and also allows us to do features like display timers in real time! gameThread = new Thread(this); gameThread.start(); - //System.out.println(gameThread); } //paint is a method in java.awt library that we are overriding. It is a special method - it is called automatically in the background in order to update what appears in the window. You NEVER call paint() yourself @@ -233,12 +231,8 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ image = createImage(GAME_WIDTH, GAME_HEIGHT); //draw off screen graphics = image.getGraphics(); try { - draw(graphics, playerFrame, enemyFrame);//update the positions of everything on the screen - } catch (IOException e) { - throw new RuntimeException(e); - } catch (UnsupportedAudioFileException e) { - throw new RuntimeException(e); - } catch (LineUnavailableException e) { + draw(graphics, playerFrame);//update the positions of everything on the screen + } catch (IOException | LineUnavailableException | UnsupportedAudioFileException e) { throw new RuntimeException(e); } g.drawImage(image, 0, 0, this); //move the image on the screen @@ -246,7 +240,8 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ } //call the draw methods in each class to update positions as things move - public void draw(Graphics g, int playerFrame, int enemyFrame) throws IOException, UnsupportedAudioFileException, LineUnavailableException { + public void draw(Graphics g, int playerFrame) throws IOException, UnsupportedAudioFileException, LineUnavailableException { + // save old color and font to enable resetting to these after drawing the tutorial Color oldColor = g.getColor(); Font oldFont = g.getFont(); background.draw(g); @@ -263,10 +258,10 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ g.setColor(oldColor); g.setFont(oldFont); if (isPaused || isDialogue) { - // set player frame to 7 to prevent frame from changing when player moves + // set player frame to 7 to prevent frame from changing when player inputs key presses playerFrame = 7; Graphics2D g2d = (Graphics2D)(g); - // remove extraneous details from game when paused + // remove extraneous details (like bomb counter) from game when paused g2d.setPaint(Color.white); } //Don't want to draw off screen items @@ -279,11 +274,15 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ } } } + // this is not an enhanced for loop to prevent concurrent modification exception for(int i=0; i0&&!player.holdingSteel){ - bombDir = new BombDirectionShow(this.player.x + this.camera.x + player.WIDTH/2, this.player.y+player.HEIGHT/2, - (player.mouseX - this.player.x) / 20, (player.mouseY - this.player.y) / 10); + (Player.mouseX - this.player.x) / 20, (Player.mouseY - this.player.y) / 10); bombDir.draw(g); } - + // render steel being held based on mouse position + // additionally, change color of steel depending on whether the player can place the steel or not if(player.holdingSteel){ String filePath = ""; if(player.canPlaceSteel){ @@ -331,34 +335,42 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ double y = ((player.mouseY / Tile.length))*Tile.length; g.drawImage(getImage(filePath),x*Tile.length - (GamePanel.GAME_WIDTH/2)-camera.x,(int)y,Tile.length,Tile.length,null); } - - + // draw bomb counter (bomb image and amount of bombs remaining) g.drawImage(bomb.image,20,20,35,35,null); g.drawString("X"+LevelManager.bombs,60,40); if (isPaused) { + // cover background with translucent rectangle g.setColor(new Color(255, 255, 255, 100)); g.fillRect(0, 0, GAME_WIDTH, GAME_HEIGHT); + // draw pauseMenu rectangle and "Paused" text pauseMenu.draw(g, Color.white, Color.black); + // draw instructions in pause menu pauseMenuExitOne.draw(g, new Color(0,0, 0, 0), Color.gray); pauseMenuExitTwo.draw(g, new Color(0,0, 0, 0), Color.gray); pauseMenuResume.draw(g, new Color(0,0, 0, 0), Color.gray); } else if (isDialogue) { + // cover background with translucent rectangle g.setColor(new Color(255, 255, 255, 100)); g.fillRect(0, 0, GAME_WIDTH, GAME_HEIGHT); try { if (waitForDialogue) { + // draws complete dialogue sentence dialogueMenu.currentFrame = dialogueArray.get(0).length(); dialogueMenu.frameCounter = 0; dialogueMenu.draw(g, dialogueArray.get(0), Color.white, Color.black); - } else if (dialogueMenu.draw(g, dialogueArray.get(0), Color.white, Color.black)) { + } else if (dialogueMenu.draw(g, dialogueArray.get(0), Color.white, Color.black)) { // draws partial sentence + // if the partial sentence is the same length as the complete sentence + // indicate that the game should draw the complete sentence in the future waitForDialogue = true; } } catch (IndexOutOfBoundsException e) { + // if there is no more dialogue to draw, this means that all the dialogue has already been iterated over and removed + // therefore, stop drawing the partially translucent rectangle and resume the game isDialogue = false; - // throw new RuntimeException(e); } } if (!isLoaded) { + // if the game is not loaded, draw the loading screen loadingMenu.draw(g, Color.white, Color.black); } } @@ -366,18 +378,23 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ //call the move methods in other classes to update positions //this method is constantly called from run(). By doing this, movements appear fluid and natural. If we take this out the movements appear sluggish and laggy public void move() throws IOException, UnsupportedAudioFileException, LineUnavailableException { + // move player character player.move(); + // move all enemies for (NonPlayer n: enemy) { n.move(); } + // move bombs flying through the air for(int i=0; i= GAME_HEIGHT - Player.PLAYER_HEIGHT) { player.y = GAME_HEIGHT - Player.PLAYER_HEIGHT; player.yVelocity = 0; player.isGrounded = true; } - if (player.x <= 0) { - player.x = 0; - } - if (player.x + Player.PLAYER_WIDTH >= GAME_WIDTH) { - player.x = GAME_WIDTH - Player.PLAYER_WIDTH; - } + // prevent enemies from falling through the floor + // also added to help level editing for (NonPlayer n: enemy) { if (n.y >= GAME_HEIGHT - n.npcHeight) { n.y = GAME_HEIGHT - n.npcHeight; @@ -428,6 +447,8 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ //run() method is what makes the game continue running without end. It calls other methods to move objects, check for collision, and update the screen public void run() { + // if the game was not serialized but rather started, initialize the map through LevelManager + // also enable dialogue if (isNewStart) { LevelManager.setLevel(1); try { @@ -439,6 +460,7 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ } else { LevelManager.bombs = bombCount; } + // let draw() know that the game is done loading so it can stop drawing the loading screen isLoaded = true; //the CPU runs our game code too quickly - we need to slow it down! The following lines of code "force" the computer to get stuck in a loop for short intervals between calling other methods to update the screen. long lastTime = System.nanoTime(); @@ -447,7 +469,7 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ double delta = 0; long now; int fireballCounter = 0; - while(isRunning){ //this is the game loop, terminates on game restart to prevent race conditions + while(isRunning){ //this is the game loop, terminates on game restart to prevent race conditions. Also reduces lag now = System.nanoTime(); delta = delta + (now-lastTime)/ns; lastTime = now; @@ -458,15 +480,14 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ // only perform game functions if game is not paused or in dialogue try { move(); - } catch (IOException e) { - throw new RuntimeException(e); - } catch (UnsupportedAudioFileException e) { - throw new RuntimeException(e); - } catch (LineUnavailableException e) { + } catch (IOException | UnsupportedAudioFileException | LineUnavailableException e) { throw new RuntimeException(e); } + // check collisions checkCollision(); + // update enemy positions updateEnemy(); + // shoot fireballs every 100 ticks if(fireballCounter<0){fireballCounter = 100;} fireballCounter--; if(fireballCounter == 0){ @@ -478,7 +499,7 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ throw new RuntimeException(e); } if (playerFrameCounter > 5) { - // increment sprite image to be used and keeps it below 12 + // increment player sprite image to be used and keeps it below 12 playerFrame = (playerFrame + 1) % 11; playerFrameCounter -= 5; } @@ -499,11 +520,11 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ repaint(); delta--; } - //System.out.println(Thread.currentThread()); } } + // remove dead enemies that have fully faded public void updateEnemy(){ for(int i=0; i fireballs.add(new FireBall(i.x - 20, i.y + Tile.length / 2 - 4, -fireballSpeed, 0, "left", 8, 16)); + case "up" -> fireballs.add(new FireBall(i.x + Tile.length / 2, i.y - 20, 0, -fireballSpeed, "up", 16, 8)); + case "right" -> fireballs.add(new FireBall(i.x + Tile.length + 20, i.y + Tile.length / 2 - 4, fireballSpeed, 0, "right", 8, 16)); + case "down" -> fireballs.add(new FireBall(i.x + Tile.length / 2, i.y + Tile.length + 10, 0, fireballSpeed, "down", 16, 8)); } } } + // create new particles randomly if amount of particles in the particle array is less than 10 public void updateParticle() throws IOException { if(particles.size()<10) { for (int i = 0; i < particleTiles.size(); i++) { if (UtilityFunction.randInt(1, 20) == 1) { + // create particle with the lava particle image particles.add(new Particle(particleTiles.get(i).x + UtilityFunction.randInt(0, Tile.length), particleTiles.get(i).y + UtilityFunction.randInt(0, Tile.length / 2), UtilityFunction.randInt(-3, 3), UtilityFunction.randInt(-5, 2), UtilityFunction.randInt(5, 9), "img/particles/LavaParticle.png")); } @@ -541,25 +564,36 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ //if a key is pressed, we'll send it over to the Player class for processing public void keyPressed(KeyEvent e){ + // intercept keys through the Middleware class if these are created through the settings e = UtilityFunction.intercept(e, middlewareArray); + // unpause the game if the game is paused, and vice versa if (e.getKeyCode() == KeyEvent.VK_ESCAPE) { isPaused = !isPaused; - System.out.println(isPaused); } else if (e.getKeyCode() == KeyEvent.VK_ENTER) { + // leave the game if the game was already paused + // explicitly ignores MouseEvents that were converted to KeyEvents + // this is to prevent unintentionally quitting the game if (isPaused && (e.getWhen() != -1)) { ((CardLayout)gameFrame.getLayout()).show(gameFrame, "menu"); - } else if (!waitForDialogue) { + } else if (!waitForDialogue) { // fast-forward the dialogue animation if it is still playing waitForDialogue = true; } else { + // play the next dialogue item dialogueMenu.currentFrame = 0; dialogueMenu.frameCounter = 0; - dialogueArray.remove(0); + // try removing the current dialogue item + // the exception is ignored if it fails because waitForDialogue is still set to false + // so it does not matter + try { + dialogueArray.remove(0); + } catch (IndexOutOfBoundsException ignored) {} waitForDialogue = false; } } else { try { + // pass key event to player player.keyPressed(e); - } catch (IOException ex) { + } catch (IOException ex) { // TODO: why is IOException raised throw new RuntimeException(ex); } } @@ -567,9 +601,11 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ //if a key is released, we'll send it over to the Player class for processing public void keyReleased(KeyEvent e){ + // intercept key with new key defined in settings e = UtilityFunction.intercept(e, middlewareArray); player.keyReleased(e); - if(e.getKeyChar() == 'p'){ + // pressing the P key skips to the next level + if(e.getKeyCode() == KeyEvent.VK_P){ LevelManager.nextLevel(); try { player.resetNoSound(); @@ -580,14 +616,14 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ } //left empty because we don't need it; must be here because it is required to be overridded by the KeyListener interface - public void keyTyped(KeyEvent e){ - - } + public void keyTyped(KeyEvent e){} + // read new image with getImage public static BufferedImage getImage(String imageLocation) throws IOException { return ImageIO.read(new File(imageLocation)); } + // flip image horizontally public static BufferedImage flipImageHorizontally(BufferedImage originalImage) { BufferedImage flippedImage = new BufferedImage(originalImage.getWidth(), originalImage.getHeight(), BufferedImage.TYPE_INT_ARGB); for (int x = 0; x < originalImage.getWidth(); x++) { From b82cfd79d546596b2d094f8c826359fb8d40124e Mon Sep 17 00:00:00 2001 From: John Date: Mon, 20 Jun 2022 13:35:37 -0400 Subject: [PATCH 6/6] Document FileManager --- src/FileManager.java | 40 +++++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/src/FileManager.java b/src/FileManager.java index 6a3127f..9d1d0c0 100644 --- a/src/FileManager.java +++ b/src/FileManager.java @@ -1,20 +1,17 @@ +// Eric Li, Charlie Zhao, ICS4U, Finished 2022-06-17 //This class allows us to input and output flies useful for -//Inputing levels and making save data. +// inputting levels and making save data. import java.io.*; import java.util.ArrayList; import java.util.List; import java.util.Scanner; // TODO: close scanner etc after use -public class FileManager { - public static void writeFile(String fileLocation, String writeString) throws IOException { - File newFile = new File(fileLocation); - FileWriter fileWriter = new FileWriter(newFile); - fileWriter.write(writeString); - fileWriter.close(); - } +public final class FileManager { // will create file if it doesn't exist + // does not include robust file closing as readFile is simpler and less likely to fail during reading + // additionally, even failing won't affect readFile as reading is a non-exclusive action (a lock will not prevent it) public static String readFile(String fileLocation) throws IOException { File newFile = new File(fileLocation); if (newFile.createNewFile()) { @@ -28,35 +25,48 @@ public class FileManager { } } + // includes robust file closing public static Object readObjectFromFile(String fileLocation, List allowedObject) throws IOException, ClassNotFoundException { ObjectInputStream objectStream; Object o; FileInputStream fileStream = new FileInputStream(fileLocation); + // if the allowedObject list is not "Any", ensure that the objects loaded are in the list + // this can help mitigate the security risk with deserializing untrusted files if (!allowedObject.contains("Any")) { objectStream = new SafeObjectInputStream(fileStream, allowedObject); } else { + // otherwise, use the unsafe class objectStream = new ObjectInputStream(fileStream); } try { o = objectStream.readObject(); + return o; } catch (Exception e) { // please note that the broad exception Exception was used here // as in the event of any exception, the object should still be closed - // additionally, the exception is reraised, so no information is lost from being too coarse + // additionally, the exception is re-raised, so no information is lost from being too coarse objectStream.close(); fileStream.close(); throw e; + } finally { + objectStream.close(); + fileStream.close(); } - objectStream.close(); - fileStream.close(); - return o; } + // includes robust file closing public static void writeObjectToFile(String fileLocation, Object o) throws IOException { FileOutputStream fileStream = new FileOutputStream(fileLocation); ObjectOutputStream objectStream = new ObjectOutputStream(fileStream); - objectStream.writeObject(o); - objectStream.close(); - fileStream.close(); + try { + objectStream.writeObject(o); + // please note that a less broad exception was used here compared to readObject, as the only "safe" exception to raise in this circumstance is IOException + } catch (IOException e) { + throw new RuntimeException(e); + } finally { + // close resources used even if writing caused an error + objectStream.close(); + fileStream.close(); + } } }