Java LWJGL 2D瓦片游戏使用超过50MB的内存一秒

Java LWJGL 2D瓦片游戏使用超过50MB的内存一秒,java,2d,lwjgl,tile,Java,2d,Lwjgl,Tile,所以我是一个相对较新的编程人员,我正在尝试使用LWJGL制作2D游戏。我已经用数组列表中的瓷砖制作了一个背景图,然后更新必要的东西,比如播放器等,然后将它们绘制到屏幕上,并更新屏幕。我见过其他人这样做很好,但每当我这样做的时候,它几乎每秒都会消耗100 mb的内存,如果游戏运行30秒或更少,就会导致我的电脑冻结。我不确定是绘图导致了内存使用还是其他原因,我已经检查过确保没有代码在我不知道的情况下运行,如果有人告诉我是什么问题,那就太好了。我已经提供了我的游戏中使用的主要类,总共有10个,但我只显

所以我是一个相对较新的编程人员,我正在尝试使用LWJGL制作2D游戏。我已经用数组列表中的瓷砖制作了一个背景图,然后更新必要的东西,比如播放器等,然后将它们绘制到屏幕上,并更新屏幕。我见过其他人这样做很好,但每当我这样做的时候,它几乎每秒都会消耗100 mb的内存,如果游戏运行30秒或更少,就会导致我的电脑冻结。我不确定是绘图导致了内存使用还是其他原因,我已经检查过确保没有代码在我不知道的情况下运行,如果有人告诉我是什么问题,那就太好了。我已经提供了我的游戏中使用的主要类,总共有10个,但我只显示了3个,因为我认为这足以得到我的观点。我知道有些代码可能看起来更好,但正如我所说,我对所有这些都是新手。谢谢大家!

引导类

公共类引导{

public Boot() {
    beginSession();

    tile menu = new tile(0, 0, 1024, 1024, TileType.Menu);
    tile outline = new tile(0, 0, 395, 96, TileType.Outline);
    Display.sync(60);
    while (!Display.isCloseRequested()) {
        System.out.println("MENU");
        menu.Draw();
        if (Display.isCloseRequested()) {
            Display.destroy();
        }
        if (Mouse.getX() > 380 && Mouse.getX() < 650 && Mouse.getY() < 320 && Mouse.getY() > 250) {
            outline.setX(322);
            outline.setY(305);
            outline.Draw();
        }
        if (Mouse.isButtonDown(0) && Mouse.getX() > 380 && Mouse.getX() < 650 && Mouse.getY() < 320 && Mouse.getY() > 250) {
            new Play();

        }
        if (Mouse.getX() > 340 && Mouse.getX() < 700 && Mouse.getY() < 210 && Mouse.getY() > 130) {
            outline.setX(322);
            outline.setY(425);
            outline.Draw();
        }

        if (Mouse.isButtonDown(0) && Mouse.getX() > 340 && Mouse.getX() < 700 && Mouse.getY() < 210 && Mouse.getY() > 130) {
            new About();
        }
        Display.update();
    }
}

public static void main(String[] args) {
    new Boot();
}
public Boot(){
beginSession();
平铺菜单=新平铺(0,0,1024,1024,TileType.menu);
瓷砖轮廓=新瓷砖(0,0,395,96,TileType.outline);
显示同步(60);
而(!Display.isCloseRequested()){
System.out.println(“菜单”);
menu.Draw();
if(Display.isCloseRequested()){
Display.destroy();
}
if(Mouse.getX()>380&&Mouse.getX()<650&&Mouse.getY()<320&&Mouse.getY()>250){
大纲.setX(322);
大纲:塞蒂(305);
outline.Draw();
}
if(Mouse.isButtonDown(0)和&Mouse.getX()>380和&Mouse.getX()<650和&Mouse.getY()<320和&Mouse.getY()>250){
新剧();
}
if(Mouse.getX()>340&&Mouse.getX()<700&&Mouse.getY()<210&&Mouse.getY()>130){
大纲.setX(322);
大纲:塞蒂(425);
outline.Draw();
}
if(Mouse.isButtonDown(0)和&Mouse.getX()>340和&Mouse.getX()<700和&Mouse.getY()<210和&Mouse.getY()>130){
关于()的新信息;
}
Display.update();
}
}
公共静态void main(字符串[]args){
新启动();
}
}

