From a211a10778e025ae3b055cb4bdeb0ec90da84d71 Mon Sep 17 00:00:00 2001 From: Cody T Date: Sat, 18 Apr 2026 11:11:17 -0500 Subject: [PATCH] added game over and win screens --- Collectable.java | 1 - Display.java | 1 - LevelLoader.java | 1 - Platformer.java | 42 ++++++++++++++++++++++++++++-------------- PowerBrick.java | 2 -- Powerup.java | 2 -- Sprite.java | 1 - Sprites/PressR.png | Bin 0 -> 444 bytes Sprites/end.png | Bin 0 -> 694 bytes Sprites/win.png | Bin 0 -> 1209 bytes Tile.java | 1 - 11 files changed, 28 insertions(+), 23 deletions(-) create mode 100644 Sprites/PressR.png create mode 100644 Sprites/end.png create mode 100644 Sprites/win.png diff --git a/Collectable.java b/Collectable.java index e1bbdce..db41a3c 100644 --- a/Collectable.java +++ b/Collectable.java @@ -1,4 +1,3 @@ -import java.awt.Rectangle; import javax.swing.ImageIcon; public class Collectable extends Collidable{ diff --git a/Display.java b/Display.java index 9ed4dab..ad7e1b5 100644 --- a/Display.java +++ b/Display.java @@ -1,5 +1,4 @@ import javax.swing.*; -import java.awt.Color; public class Display { public static void main(String[] args) { diff --git a/LevelLoader.java b/LevelLoader.java index e7cf52a..15c94f0 100644 --- a/LevelLoader.java +++ b/LevelLoader.java @@ -1,4 +1,3 @@ -import javax.swing.ImageIcon; import java.util.*; import java.io.*; diff --git a/Platformer.java b/Platformer.java index 8950917..89c159a 100644 --- a/Platformer.java +++ b/Platformer.java @@ -1,13 +1,10 @@ -import java.util.Random; import java.util.ArrayList; -import java.util.List; import java.util.HashMap; import java.io.*; import java.awt.*; import java.awt.event.*; -import java.awt.Graphics; + import javax.swing.*; -import java.time.LocalTime; public class Platformer extends JPanel implements KeyListener, ActionListener{ @@ -43,7 +40,7 @@ public class Platformer extends JPanel implements KeyListener, ActionListener{ boolean allCollected; boolean gameOver; boolean gameStarted; - Image heart,emptyHeart,slash,amendmentImg,powerImg,startImg; + Image heart,emptyHeart,slash,amendmentImg,powerImg,pressRImg,startImg,endImg,winImg; ArrayList numbers; @@ -68,6 +65,9 @@ public class Platformer extends JPanel implements KeyListener, ActionListener{ heart = new ImageIcon("Sprites/Hearts/heart.png").getImage(); emptyHeart = new ImageIcon("Sprites/Hearts/emptyHeart.png").getImage(); startImg = new ImageIcon("Sprites/start.png").getImage(); + endImg = new ImageIcon("Sprites/end.png").getImage(); + pressRImg = new ImageIcon("Sprites/PressR.png").getImage(); + winImg = new ImageIcon("Sprites/win.png").getImage(); gameTimer = new Timer(15,this); player = new Player(-20,0,tileSize,tileSize); collidables = new ArrayList<>(); @@ -105,6 +105,7 @@ public class Platformer extends JPanel implements KeyListener, ActionListener{ //gameloop public void gameLoop(){ + if (currentLevel > totalLevels) return; //camera cameraX = player.x - boardWidth / 2; cameraX = Math.max(0, cameraX); @@ -121,6 +122,7 @@ public class Platformer extends JPanel implements KeyListener, ActionListener{ if (currentLevel > totalLevels) { gameTimer.stop(); System.out.println("You win!"); + return; } else { loadLevel(currentLevel); } @@ -318,7 +320,20 @@ public class Platformer extends JPanel implements KeyListener, ActionListener{ //draw function public void draw(Graphics g){ + //gameover screen + if (gameOver){ + g.drawImage(endImg, boardWidth/2 - 100, boardHeight/2 - 150, null); + g.drawImage(pressRImg, boardWidth/2 - 80, boardHeight/2, null); + return; + } + g.translate(-cameraX, -cameraY); + + if (currentLevel > totalLevels) { + g.drawImage(winImg, boardWidth/2 - 100, boardHeight/2 - 50, null); + g.drawImage(pressRImg, boardWidth/2 - 80, boardHeight/2 + 60, null); + return; + } player.draw(g); for (Collidable c : collidables) c.draw(g); @@ -331,7 +346,7 @@ public class Platformer extends JPanel implements KeyListener, ActionListener{ int amOnes = player.numAmendments % 10; int amTens = player.numAmendments / 10; - if (currentLevel > 0 && !gameOver && player.numAmendments < numAm[currentLevel-1]){ + if (currentLevel > 0 && player.numAmendments < numAm[currentLevel-1]){ if (amTens > 0) g.drawImage(numbers.get(amTens),flag.x-20,flag.y-30,null); g.drawImage(numbers.get(amOnes),flag.x+5,flag.y-30,null); g.drawImage(slash,flag.x+28,flag.y-32,null); @@ -353,7 +368,7 @@ public class Platformer extends JPanel implements KeyListener, ActionListener{ else if (curTime >= modAmt/2 && curTime <= modAmt*3/4-1) startTime = 2; else if (curTime >= modAmt*3/4 && curTime <= modAmt-1) startTime = 3; - if (currentLevel == 0 && !gameOver){ + if (currentLevel == 0){ g.drawImage(startImg,340,300,null); String text = "Press P to Start!"; @@ -375,7 +390,7 @@ public class Platformer extends JPanel implements KeyListener, ActionListener{ } } - if (currentLevel > 0 && !gameOver){ + if (currentLevel > 0){ //draw hearts: int heartTime = 0; @@ -409,11 +424,6 @@ public class Platformer extends JPanel implements KeyListener, ActionListener{ g.drawImage(powerImg,220,10,null); } } - - //gameover screen - if (gameOver){ - - } } //is key pressed @@ -444,13 +454,17 @@ public class Platformer extends JPanel implements KeyListener, ActionListener{ } if (e.getKeyCode() == KeyEvent.VK_R){ + if (gameOver) { gameTimer.stop(); - loadLevel(currentLevel); + loadLevel(1); + currentLevel = 1; jumpPressed = false; player.health=3; gameOver = false; repaint(); return; + } + return; } if (e.getKeyCode() == KeyEvent.VK_O){ diff --git a/PowerBrick.java b/PowerBrick.java index a995f43..7fa6d74 100644 --- a/PowerBrick.java +++ b/PowerBrick.java @@ -1,5 +1,3 @@ -import java.awt.Graphics; -import java.awt.Color; import javax.swing.ImageIcon; import java.util.*; diff --git a/Powerup.java b/Powerup.java index ba292fc..680e3b3 100644 --- a/Powerup.java +++ b/Powerup.java @@ -1,6 +1,4 @@ import javax.swing.ImageIcon; -import javax.swing.Timer; -import java.util.*; public class Powerup extends Collectable{ int yVelo, xVelo, id; diff --git a/Sprite.java b/Sprite.java index cfed4ce..d4887e7 100644 --- a/Sprite.java +++ b/Sprite.java @@ -1,4 +1,3 @@ -import java.awt.Graphics; import javax.swing.ImageIcon; import java.awt.Image; diff --git a/Sprites/PressR.png b/Sprites/PressR.png new file mode 100644 index 0000000000000000000000000000000000000000..3511962e1d2d9c45b76077ca57534d0c634ef63e GIT binary patch literal 444 zcmV;t0Ym000mO1^@s6kp*;E0004lNklSC=j{DloM*NdA|7X>Lfu<6 zwZV93BuG5>)Em)j=A0#3ueHJTdfkF=L_AVTdu?}VG*s-$>(ywGcwUVebGG>D^-NJa z1LpHnL#m<3P8ux*+MZXVz}PvDpnzh|f6jm$y=Rk~MslW@cAi>|nR7PyF?*(Xz5z3| zSMEJt7>!q*mPUeCotfm@bzwBQ64TU?(CTCAwY4QWt{rgQbN@Y2ztSX{)u_B_%E+F* zb6y4a1xQe!zI(WsMzaDLeiuZ6`JTC+TiyBtQrXt&pq|58cqJlIZLz_ mKbm?$5ClOG1VIo4)A<5CvYeY+v)J&$0ybgD&@P^ z-Tqrsn|rSE)vjY!ucvK$_s;$Dn{(@$T6gXL%64FmtxVnLYbLj)bJ@=v+m#vid%b*L z{m#tWS3jOl(2TRQt8#v%GGU?X1{UYT2eSn@SeP0e6woO)d(Zhvpa1-M9(-c@_wR3a z&YvE)@7vocR(tk2FTMRu|M>Lvl{2Nj&$bf==?=&h&+b}(D|T1N%Wbh$^2_dAx3tgu z&kU10y<-2I2UTlxI8*!yX|KkYZpn!f&{eU49Z z6UaSP?Ca~YXT4pP8_p+lTwQ@wq7573b!{u3sp@12zX`0>`0OV4je-nQK3f7F@Dm%Q%ztYdr9R(zE@Qu5Od=<_ah zkF_fej?FkP)^?@N{pF>%miy!;r~CuT%y}wSS3E6R!jod3@yP9|y1XsEtRZX0=E)8+ y)5ZV2lHDWq;)9>Z$w4*ZSmU_p0=U%|v%=yRif-o>WGI+ZBxvX=f=?nf~7M*IB3X>ZPxjC8)1!ez$Q?o$c#gnmNAxw*GUD8Z9p? zNV#0<{N1BLZ_>RvRbtGKZYRDuQSw6W<(ZYw=SS*X-}52wef;g~l?B3cQ}_Lz>*Ddq z;=HBWwavS>yvvM>ei5|kM&rj{>(|%X=CT*wZMR7Nnv-pxG3)zp&%V~SHwLlO_sZUx z?f3bP+^;`NuM20LtNQhQ=iIrszrC+~zGVGv?ODO+?-dKgPHkOx>R`nUHQl`6#?rHE z)6*StR&R9HEw(9n_4?1;EgLIS71RyCzL804os)CBRj)E>-?f5F-Hr8!e+cj+u|}wC=TmcKl2nMyzb*)mTuiLoig zc}@DX&ljFcwr#Ln*v!Dh#Kf^lD(URZpQkFfoiYF8wR7&yy=?t`d`ui190~&V{7id< zu0MBtq0rFK09FhXRUn#^aJ6BFUfiLtd=Do(?_DD$ui2zU>h)7e#|}0`*t3 ztF$j>k~@Cw>!wKdh1CgNYhR^)ZTQm9RwC4Mb5~s0&sTx#*!wh#R!t9OQu?dd!t}jp zmH0gk79bE15OCNK>0t5wfJpRJZdn!q9kcGG_3!hatvEaXv%<%3hKk=?ZLV!yH{tD! zO}5{c<@ul3H9_BsL!slHf};De8Se~AW2bEa%Ff)hwxspBD?1}gWbD(hl@BLI3ssl! zN4BdhIsIVcMMnn5GT9VOMfdNTce7TOKHPW#C{n`yQMPsYIgX=ivbDYUK5wc4Dm!@l zYjEsa{bMW6#rf2p?q%ARkR6}>)z)YMB#em&wx$IQFIJs-^jZ8skW=<7zDbQT>z;9K zU(s+Oa@xkPr9b9H=JZ-I3vCLpivoif-c72U? z*Wx=yMZ0Fb)}9f3-u`~pr$D~gTe~DWM4fmoGTg literal 0 HcmV?d00001 diff --git a/Tile.java b/Tile.java index 5bbad59..2bacdf0 100644 --- a/Tile.java +++ b/Tile.java @@ -1,4 +1,3 @@ -import java.awt.Graphics; import javax.swing.ImageIcon; public class Tile extends Collidable {