我目前正在用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游戏无法再次启动并赢得=假。我说它第一次运行。有没有办法以更有效的方式运作?
提前谢谢。