2D滚动游戏:射击子弹。一切都运行正常,没有图像

时间:2013-10-08 22:28:34

标签: java 2d-games

所以开始使用一些代码。我首先创建了一个名为Bullet的类。这是应该加载图像的地方。

package gameLibrary;

import java.awt.*;
import javax.swing.ImageIcon;

public class Bullet {

    int x,y;
    Image img;
    boolean visible;

    public Bullet(int startX, int startY) {
        x = startX;
        y = startY;

        ImageIcon newBullet = new ImageIcon("/resources/bullet.png");
        img = newBullet.getImage();
        System.out.println("constructor Bullet is called");
        visible = true;
    }
    public void move(){
        x = x + 1;
        if(x > 854){
            System.out.println("Bullet is moving at X = " + x);
            visible = false;  
        }
    }
    public int getX(){
        return x;
    }
    public int getY() {
        return y;
    }
    public boolean getVisible(){
        return visible;
    }
    public Image getImage(){
        return img;
    }
}

当空格键被按下时,它调用一个名为fire()的方法,其中一个新的子弹(X,Y);被调用,然后将其存储在ArrayList中。

public void fire(){
    if(ammo > 0) {
        Bullet z = new Bullet(left + 60, y + 70);
        bullets.add(z);
        ammo--;
    }
}
public static ArrayList getBullets(){
    return bullets;
}

此代码将子弹移动到屏幕上。

ArrayList bullets = Character.getBullets();
for(int i = 0; i < bullets.size(); i++){
    Bullet m = (Bullet) bullets.get(i);
    if(m.getVisible() == true){
        m.move();
    }if(m.getVisible() == false) {
        bullets.remove(i);
    }
}

最后是打印方法的代码。

ArrayList bullets = Character.getBullets();
for(int i = 0; i < bullets.size(); i++){
    Bullet m = (Bullet) bullets.get(0);
    g2d.drawImage(m.getImage(),m.getX(),m.getY(), null);
}

我无法找到错误的地方。子弹的功能全部工作,只要我能告诉它只是在屏幕上打印图像任何建议都非常感谢。

2 个答案:

答案 0 :(得分:1)

通常资源使用Class.getResource

加载
ImageIcon newBullet = new ImageIcon(Bullet.class.getResource("resources/bullet.png"));

当然资源文件夹应与Bullet类位于同一个包中(即在同一文件夹中)。 无论你的游戏是否在罐子里,该代码应始终有效。

答案 1 :(得分:0)

我认为您的资源路径格式不佳。

 ImageIcon icon = new ImageIcon("gameLibrary.resources.bullet.png");

如果这不起作用,请尝试使用此代码获取您的png路径:

import java.io.File;  

public class GetPath  
{  
  public static void main(String[] args)  
  {  
    System.out.println("The user directory: " + System.getProperty("user.dir"));  
    File fubar = new File("Fubar.txt");  
    System.out.println("Where Java thinks file is located: " + fubar.getAbsolutePath());  
  }  
}

告诉我会发生什么。