簡體   English   中英

在 java 中將我的角色設置為正確的顏色像素時出錯

[英]Error in setting my character in the right color pixel in java

我在嘗試將我的角色設置為在 java 中的 map 工作表中的正確顏色點中生成時遇到一些問題。在我正在觀看以了解這一點的視頻中,我的每一行代碼都與視頻相同,但我的角色而不是spawning in the right spot 是在屏幕的中上角生成。

我正在使用這些代碼行讓他和所有 Tiles 和 Entities 在正確的位置生成:

public class World {
    
    private Tile[] tiles;
    public static int WIDTH,HEIGHT;

    public World(String path) {
        try {
            BufferedImage map = ImageIO.read(getClass().getResource(path));
            int[] pixels = new int[map.getWidth() * map.getHeight()];
            WIDTH = map.getWidth();
            HEIGHT = map.getHeight();
            tiles = new Tile[map.getWidth() * map.getHeight()];
            map.getRGB(0, 0, map.getWidth(), map.getHeight(), pixels, 0, map.getWidth());
            for(int xx = 0; xx < map.getWidth(); xx++) {
                for(int yy = 0; yy < map.getHeight(); yy++) {
                    int pixelAtual = pixels[xx + (yy*map.getWidth())];
                    tiles[xx + (yy * WIDTH)] = new FloorTile(xx*16,yy*16, Tile.TILE_FLOOR);
                    if(pixelAtual == 0xFF000000) {
                        //FLOOR
                        tiles[xx + (yy * WIDTH)] = new FloorTile(xx*16,yy*16, Tile.TILE_FLOOR);
                    }else if(pixelAtual == 0xFFFFFFFF){
                        //PAREDE
                        tiles[xx + (yy * WIDTH)] = new FloorTile(xx*16,yy*16, Tile.TILE_WALL);

                    }else if(pixelAtual == 0xFF0026FF) {
                        //Player    
                        Game.player.setX(xx*16);
                        Game.player.setY(yy*16);
                    }else if(pixelAtual == 0xFFFF0000){
                        //Enemy
                        
                    }else if(pixelAtual == 0xFFFF00DC) {
                        //WEAPON
                        
                    }else if(pixelAtual == 0xFFFF7F7F) {
                        //LIFEPACK
                        
                    }else if(pixelAtual == 0xFFFFD800) {
                        //BULLET
                        
                    }
                    
                    
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    public void render(Graphics g) {
        for(int xx = 0; xx < WIDTH; xx++) {
            for(int yy = 0; yy < HEIGHT; yy++) {
                Tile tile = tiles[xx + (yy*WIDTH)];
                tile.render(g);
            }
        }
    }
    
}

但是,當我使用來自我的實體 Class 的這兩行代碼時,它們應該讓我的角色在正確的位置生成,但它根本不起作用!


Game.player.setX(xx 16); Game.player.setY(yy 16);


這是我的實體 Class 供您查看我是否做錯了什么,再一次,我所做的一切都與視頻中的視頻完全一樣,並且在視頻中有效。

public class Entity {

    public static BufferedImage LIFEPACK_EN = Game.spritesheet.getSprite(78, 0, 16, 16);
    public static BufferedImage WEAPON_EN = Game.spritesheet.getSprite(96, 0, 16, 16);
    public static BufferedImage BULLET_EN = Game.spritesheet.getSprite(78, 16, 16, 16);
    public static BufferedImage ENEMY_EN = Game.spritesheet.getSprite(96, 16, 16, 16);
    
    protected double x;
    protected double y;
    protected int width;
    protected int height;
    
    private BufferedImage sprite;
    
    public Entity(int x, int y, int width, int height, BufferedImage sprite) {
        this.x = x;
        this.y = y;
        this.width = width;
        this.height = height;
        this.sprite = sprite;
    }
    
    public void setX(int newX) {
        this.x = newX;
    }
    
    public void setY(int newY) {
        this.x = newY;
    }
    
    public int getX() {
        return (int)this.x;
    }
    
    public int getY() {
        return (int)this.y;
    }
    
    public int getWidth() {
        return this.width;
    }
    
    public int getHeight() {
        return this.height;
    }
    
    public void update() {
        
    }
    
    public void render(Graphics g) {
        g.drawImage(sprite, this.getX(), this.getY(), null);
    }
}

請幫助我,謝謝! 聖誕快樂!

我看到我錯了。

public void setY(int newY) {
    this.x = newY;

在這里的這一行代碼中,它應該是“this.y”,我認為我做到了,但我沒看到。

最后:我是個白痴,祝大家新年快樂!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM