java - 不会画瓷砖?

标签 java

嗯,我正在用 java 制作一个相对简单的平台游戏,我有一个生成关卡的方法,但图 block 不会绘制。

public void generateDungeon() {
    int y = 30;
    for(int x = 0; x < block[0].length; x++) {
        block[x][y] = new Block(new Rectangle(x * Tile.tileSize, y *      Tile.tileSize, Tile.tileSize, Tile.tileSize), Tile.basic);
    }
}

我希望 Y 保持不变,因此它有一个设定值。

这就是我认为问题所在的地方,但这是控制台消息

Exception in thread "Thread-2" java.lang.NullPointerException
at mineandbuild.Player.isCollidingWithBlock(Player.java:82)
at mineandbuild.Player.tick(Player.java:22)
at mineandbuild.Component.tick(Component.java:89)
at mineandbuild.Component.run(Component.java:110)
at java.lang.Thread.run(Unknown Source)

控制台说问题出在这行代码:

public boolean isCollidingWithBlock(Point pt1, Point pt2) {     
    for(int x = (int) (this.x / Tile.tileSize); x < (int) (this.x / Tile.tileSize  + 3); x++) {
        for(int y = (int) (this.y / Tile.tileSize); y < (int) (this.y / Tile.tileSize  + 3); y++) {
            if(x >= 0 && y >= 0 && x < Component.dungeon.block.length && y < Component.dungeon.block[0].length)
This line --->  if(Component.dungeon.block[x][y].id != Tile.air) {
                if(Component.dungeon.block[x][y].contains(pt1) || Component.dungeon.block[x][y].contains(pt2)) {
                    return true;
                }
            }
        }
    }

    return false;
}

谢谢!

最佳答案

尝试打印出 x 和 y 值

if(Component.dungeon.block[x][y].id != Tile.air) {

你说在 y 的值之前的代码中应该保持相同,这意味着对于二维数组中 y 的每个其他索引,它们都设置为 null,但在 forloop 中你有这个

for(int y = (int) (this.y / Tile.tileSize); y < (int) (this.y / Tile.tileSize  + 3); y++) {

这让我相信您正在尝试访问空索引,然后尝试访问“id”字段,但该对象不存在。

关于java - 不会画瓷砖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12444247/

相关文章:

java - JTabbedPane 对齐组件

java - 如何从服务器读取文本文件并在 index.jsp 中显示文本

java - 我将如何在 mac 终端中编译这个在 Eclipse 中创建的 java 项目目录?

java - 从另一个列表更新列表

java - 在没有 HATEOAS 的情况下获得响应的最佳方式是什么?

java - 使用 Sonar 扫描仪扫描项目时出错

java - 是否有更好的方法对由 128 个合法 ASCII 字符组成的字符串进行哈希排列?

java - Gradle-如何将目录/jar文件库从根项目引用到子项目以进行依赖

java - DatagramSocket.send 线程安全吗?

java - Struts 2 项目是在 My Eclipse 中构建的,但未部署在 Tomcat 服务器上