游戏课`

公演{

public Play() {
    //@formatter:off
    //MAPS//
    int[][] map0 = { 
            { 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 0, 6, 6, 6, 6, 6, 0, 6, 6, 6, 0, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, };

    int[][] map1 = {
            { 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6 },
            { 0, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6 }, };

    int[][] map2 = { 
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 0, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 0, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 0 }, };

    int[][] map3 = {
            { 6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 0, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
            { 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 },
            { 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 },
            { 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 }, };
    //MAP FOUR//
    int[][] map3left1 = {
            { 6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 0, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
            { 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 },
            { 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 },
            { 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 }, };
    //MAP FIVE//
    int[][] map3left2 = {
            { 6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 0, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
            { 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 },
            { 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 },
            { 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 }, };
    //MAP SIX//
    int[][] map3left3 = {
            { 6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 0, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6 },
            { 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
            { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
            { 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 },
            { 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 },
            { 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 }, };
    //@formatter:on

    TileGrid grid0 = new TileGrid(map0);
    TileGrid grid1 = new TileGrid(map1);
    TileGrid grid2 = new TileGrid(map2);
    TileGrid grid3 = new TileGrid(map3);
    TileGrid grid3left1 = new TileGrid(map3left1);
    TileGrid grid3left2 = new TileGrid(map3left2);
    TileGrid grid3left3 = new TileGrid(map3left3);

    // ALL TILES IN GAME THAT ARE ALWAYS NEEDED GO HERE//
    Asteriod a = new Asteriod(quickLoad("asteriodfour"), -100, 0, grid0, 64, 64, 10, 100);
    Lander l = new Lander(quickLoad("LunarLander"), grid0.getTile(7, 0), grid0, 240, 228, 0, 0);
    Wave wave = new Wave(15, a);
    Astronaut player = new Astronaut(quickLoad("astronaut"), l.getX(), 310, 256, 256);

    // LADNING THE LANDER//
    while (l.isLanded() == false) {
        Display.sync(60);
        gridType = 3;
        if (Display.isCloseRequested()) {
            Display.destroy();
        }

        switch (l.getMapType()) {
        case 0:
            grid0.Draw();
            break;
        case 1:
            grid1.Draw();
            break;
        case 2:
            grid2.Draw();
            break;
        case 3:
            grid3.Draw();
            break;
        }

        l.Draw();
        l.UpdateLander();

        if (l.isLanded() == false && l.isFirst()) {
            wave.UpdateAsteroid();
        } else {
            wave.getAsteriodList().clear();
        }

        if (wave.getColY() > 390 && l.getMapType() == 3) {
            wave.getAsteriodList().clear();
        }

        if (l.getX() - wave.getColX() < 35 && wave.getColX() - l.getX() < 95 && l.getY() - wave.getColY() < 35 && wave.getColY() - l.getY() < 200) {
            wave.explodeAsteroid();
            l.takeDamage();
        }

        Display.update();
    }
    onMoon = true;

    // PLAYER EVERYTHING//
    while (onMoon == true) {
        Display.sync(60);
        if (Display.isCloseRequested()) {
            Display.destroy();
        }


        if (player.getX() < 5 && gridType == 3) {
            gridType = 4;
            player.setX(1000);
        } 

        switch (gridType) {
        case 3: 
            grid3.Draw();
            l.Draw();
            l.UpdateLander();
            break;

        case 4 :
            grid3left1.Draw();
        }

        player.Draw();
        player.UpdateAstronaut();

        if (player.isLeft() == true) {
            player.setTexture(quickLoad("astronaut"));
        } else {
            player.setTexture(quickLoad("astronautRight"));
        }

        Display.update();
    }

}
publicplay(){
//@格式化程序:关闭
//地图//
int[]map0={
{ 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
{ 6, 0, 6, 6, 6, 6, 6, 0, 6, 6, 6, 0, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0 },
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, };
int[]map1={
{ 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6 },
{ 0, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6 },
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6 }, };
int[]map2={
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
{ 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6 },
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 0, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
{ 6, 0, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 0 }, };
int[]map3={
{ 6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 0, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 },
{ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 },
{ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 }, };
//地图四//
int[]map3left1={
{ 6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 0, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 },
{ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 },
{ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 }, };
//地图五//
int[]map3left2={
{ 6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 0, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 0
public Lander(Texture texture, tile startTile, TileGrid grid, int width, int height, float speed, int angle) {
    this.texture = texture;
    this.x = startTile.getX();
    this.y = startTile.getY();
    this.width = width;
    this.height = height;
    this.angle = angle;
}

public void Draw() {
    drawQuadTexRotate(texture, x, y, width, height, angle);
}

//UPDATES LANDER//
public void UpdateLander() {

    tile forceField = new tile(685, 510, 256, 32, TileType.ForceField);
    tile forceFieldOff = new tile(745, offY, 64, 32, TileType.Off);
    tile forceFieldOn = new tile(755, onY, 32, 32, TileType.On);
    tile battery = new tile(13 * 64, 8 * 64, 96, 96, TileType.Battery8);
    tile outOfFuel = new tile(820, 480, outOfFuelX, 32, TileType.OutOfFuel);

    forceField.Draw();
    forceFieldOn.Draw();
    forceFieldOff.Draw();
    battery.setTexture(quickLoad(percentage()));
    outOfFuel.Draw();
    battery.Draw();

    screenMove();
    landerHealth();

    if (landed == false)
        y = (float) (y + 1.4);

    if (canMove == true) {
        if (Keyboard.isKeyDown(Keyboard.KEY_A)) {
            x -= 1;
            if (angle > -35) {
                angle -= 0.2;
            }
            fuelUsed += 0.1;
            if (fuelUsed > 70) {
                fuelLeft -= 1;
                fuelUsed = 0;
            }
        }

        if (Keyboard.isKeyDown(Keyboard.KEY_W)) {
            y -= 0.6;
            fuelUsed += 0.1;
            if (fuelUsed > 70) {
                fuelLeft -= 1;
                fuelUsed = 0;
            }

        }
        if (Keyboard.isKeyDown(Keyboard.KEY_D)) {
            if (angle < 25) {
                angle += 0.2;
            }
            x += 1;
            fuelUsed += 0.1;
            if (fuelUsed > 70) {
                fuelLeft -= 1;
                fuelUsed = 0;
            }

        }
        if (fuelLeft < 0.1) {
            outOfFuelX = 170;
            canMove = false;
        }
    }
}


//LANDER HEALTH ONLY RAN WHEN UPDATED//
public void landerHealth() {

    tile h = new tile(680, 540, 180, 96, TileType.Health100);

    if (health < 90 && health > 80) {
        h.setTexture(quickLoad("health90"));
        h.Draw();
    }
    if (health < 80 && health > 70) {
        h.setTexture(quickLoad("health80"));
        h.Draw();
    }
    if (health < 70 && health > 60) {
        h.setTexture(quickLoad("health70"));
        h.Draw();
    }
    if (health < 60 && health > 50) {
        h.setTexture(quickLoad("health60"));
        h.Draw();
    }
    if (health < 50 && health > 40) {
        h.setTexture(quickLoad("health50"));
        h.Draw();
    }
    if (health < 40 && health > 30) {
        h.setTexture(quickLoad("health40"));
        h.Draw();
    }
    if (health < 30 && health > 20) {
        h.setTexture(quickLoad("health30"));
        h.Draw();
    }
    if (health < 20 && health > 10) {
        h.setTexture(quickLoad("health20"));
        h.Draw();
    }
    if (health < 10 && health > 0) {
        h.setTexture(quickLoad("health10"));
        h.Draw();
    }
    if (health <= 0) {
        h.setTexture(quickLoad("health0"));
        h.Draw();
        landerExplode();
        canMove = false;
    }
    h.Draw();
}


//SCREEN MOVE ONLY RAN WHEN UPDATED//
public void screenMove() {
    System.out.println("SCREEN MOVE");
    if (landed == false) {
        if (y > 500 && mapType < 3) {
            mapType++;
            y -= 650;
        }
        if (mapType == 3) {
            if (y < 230 && y > 226 && angle < 4 && angle > -4) {

                canMove = false;
                landed = true;
                eX2 = x - 15;
                eY2 = y - 15;
                offY = 2000;
                onY = 540;

            }
            if (y > 234 && (angle > 4 || angle < -4)) {
                landerExplode();
            }
        }
    }
}


//ONLY RAN WHEN UPDATED, DEATH SCREEN NEEDED//
public void landerExplode() {
    if (landerExplodeCounter < 850) {
        if (first) {
            eX1 = x;
            eX2 = x - 15;
            eX3 = x;
            eY1 = y;
            eY2 = y - 15;
            eY3 = y;
            x = 2000;
            first = false;
        }
        System.out.println("EX");
        landerExplodeCounter++;
        tile landerp1 = new tile(x, y, 240, 228, TileType.LanderPart1);
        tile landerp2 = new tile(x, y, 240, 228, TileType.LanderPart2);
        tile landerp3 = new tile(x, y, 240, 228, TileType.LanderPart3);
        landerp1.setX(eX1 -= 0.7);
        landerp1.setY(eY1 -= 0.4);
        landerp2.setX(eX2 += 0.5);
        landerp2.setY(eY2 -= 0.2);
        landerp3.setX(eX3 -= 0.1);
        landerp3.setY(eY3 += 0.8);
        landerp1.Draw();
        landerp2.Draw();
        landerp3.Draw();

    }
}

//ONLY RAN WHEN UPDATED//
public void takeDamage() {
    System.out.println("TAKE DAMAGE");
    if (landed == false) {
        health = (float) (health - 5.5);
        System.out.println(health);
    }
}

//ONLY RAN WHEN UPDATED//
private String percentage() {
    System.out.println("PERCENTAGE");
    String name = "Battery";
    switch (fuelLeft) {
    case 8:
        name = name + "8";
        break;
    case 7:
        name = name + "7";
        break;
    case 6:
        name = name + "6";
        break;
    case 5:
        name = name + "5";
        break;
    case 4:
        name = name + "4";
        break;
    case 3:
        name = name + "3";
        break;
    case 2:
        name = name + "2";
        break;
    case 1:
        name = name + "1";
        break;
    case 0:
        name = name + "0";
        break;
    }
    return name;
}