diff --git a/saves/Level1.txt b/saves/Level1.txt index 81b724b..e9667bd 100644 --- a/saves/Level1.txt +++ b/saves/Level1.txt @@ -3,16 +3,16 @@ sssssssssssssssssd sssssssssssssssssd 1 sssssssssssssssssd sssssssssssssssssd -sssssssssssssssssd 1 1 1 1 1 +sssssssssssssssssd 1 1lllllllll1 1 1 sssssssssssssssssd 1 sssssssssssssssssd -sssssssssssssssssd qe qe -sssssssssssssssssd ad ! ad +sssssssssssssssssd b ! qe qe +sssssssssssssssssd bbbbb ad ! ad sssssssssssssssssd qwe qwe atwwwrd qwwwwwwellllqwwwwwwwe sssssssssssssssssd asd asd zxxxxxc zxxxxxxxllllxxxxxxxxc sssssssssssssssssd 1 zxc zxc vvvvvvvvwwwwvvvvvvvvv sssssssssssssssssd qe vvvvvvvvvvvvvvvvvvvvv sssssssssssssssssdlllllad qwwwwwwwwe vvvvvvvvvvvvvvvvvvvvv sssssssssssssssssdlllllad qrsssslssstwe vvvvvvvvvvvvvvvvvvvvv -sssssssssssssssssdlllllad qwwrssssllssssstwe !!! qwe vvvvvvvvvvvvvvvvvvvvv + +sssssssssssssssssdllllladbb qwwrssssllssssstwe !!! qwe vvvvvvvvvvvvvvvvvvvvv + ssssssssssssssssstwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwrsssssssssssssssstwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwrstwwwwwwwwwwwwwwwwwwwwwwwwwwwwww3 \ No newline at end of file diff --git a/saves/Level3.txt b/saves/Level3.txt index 77fe74c..b00855e 100644 --- a/saves/Level3.txt +++ b/saves/Level3.txt @@ -1,18 +1,18 @@ - - - - - - - - - - - - - - - - - + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww \ No newline at end of file diff --git a/src/BombDirectionShow.java b/src/BombDirectionShow.java index 2217781..c243be3 100644 --- a/src/BombDirectionShow.java +++ b/src/BombDirectionShow.java @@ -4,6 +4,8 @@ import java.awt.image.BufferedImage; public class BombDirectionShow extends StickyBomb{ public BombDirectionShow(int x, int y, int xVelocity, int yVelocity) { super(x, y, xVelocity, yVelocity, null, null); + WIDTH = 25; + HEIGHT = 25; } public void draw(Graphics g){ diff --git a/src/GamePanel.java b/src/GamePanel.java index 806c34e..3f3b9b7 100644 --- a/src/GamePanel.java +++ b/src/GamePanel.java @@ -50,7 +50,6 @@ public class GamePanel extends JPanel implements Runnable, KeyListener{ public static ArrayListparticleTiles = new ArrayList(); public static ArrayListenemy = new ArrayList(); - public static ArrayListbombs = new ArrayList<>(); public BombDirectionShow bombDir = null; public static ArrayListparticles = new ArrayList(); @@ -204,8 +203,10 @@ public class GamePanel extends JPanel implements Runnable, KeyListener{ (player.mouseX - GamePanel.player.x) / 20, (player.mouseY - GamePanel.player.y) / 10); bombDir.draw(g); } - g.drawString(camera.x+" "+((camera.x+GAME_WIDTH)/Tile.length)+" "+player.leftMouseDown,100,100); + // g.drawString(camera.x+" "+((camera.x+GAME_WIDTH)/Tile.length)+" "+player.leftMouseDown,100,100); + g.drawImage(bomb,20,20,35,35,null); + g.drawString("X"+LevelManager.bombs,60,40); if (isPaused) { g.setColor(new Color(255, 255, 255, 100)); g.fillRect(0, 0, GAME_WIDTH, GAME_HEIGHT); diff --git a/src/LevelManager.java b/src/LevelManager.java index 137a9b3..20a5b14 100644 --- a/src/LevelManager.java +++ b/src/LevelManager.java @@ -8,20 +8,27 @@ public class LevelManager { public static int ySpawn = 600; public static String filePath; + + public static int bombs; public static void setLevel(int level){ + GamePanel.player.yVelocity = 0; + GamePanel.player.xVelocity = 0; LevelManager.level = level; if(level == 1){ xSpawn = 0; ySpawn = 300; filePath = "saves/Level1.txt"; + bombs = 99999; } else if(level == 2){ xSpawn = 200; ySpawn = 0; filePath = "saves/Level2.txt"; + bombs = 2; } else if(level == 3){ xSpawn = 200; ySpawn = 0; filePath = "saves/Level3.txt"; + bombs = 99329; } try { MapReader.inputMap(filePath); @@ -32,7 +39,7 @@ public class LevelManager { } catch (LineUnavailableException e) { throw new RuntimeException(e); } - GamePanel.player.reset(); + //GamePanel.player.reset(); } public static void nextLevel(){ setLevel(level+1); diff --git a/src/MapReader.java b/src/MapReader.java index 97c4284..8585ad6 100644 --- a/src/MapReader.java +++ b/src/MapReader.java @@ -59,7 +59,6 @@ public class MapReader { newTile("img/tiles/terrain/grassMiddleLeft.png"); } else if(file.charAt(i)=='s'){ newTile("img/tiles/terrain/grassCenter.png"); - GamePanel.map[x][y].collision = false; } else if(file.charAt(i)=='d'){ newTile("img/tiles/terrain/grassMiddleRight.png"); } else if(file.charAt(i)=='z'){ @@ -78,7 +77,7 @@ public class MapReader { newTile("img/tiles/terrain/cornerBottomRight.png"); } else if(file.charAt(i)=='b'){ newTile("img/tiles/boxes/box.png"); - GamePanel.map[x][y].collision = false; + GamePanel.map[x][y].breakable = true; } else if(file.charAt(i)=='!'){ GamePanel.enemy.add(new NonPlayer(TileX, TileY, GamePanel.slimeSpriteArray, 50, 28, 100)); diff --git a/src/Player.java b/src/Player.java index de9b561..341cdc9 100644 --- a/src/Player.java +++ b/src/Player.java @@ -104,6 +104,7 @@ public class Player extends GenericSprite { if (collide(GamePanel.map[i][j], this.x + x, this.y + y)) { if (GamePanel.map[i][j].isFinish) { LevelManager.nextLevel(); + GamePanel.player.reset(); return true; } if (GamePanel.map[i][j].kills) { @@ -204,6 +205,7 @@ public class Player extends GenericSprite { } public void reset(){ + LevelManager.setLevel(LevelManager.level); GamePanel.camera.x = LevelManager.xSpawn; y = LevelManager.ySpawn; } @@ -228,7 +230,8 @@ public class Player extends GenericSprite { mouseY = e.getY(); if(e.getButton()==MouseEvent.BUTTON1) { leftMouseDown = false; - if (GamePanel.bombs.size() < 3) { + if (GamePanel.bombs.size() < 3 && LevelManager.bombs>0) { + LevelManager.bombs--; GamePanel.bombs.add(new StickyBomb(GamePanel.player.x + GamePanel.camera.x + WIDTH/2, GamePanel.player.y+HEIGHT/2, (mouseX - GamePanel.player.x) / 20, (mouseY - GamePanel.player.y) / 10, GamePanel.bomb, GamePanel.explosionArray)); } @@ -241,7 +244,7 @@ public class Player extends GenericSprite { } } public int draw(Graphics g, int frame) { - g.drawString(mouseX+" "+mouseY, 300, 300); + //g.drawString(mouseX+" "+mouseY, 300, 300); frame %= spriteArray[0][0].length; if (!upPressed && !downPressed && !leftPressed && !rightPressed) { g.drawImage(spriteArray[lastXDirection][lastYDirection][0], x-10, y, null); diff --git a/src/StickyBomb.java b/src/StickyBomb.java index 94c0e54..1472049 100644 --- a/src/StickyBomb.java +++ b/src/StickyBomb.java @@ -66,6 +66,23 @@ public class StickyBomb extends GenericSprite{ } } + int lowX = Math.max(0, ((x+GamePanel.GAME_WIDTH)/Tile.length)-4); + int highX = Math.min(lowX + 8, GamePanel.map.length); + int lowY = Math.max(0,(this.y/Tile.length)-6); + int highY = Math.min(lowY + 12, GamePanel.map[0].length); + for(int i=0; i<100; i++) { + for (int j = lowY; j < highY; j++) { + if (GamePanel.map[i][j] != null && GamePanel.map[i][j].breakable) { + double disX = (x + WIDTH / 2) - (GamePanel.map[i][j].x + Tile.length / 2); + double disY = (y + HEIGHT / 2) - (GamePanel.map[i][j].y + Tile.length / 2); + if (Math.sqrt(disX * disX + disY * disY) < Tile.length * 5) { + GamePanel.map[i][j] = null; + } + } + } + } + + } public boolean collide(Tile tile, double x, double y){ diff --git a/src/Tile.java b/src/Tile.java index a1979d5..4c02e5c 100644 --- a/src/Tile.java +++ b/src/Tile.java @@ -11,6 +11,8 @@ public class Tile { public boolean isFinish; public boolean kills; + + public boolean breakable; public int realX; public static final int length = 35; public Tile(int x, int y){ @@ -20,6 +22,7 @@ public class Tile { this.x = x; this.y = y; nonBombCollide = false; + breakable = false; } public void update(){ realX = x-GamePanel.camera.x;