huhu bin neu hier im Forum 
vorerst will ich mich mal bei Quaxli für das geile Tutorial (spiele programmierung) bedanken.
Aber bei diesem tutorial bin ich jetzt auf ein problem gestoßen.
Ich hab das jetzt bis seite 23 gemacht und wollte den heli anzeigen lassen, leider wirft er mir immer eine illegalArgumentException. Hab jetzt meinen code sogar mit dem fertigen code verglichen, aber ich finde einfach keinen Fehler. Jetzt hab ich mir gedacht das es evtl. an der java version liegen könnte, das ursprungsprogramm ist ja in 1.5 geschrieben. Vllt. hat sich da ja bis jetzt irgendwas geändert? Da ich aber erst seit ca. einem jahr (wegen Studium) java programmiere hab ich davon natürlich keine ahnung ^^
also ich tu mal hier meinen code rein, und hoff das mir irgendjemand helfen kann. Wollte nämlich umbedingt das tutorial fertig machen und mich dann in den Semesterferien in ein großes projekt stürzen
.
wenn das thema hier falsch ist, bitte ich um entschuldigung.
danke
mfg
Honkisponk
vorerst will ich mich mal bei Quaxli für das geile Tutorial (spiele programmierung) bedanken.
Aber bei diesem tutorial bin ich jetzt auf ein problem gestoßen.
Ich hab das jetzt bis seite 23 gemacht und wollte den heli anzeigen lassen, leider wirft er mir immer eine illegalArgumentException. Hab jetzt meinen code sogar mit dem fertigen code verglichen, aber ich finde einfach keinen Fehler. Jetzt hab ich mir gedacht das es evtl. an der java version liegen könnte, das ursprungsprogramm ist ja in 1.5 geschrieben. Vllt. hat sich da ja bis jetzt irgendwas geändert? Da ich aber erst seit ca. einem jahr (wegen Studium) java programmiere hab ich davon natürlich keine ahnung ^^
also ich tu mal hier meinen code rein, und hoff das mir irgendjemand helfen kann. Wollte nämlich umbedingt das tutorial fertig machen und mich dann in den Semesterferien in ein großes projekt stürzen
Java:
package volley;
import java.awt.*;
public interface Drawable {
public void drawObject(Graphics g);
}
------------------------------------------------
package volley;
public interface Movable {
public void doLogic(long delta);
public void move(long delta);
}
------------------------------------------------
package volley;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import java.util.Vector;
import javax.imageio.ImageIO;
import javax.swing.*;
public class GamePanel extends JPanel implements Runnable {
private static final long serialVersionUID = 1L;
boolean game_running = true;
long delta = 0;
long last = 0;
long fps = 0;
Sprite copter;
Vector<Sprite> actors;
public static void main(String[] args) {
new GamePanel(800,600);
}
public GamePanel(int w, int h) {
this.setPreferredSize(new Dimension(w,h));
JFrame frame = new JFrame("Volley");
frame.setLocation(100,100);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(this);
frame.pack();
frame.setVisible(true);
doInitializations();
}
private void doInitializations() {
last = System.nanoTime();
actors = new Vector<Sprite>();
BufferedImage[] heli = loadPics("pics/heli.gif", 4);
copter = new Sprite(heli,400,300,100,this);
actors.add(copter);
Thread t = new Thread(this);
t.start();
}
public void run() {
while(game_running) {
computeDelta();
doLogic();
moveObjects();
repaint();
try {
Thread.sleep(10);
}
catch(InterruptedException e) {
}
}
}
private void doLogic() {
for(Movable mov:actors) {
mov.doLogic(delta);
}
}
private void moveObjects() {
for(Movable mov:actors) {
mov.move(delta);
}
}
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.drawObject(g);
}
}
}
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;
}
}
-----------------------------------------------------------------------------------------
package volley;
import java.awt.Graphics;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
public class Sprite extends Rectangle2D.Double implements Drawable, Movable {
long delay;
long animation = 0;
GamePanel parent;
BufferedImage[] pics;
int currentpic = 0;
protected double dx;
protected double dy;
public Sprite(BufferedImage[] i, double x, double y, long delay, GamePanel p) {
pics = i;
this.x = x;
this.y = y;
this.delay = delay;
this.width = pics[0].getWidth();
this.height = pics[0].getHeight();
parent = p;
}
public void drawObject(Graphics g) {
g.drawImage(pics[currentpic], (int) x, (int) y, null);
}
public void doLogic(long delta) {
animation += (delta/1000000);
if(animation > delay) {
animation = 0;
computeAnimation();
}
}
private void computeAnimation() {
currentpic ++;
if(currentpic > pics.length) {
currentpic = 0;
}
}
public void move(long delta) {
if(dx != 0) {
x += dx*(delta/1e9);
}
if(dy != 0) {
y += dy*(delta/1e9);
}
}
public void setVerticalSpeed(double d) {
this.dy = d;
}
public void setHorizontalSpeed(double d) {
this.dx = d;
}
public double getVerticalSpeed() {
return dy;
}
public double getHorizontalSpeed() {
return dx;
}
}
wenn das thema hier falsch ist, bitte ich um entschuldigung.
danke
mfg
Honkisponk
Zuletzt bearbeitet von einem Moderator: