我试图返回一个x和y值来设置我的游戏中的实体。我在这里错过了什么?

时间:2014-09-04 00:09:00

标签: java game-engine

我正在尝试将播放器的生成点设置为特定的磁贴,但我不知道如何实现。以下是相关代码:

来自玩家类:

public Player(Level level, int x, int y, InputHandler input) {
    super(level, "Player", x, y, 1);
    this.input = input;
}

来自Game class:

public int spawnX = Level.getSpawnTileX();
public int spawnY = Level.getSpawnTileY(getY());

这是在我的init()中:

player = new Player(level, spawnX, spawnY, input);

这是我的Level课程:

public static int getSpawnTileX(int x){
    for(int y = 0; y < height; y++){
        for(int x1 = 0; x1 < width; x1++){
            for(Tile t : Tile.tiles){
            if(t.getLevelColor() == 0xff00ff00){
                return x1;                  
            }else{
                return 0;
            }
            }
        }
    }
    return x;
}
public static int getSpawnTileY(int y){
    for(int x = 0; x < width; x++){
        for(int y1 = 0; y1 < height; y1++){
            for(Tile t : Tile.tiles){
            if(t != null && t.getLevelColor() == 0xff00ff00){
                return y1;
            }else{
                return 0;
            }
            }
        }
    }
    return y;
}

这来自我的Tile课程:

public static final Tile SPAWN = new BasicTile(3, 3, 0, Colors.get(-1, 141, 131, -1), 0xffff0000);
public int getLevelColor(){
    return levelColor;
}

瓷砖类:

public abstract class Tile {

public static final Tile[] tiles = new Tile[256];
public static final Tile VOID = new BasicSolidTile(0, 0, 0, Colors.get(000, -1, -1, -1), 0xff000000);
public static final Tile STONE = new BasicSolidTile(1, 1, 0, Colors.get(-1, 333, -1, -1), 0xff555555);
public static final Tile GRASS = new BasicTile(2, 2, 0, Colors.get(-1, 131, 141, -1), 0xff00ff00);
public static final Tile SPAWN = new BasicTile(3, 3, 0, Colors.get(-1, 141, 131, -1), 0xffff0000);

如果需要更多代码进行澄清,我很乐意尝试提供。对此有任何帮助非常感谢。

1 个答案:

答案 0 :(得分:1)

您的问题在这里:

        for(Tile t : Tile.tiles){
        if(t.getLevelColor() == 0xff00ff00){
            return x1;                  
        }else{
            return 0;
        }
        }

应该是这样的:

        for(Tile t : Tile.tiles){
        if(t.getLevelColor() == 0xff00ff00){
            return x1;                  
        }
        }

问题是它只检查Tile.tiles中的第一个值。如果它不是正确的值,它会立即返回0.我上面显示的更改使它实际上继续,并检查其余的图块。