J
_java_freak_
Gast
Hi
ich programmiere gerade ein kleines spiel. Ziel ist es 100 kästchen abzuschißen.Mein problem ist ich habe eine variable (durchgang1) die anzeigt ob ich die klasse nocherzeugen muss oder ob sie das schon ist. In der paint methode frage ich nun ob diese var true oder false ist. Wenn sie false ist muss die klasse noch erzeugt werden wenn sie true ist werden die x und y koordinaten aktualisirt.Gerade sollen 100 kästchen oben in der mitte angezeigt werden ein dreieck unten und wenn ich klicke sollte das unterste kästchen auf der position wo ich gedrückt habe weggehen Hier ist mein code:
Die exceptions lassen sich leider nicht kopieren und da ich hier nicht tagelang schreiben will nur ein sehr kleiner teil:
in dieser art gibt es noch ca. 100.000 weitere wahrscheinlich mehr.
ich programmiere gerade ein kleines spiel. Ziel ist es 100 kästchen abzuschißen.Mein problem ist ich habe eine variable (durchgang1) die anzeigt ob ich die klasse nocherzeugen muss oder ob sie das schon ist. In der paint methode frage ich nun ob diese var true oder false ist. Wenn sie false ist muss die klasse noch erzeugt werden wenn sie true ist werden die x und y koordinaten aktualisirt.Gerade sollen 100 kästchen oben in der mitte angezeigt werden ein dreieck unten und wenn ich klicke sollte das unterste kästchen auf der position wo ich gedrückt habe weggehen Hier ist mein code:
Java:
import java.awt.*;
import java.awt.event.*;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import javax.swing.*;
import java.awt.geom.*;
public class spiel extends Thread implements MouseMotionListener
{
static window win;
static Graphics2D g2d;
static int posx=250;
static int posy=40;
static int level=1;
public static gegner g;
static int posx1=250, posy1=695;
static boolean durchgang1=false;
public static void main(String[] args)
{
new spiel(); //maus listener und fenster erstellen
}
public spiel()
{
win = new window();
win.addMouseListener(new maus());
win.addMouseMotionListener(this);
}
public static class maus implements MouseListener
{
public void mouseClicked(MouseEvent e)
{
kolision(e.getX() );
}
public void mousePressed(MouseEvent e)
{
kolision(e.getX() );
win.repaint();
}
public void mouseExited(MouseEvent e)
{
}
public void mouseEntered(MouseEvent e)
{
}
public void mouseReleased(MouseEvent e)
{
}
}
public void mouseDragged(MouseEvent e)
{
posx1=e.getX();
win.repaint();
}
public void mouseMoved(MouseEvent e)
{
posx1=e.getX();
win.repaint();
}
public static int kolision(int x)//schauen welches kästchen jetzt nicht mehr "lebt" nach klicken
{
for(int a=9;a>=0;--a)
{
for(int i=9;i>=0;--i)
{
if(g.getX((a*10)+i)<=x && g.getX((a*10)+i)+30 >=x)
{
if(g.lebt[(a*10)+i]==true)
{
g.lebt[(a*10)+i]=false;
return(0);
}
}
}
}
return(0);
}
static class window extends Frame
{
public window()
{
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent evt)
{
dispose();
}
});
setSize(900, 700);
setVisible(true);
setResizable(false);
}
public void paint(Graphics g1)
{
g2d = (Graphics2D) g1;
durchgang1=false;
if(durchgang1==false)//hier ist das problem glaube ich
{
durchgang1=true;
g.lebtReset();
g=new gegner(posx, posy, level, g2d);
g2d.drawRect(101,10,100,100);
}
else if(durchgang1==true)
{
g.setPosx(posx);
g.setPosy(posy);
}
GeneralPath ich=new GeneralPath();
ich.moveTo(posx1, posy1-25);
ich.lineTo(posx1+25, posy1 );
ich.lineTo(posx1-25, posy1 );
ich.lineTo(posx1, posy1-25 );
g2d.draw(ich);
}
}
}
class gegner
{
int posx, posy;
boolean[] lebt=new boolean[100];
int level;
Graphics2D g2d;
int[] positionenX=new int[100];
public gegner(int x, int y, int levell, Graphics2D g2)
{
posx=x;
posy=y;
level=levell;
g2d=g2;
if(level==1)
{
level1();
}
}
public void level1()//kästchen werden gezeichnet
{
for(int a=0;a<=9;++a)
{
for(int i=0;i<=9;++i)
{
if( lebt[ (a*10) +i]==true )
{
g2d.drawRect(posx+ (40*i), (posy+ (40*a) ), 30, 30);
positionenX[ (a*10) +i] =posx+ (40*i);
}
}
}
}
public void lebtReset()
{
for(int i=0;i<=99;++i)
{
lebt[i]=true;
}
}
public int getX(int i)
{
return(positionenX[i]);
}
public void setX(int i, int x)
{
positionenX[i]=x;
}
public void lebtFalse(int i)
{
lebt[i]=false;
}
public void setPosx(int i)
{
posx=i;
if(level==1)
{
level1();
}
}
public void setPosy(int i)
{
posy=i;
if(level==1)
{
level1();
}
}
public void setLevel(int i)
{
level=i;
if(level==1)
{
level1();
}
}
}
Code:
ecxeption in thread"AWT-EventQueue-0" java. lang.NullPointerEcxpetion
at spiel$window.paint(spiel.java:116)