Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Ошибка в java. Не показывает плитки

Dmm Dds Ученик (150), на голосовании 4 месяца назад
проще говоря, вот. Джава ругается на изображение, хотя все пути в норме. Вот код: package tile;
Дополнен 5 месяцев назад
import java.awt.Graphics 2D;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;



import javax.imageio.ImageIO;



import main.GamePanel;



public class TileManager {



GamePanel gp;

Tile[] tile;

int mapTileNum[][];



public TileManager(GamePanel gp) {



this.gp = gp;



tile = new Tile[10];

mapTileNum = new int[gp.maxScreenCol] [gp.maxScreenRow];



getTileImage();

loadMap("/maps/worldmap.txt");

}



public void getTileImage() {



try {



tile[0] = new Tile();

tile[0].image = ImageIO.read(getClass().getResourceAsStream("/tiles/grass.png"));



tile[1] = new Tile();

tile[1].image = ImageIO.read(getClass().getResourceAsStream("/tiles/wall.png"));



tile[2] = new Tile();

tile[2].image = ImageIO.read(getClass().getResourceAsStream("/tiles/water.png"));







}catch(IOException e) {

e.printStackTrace();

}



}



public void loadMap(String filePath) {





try {



InputStream is = getClass().getResourceAsStream(filePath);

BufferedReader br = new BufferedReader(new InputStreamReader(is));



int col = 0;

int row = 0;
Голосование за лучший ответ
Андрей Панарин Искусственный Интеллект (249212) 5 месяцев назад
В стектрейсе всё написано: не может обратиться к полю image объекта this.tile[tileNum], потому что этот объект равен null.

Проблема в классе TileManager, строчка 101.
Можно это место и весь этот метод поподробнее?

Крупные куски кода можете заливать на pastebin.com и присылать сюда ссылку.
Dmm DdsУченик (150) 5 месяцев назад
то есть он не может это прочитать?
Андрей Панарин Искусственный Интеллект (249212) Похоже, что в массиве tile заполнены не все ячейки. В некоторых значение null. А у значений null нельзя обращаться к полям и вызывать методы. Выше в вопросе я вижу такой код:
 tile = new Tile[10]; 
Всего 10 тайлов с индексами 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Заполняются только три из них - 0, 1, 2:
 tile[0] = new Tile();   
tile[0].image = ImageIO.read(getClass().getResourceAsStream("/tiles/grass.png"));   
 
tile[1] = new Tile();   
tile[1].image = ImageIO.read(getClass().getResourceAsStream("/tiles/wall.png"));   
 
tile[2] = new Tile();   
tile[2].image = ImageIO.read(getClass().getResourceAsStream("/tiles/water.png"));   
В проблемном месте в качестве индекса берется tileNum:
 int tileNum = mapTileNum[col][row]; 
Есть ли в mapTileNum числа, отличные от 0, 1 и 2? Как карта заполняется в loadMap?
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (263832) 5 месяцев назад
loadMap(String filePath) обрезана
Dmm DdsУченик (150) 5 месяцев назад
в плане обрезана?
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (263832) Dmm Dds, у тебя код неполный приведен
Похожие вопросы