在Java中的gameLoop期间更改TileMap

时间:2014-02-24 19:40:10

标签: java tile

我目前正在用java创建游戏,但我已经走到了尽头。我的游戏是一个简单的2D射击游戏,借助TileMap (。txt)来创建“游戏场”或“迷宫”。我现在所处的位置是你赢了(消灭敌人),当前的TileMap应该改为下一个。我目前使用的系统有效,但只有地图1到2而不是2到3.

这是我到目前为止所得到的。

public class Frame extends JFrame implements KeyListener {

Hero hero;
    int lvl = 0;
    [...]
    won = false;
    String[] Maze = {"maze1", "maze2", "maze3", "maze4"};
    [...]

    public Frame(){

        Frame options
        [...]

        addKeyListener(this);

        gameLoop();

        if(won){

            if(GameState.ENEMIE_LIFE < 1)
                GameState.ENEMIE_LIFE = 1;

            gameLoop();

            won = false;

        }

    }

public void gameLoop(){

    map = new Maze(Maze[lvl]);

    try {
        map.createMaze();
    } catch (IOException e1) {
        e1.printStackTrace();
    }

    bullets = map.getBullets();
    hero = map.getPlayer();
    enemy = map.getGhosts();

    while(GameState.going()){

        updateScreen();

        map.isCollision();

        collision();

        [...]

        try {
            Thread.sleep(20);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

    }

public class GameState {

static int ENEMIE_LIFE = 1;
static int HERO_LIFES = 1;
static int HERO_AMMO = 20;

public static boolean going(){

    if(HERO_LIFES > 0 && ENEMIE_LIFE > 0)
        return true;
    else 
        return false;
}

}

如您所见,textFiles位于String数组中,而在Frame构造函数中,则创建了gameLoop。我有我的if / else声明。

if(enemy.isEmpty()){
    won = true;

    GameState.ENEMIE_LIFE--;

    lvl++;
}

这个if语句是为了控制敌人被摧毁的时候。 GameState.ENEMIE_LIFE是separete类中的静态int变量。我似乎遇到的问题是特定变量不希望在第一次之后增加。

当敌人消失时,boolean won = true,GameState.ENEMIE_LIFE = 0和lvl ++(增加确定迷宫数组索引的int。如你所知,当won = true时GameState.ENEMIE_LIFES = 1且gameLoop为设置为重新开始。但是如果GameState.ENEMIE_LIFE == 0游戏无法再次启动并赢得=假。我说它第一次运行。有没有办法以更有效的方式运作?

提前谢谢。

0 个答案:

没有答案