Hallo, ich mache zur Zeit dieses Tutorial: http://archon.bplaced.net/bain09/Studium/Programmieren/Java/Turorials/Spiele/Tutorial%20f%FCr%20Java-Spiele%20.pdf
Ich habe alles genauso gemacht wie im Tutorial bis zu dem Punkt wo man angeblich den Helikopter steuern kann. Der öffnet zwar das Fenster aber ich habe 0 FPS und zur Laufzeit bekomme ich folgenden Fehler: Exception in thread "main" java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(Unknown Source)
at GamePanel.loadPics(GamePanel.java:64)
at GamePanel.doInitializations(GamePanel.java:49)
at GamePanel.<init>(GamePanel.java:42)
at GamePanel.main(GamePanel.java:153)
Ich habe es auch schon mit absolutem Pfad probiert, sowie \ und / .. Ich habe echt keine Ahnung und bin für jede Hilfe dankbar.
Ich habe alles genauso gemacht wie im Tutorial bis zu dem Punkt wo man angeblich den Helikopter steuern kann. Der öffnet zwar das Fenster aber ich habe 0 FPS und zur Laufzeit bekomme ich folgenden Fehler: Exception in thread "main" java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(Unknown Source)
at GamePanel.loadPics(GamePanel.java:64)
at GamePanel.doInitializations(GamePanel.java:49)
at GamePanel.<init>(GamePanel.java:42)
at GamePanel.main(GamePanel.java:153)
Ich habe es auch schon mit absolutem Pfad probiert, sowie \ und / .. Ich habe echt keine Ahnung und bin für jede Hilfe dankbar.
Java:
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import java.util.Vector;
public class GamePanel extends JPanel implements Runnable, KeyListener {
private static final long serialVersionUID = 1L;
boolean game_running = true;
long delta = 0;
long last = 0;
long fps = 0;
boolean up = false;
boolean down = false;
boolean left = false;
boolean right = false;
int speed = 50;
Sprite mj;
Vector<Sprite> actors;
public GamePanel(int w, int h) {
this.setPreferredSize(new Dimension(w,h));
JFrame frame = new JFrame("BomberMJ");
frame.setLocation(100,100);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.addKeyListener(this);
frame.add(this);
frame.pack();
frame.setVisible(true);
doInitializations();
}
private void doInitializations() {
last = System.nanoTime();
actors = new Vector<Sprite>();
BufferedImage[] player = this.loadPics("pics/test.gif", 4);
mj = new Sprite(player, 400, 300, 100, this);
actors.add(mj);
Thread t = new Thread(this);
t.start();
}
private BufferedImage[] loadPics(String path, int pics) {
BufferedImage[] anim = new BufferedImage[pics];
BufferedImage source = null;
URL pic_url = getClass().getClassLoader().getResource(path);
try {
source = ImageIO.read(pic_url);
}
catch(IOException e) {
}
for(int x = 0; x < pics; x++) {
anim[x] = source.getSubimage(x * source.getWidth() / pics, 0, source.getWidth() / pics, source.getHeight());
}
return anim;
}
private void computeDelta() {
delta = System.nanoTime() - last;
last = System.nanoTime();
fps = ((long) 1e9) / delta;
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.red);
g.drawString("FPS: " + Long.toString(fps), 20, 10);
if(actors != null) {
for(Drawable draw : actors) {
draw.drawObjects(g);
}
}
}
private void doLogic() {
for(Movable mov : actors) {
mov.doLogic(delta);
}
}
private void moveObjects() {
for(Movable mov : actors) {
mov.move(delta);
}
}
private void checkKeys() {
if(up) {
mj.setVerticalSpeed(-speed);
}
if(down) {
mj.setVerticalSpeed(speed);
}
if(right) {
mj.setHorizontalSpeed(speed);
}
if(left) {
mj.setHorizontalSpeed(-speed);
}
if(!up && !down) {
mj.setVerticalSpeed(0);
}
if(!left && !right) {
mj.setHorizontalSpeed(0);
}
}
public void run() {
while(game_running) {
computeDelta();
checkKeys();
doLogic();
moveObjects();
repaint();
try {
Thread.sleep(10);
}
catch (InterruptedException e) {}
}
}
public static void main(String[] args) {
new GamePanel(800,600);
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if(e.getKeyCode() == KeyEvent.VK_UP) {
up = true;
}
if(e.getKeyCode() == KeyEvent.VK_DOWN) {
down = true;
}
if(e.getKeyCode() == KeyEvent.VK_LEFT) {
left = true;
}
if(e.getKeyCode() == KeyEvent.VK_RIGHT) {
right = true;
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
if(e.getKeyCode() == KeyEvent.VK_UP) {
up = false;
}
if(e.getKeyCode() == KeyEvent.VK_DOWN) {
down = false;
}
if(e.getKeyCode() == KeyEvent.VK_LEFT) {
left = false;
}
if(e.getKeyCode() == KeyEvent.VK_RIGHT) {
right = false;
}
}
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
}