Установка точки появления игрока в Java - PullRequest
0 голосов
/ 25 апреля 2020

Я недавно начал программировать свою собственную игру и не могу найти решение. В моем maploader берет два int из документа .txt, SpawnX и SpawnY, но я не могу понять, как я передаю это игроку. Мои попытки закончились тем, что я не смог управлять своим игроком, потому что он снова и снова становился на одну и ту же позицию. Так как же позволить игроку использовать целые числа только один раз? Ты заранее

Player class:
package entitys;



public Player(Handler handler, float x, float y) {
    super(handler, x, y, Creature.DEFAULT_CREATURE_WIDTH, Creature.DEFAULT_CREATURE_HEIGHT);

bounds.x = 6;
bounds.y = 0;
bounds.width = 52;
bounds.height = 64;

}

@Override
public void tick() {
    getInput();
    move();
    handler.getCamera().centerOnEntity(this);
}

private void getInput() {
    xMove = 0;
    yMove = 0;

    if (handler.getKeyManager().up)
        yMove = -speed;
    if (handler.getKeyManager().down)
        yMove = speed;
    if (handler.getKeyManager().left)
        xMove = -speed;
    if (handler.getKeyManager().right)
        xMove = speed;

}

@Override
public void render(Graphics g) {
    g.drawImage(Assets.player, (int) (x - handler.getCamera().getxOffset()), (int) (y - handler.getCamera().getyOffset()), width, height, null);

    g.setColor(Color.red);
    g.drawRect((int) (x + bounds.x - handler.getCamera().getxOffset()),
            (int) (y + bounds.y - handler.getCamera().getyOffset()),
            bounds.width, bounds.height);
    if(handler.getKeyManager().debug) {
        g.drawRect(0,0,width,height);
    }
}


World class:
public class Welt {

private Handler handler;
private int width, height;
private int spawnX, spawnY;
private int [][] tiles;

public Welt(Handler handler, String path){
    this.handler = handler;
    ladeWelt(path);
}

public void tick(){

}

public void render(Graphics g){
    for(int y = 0; y < height; y++){
        for (int x = 0; x < width; x++){

            getTile(x, y).render(g, (int)(x * Tile.TILEWIDTH - handler.getCamera().getxOffset()), (int)(y * Tile.TILEHEIGHT - handler.getCamera().getyOffset()));

        }
    }
}
public Tile getTile(int x, int y){
    if(x < 0 || y < 0 || x >= width || y >= height)
        return Tile.boden;

    Tile t = Tile.tiles[tiles[x][y]];
    if(t == null)
        return Tile.boden;
    return t;
}



private void ladeWelt(String path){
    String file = Utils.loadFileAsString(path);
    String[] tokens = file.split("\\s+");
    width = Utils.parseInt(tokens[0]);
    height = Utils.parseInt(tokens[1]);
    spawnX = Utils.parseInt(tokens[2]);
    spawnY = Utils.parseInt(tokens[3]);

    tiles = new int[width] [height];
    for (int y = 0;y < height; y++){
        for (int x = 0; x < width; x++){
            tiles[x][y] = Utils.parseInt(tokens[(x + y * width) + 4]);
        }
    }
}
public void setSpawnX(int spawnX) {
    this.spawnX = spawnX;
}

public void setSpawnY(int spawnY) {
    this.spawnY = spawnY;
}

public int getSpawnX() {
    return spawnX;
}

public int getSpawnY() {
    return spawnY;
}

}

...