Я недавно начал программировать свою собственную игру и не могу найти решение. В моем 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;
}
}