Hallo,
ich versuche grade ein kleines 4-gewinnt Spiel zu schreiben ( - arbeite grade Quaxlis Tutorial durch - )
und bekomme das hier:
Exception in thread "main" java.lang.NullPointerException
at Spielfeld.paintKugel(Spielfeld.java:36)
at Main.main(Main.java:25)
Mir ist klar, das das was mit dem ImageArray zu tun hat, aber genau versteh ich das trotzdem nicht.
Ich liste einfach mal alles der reihe nach auf:
--1. Die Klasse Spielfeld
--2.Die Klasse Kugel
--3.Die Klasse Main
--und zuletzt 4. Das Interface Paintable
Ach ja, die Bilder haben beide eine Größe von 40*40 Pixel
Auch andere Tipps oder Verbesserungen nehm ich gern an
Danke im Voraus
ich versuche grade ein kleines 4-gewinnt Spiel zu schreiben ( - arbeite grade Quaxlis Tutorial durch - )
und bekomme das hier:
Exception in thread "main" java.lang.NullPointerException
at Spielfeld.paintKugel(Spielfeld.java:36)
at Main.main(Main.java:25)
Mir ist klar, das das was mit dem ImageArray zu tun hat, aber genau versteh ich das trotzdem nicht.
Ich liste einfach mal alles der reihe nach auf:
--1. Die Klasse Spielfeld
Code:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.MediaTracker;
import javax.swing.*;
public class Spielfeld extends JFrame implements paintable{
Graphics2D g = (Graphics2D)getGraphics();
MediaTracker mt = new MediaTracker(this);
private static final long serialVersionUID = 1L;
public static final long START_TIME = System.currentTimeMillis();
public Spielfeld(Dimension d)
{super("4 gewinnt");
setSize(d);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static long Game()// zur Errechnung der Spieldauer; kommt noch...
{
return System.currentTimeMillis()-START_TIME;
}
public void paintKugel(int imgX, int ImgY, Image... img)
{
this.setBackGround();
for( int i = 0; i < img.length; i++ )
mt.addImage(img[i], 0);
try { mt.waitForAll(); } catch (InterruptedException e) {}
for( int i = 0; i < img.length; i++ )
g.drawImage(img[i],imgX,ImgY,this);
}
public void setBackGround()
{
Graphics2D g = (Graphics2D)getGraphics();
g.setColor(Color.white);
g.fillRect(0, 0, 10000, 10000);// Background
g.setColor(Color.black);
g.drawRect(100, 100, 600, 400); // Das eigentliche Spielfeld
for(int i= 100, j=0; j < 5; i+=100,j++)// Horizontale Linien
g.drawLine(100+i,500, 100+i,100);
for(int i= 80, j=0; j < 5; i+=80,j++) //Vertikale Linien
g.drawLine(700,100+i, 100,100+i);
}
}
--2.Die Klasse Kugel
Code:
import java.awt.Image;
public class Kugel{
public static Image ballImage;
private static String file="C:\\Programme\\Eclipse\\Workspace\\"+
"4 gewinnt\\src\\DATA\\Images\\";// ich hab jetzt auch eclipse :)
public Image loadImage(String farbe,Spielfeld feld)
{
return feld.getToolkit().getImage(file+farbe+".gif");
}
}
--3.Die Klasse Main
Code:
import java.awt.Dimension;
import java.awt.Image;
import javax.swing.JFrame;
public class Main extends JFrame{
private static final long serialVersionUID = 1L;
static Main m = new Main();
static int
breite = (int) m.getToolkit().getScreenSize().getSize().getWidth(),
hoehe = (int) m.getToolkit().getScreenSize().getSize().getHeight();
public static void main(String[] args) {
Dimension dim = new Dimension(breite,hoehe);
Image img,img2;
Spielfeld sF = new Spielfeld(dim);
sF.setVisible(true);
sF.setAlwaysOnTop(true);
Kugel ball = new Kugel();
img = ball.loadImage("rot",sF);
img2 = ball.loadImage("blau",sF);
sF.paintKugel( 240, 120, img, img2);
}
}
--und zuletzt 4. Das Interface Paintable
Code:
import java.awt.Image;
public interface paintable {
public void paintKugel(int imgX, int ImgY,Image... img);
}
Ach ja, die Bilder haben beide eine Größe von 40*40 Pixel
Auch andere Tipps oder Verbesserungen nehm ich gern an
Danke im Voraus