Applet reagiert nicht richtig

Status
Nicht offen für weitere Antworten.

The-Forgotten

Bekanntes Mitglied
Abend ^^

Ich habe versucht den guten alten Klassiker Pong mit Java zu realisieren, allerdings reagiert die Kugel nur auf die 2 Spieler, solange die ihre Figuren nicht in größerem Umfang bewegen ...

werden die Figuren nur ein wenig bewegt, so prallt die Kugel weiter ab, wenn die Figuren allerdings weiter bewegt werden, scheinen sie auf einmal druchlässig zu sein.

Java:
Bsp.:

         -->   prallt aufgrund der kleinen Verschiebung anders ab(diagonal)
A    --|
^
|
A       -->  Apprallen ohne Verschiebung


Aber wenn:



A   <--- wird durchlässig
^
|
|
|
|
|
A      -->  Apprallen ohne Verschiebung

Woher kommt das?
 
Zuletzt bearbeitet:
Da ist das kleine ... ich find den gemeinen Fehler nämlich nicht :S

Java:
import java.applet.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class BallApplet extends Applet implements Runnable,KeyListener
{
	private static final long serialVersionUID = 1L;
	// Initialisierung der Variablen

	boolean activierungHoch1;
	boolean activierungHoch2;
	boolean activierungRunter1;
	boolean activierungRunter2;
	
	int x_pos = 10;		// x - Position des Balles
	int y_pos = 100;	// y - Position des Balles
	int radius = 20;	// Radius des Balles
	
	int richtungx=1;	// x Richtung des Balles
	int richtungy=1;	// y Richtung des Balles
	
	int grundspeedx=2;	    // x Beschleunigung des Balles
	int grundspeedy=0;	    // y grundspeed des Balles
	
	int threadlaenge=1000;
	int threadhoehe=600;
	
	int geschwindigkeit=8;
	
	int playerspeed=10;
	
	int ballcheckNNX;
	int ballcheckNOX;
	int ballcheckOOX;
	int ballcheckSOX;
	int ballcheckSSX;
	int ballcheckSWX;
	int ballcheckWWX;
	int ballcheckNWX;
	
	int ballcheckNNY;
	int ballcheckNOY;
	int ballcheckOOY;
	int ballcheckSOY;
	int ballcheckSSY;
	int ballcheckSWY;
	int ballcheckWWY;
	int ballcheckNWY;

	int ballcheckAdvNNWX;
	int ballcheckAdvNWWX;	
	int ballcheckAdvSWWX;
	int ballcheckAdvSSWX;
	int ballcheckAdvNNOX;
	int ballcheckAdvNOOX;	
	int ballcheckAdvSOOX;
	int ballcheckAdvSSOX;
	
	int ballcheckAdvNNWY;
	int ballcheckAdvNWWY;	
	int ballcheckAdvSWWY;
	int ballcheckAdvSSWY;
	int ballcheckAdvNNOY;
	int ballcheckAdvNOOY;	
	int ballcheckAdvSOOY;
	int ballcheckAdvSSOY;
	
	// Variablen für die Doppelpufferung
	private Image dbImage;
	private Graphics dbg;
	
	Polygon p1=new Polygon();
	Polygon p2=new Polygon();
	
	Polygon stripe1=new Polygon();
	Polygon stripe2=new Polygon();
	
	Thread th = new Thread (this);
	
	// Instanzvariable für den AudioClip
	AudioClip bounce;

	public void init()
	{
		
		// Laden des Audioclips
		bounce = getAudioClip (getCodeBase(), "dong.au");

		p1.addPoint( 1,  threadhoehe/2-40);
		p1.addPoint( 1,  threadhoehe/2+40);
		p1.addPoint(30,  threadhoehe/2+40);
		p1.addPoint(70,  threadhoehe/2);
		p1.addPoint(30,  threadhoehe/2-40);
	
		p2.addPoint( threadlaenge   ,  threadhoehe/2-40);
		p2.addPoint( threadlaenge   ,  threadhoehe/2+40);
		p2.addPoint( threadlaenge-30,  threadhoehe/2+40);
		p2.addPoint( threadlaenge-70,  threadhoehe/2);
		p2.addPoint( threadlaenge-30,  threadhoehe/2-40);
		
		y_pos=threadhoehe/2;
		
		stripe1.addPoint(  5,  5);
		stripe1.addPoint(threadlaenge-5,  5);
		stripe1.addPoint(threadlaenge-5, 15);
		stripe1.addPoint(  5, 15);
		
		stripe2.addPoint(  5,threadhoehe-20);
		stripe2.addPoint(threadlaenge-5,threadhoehe-20);
		stripe2.addPoint(threadlaenge-5,threadhoehe-10);
		stripe2.addPoint(  5,threadhoehe-10);		
		
	}

	public void start ()
	{
		// Schaffen eines neuen Threads, in dem das Spiel läuft
		// Starten des Threads
		th.start ();
		resize(threadlaenge, threadhoehe);
		this.addKeyListener(this);
	}

	public void stop()
	{

	}

	public void destroy()
	{

	}

	public void run ()
	{
		// Erniedrigen der ThreadPriority um zeichnen zu erleichtern
		Thread.currentThread().setPriority(Thread.MIN_PRIORITY);

		// Solange true ist läuft der Thread weiter
		while (true)
		{
			// Verändern der x- Koordinate

			for (int i=0;i<geschwindigkeit;i++)
			{
				ballcheckNNX=x_pos;
				ballcheckNOX=(int)(x_pos+.7*radius)+2;
				ballcheckOOX=x_pos+radius;
				ballcheckSOX=(int)(x_pos+.7*radius)+3;
				ballcheckSSX=x_pos;
				ballcheckSWX=(int)(x_pos-.7*radius)-2;
				ballcheckWWX=x_pos-radius;
				ballcheckNWX=(int)(x_pos-.7*radius)-5;

				ballcheckNNY=y_pos-radius;
				ballcheckNOY=(int)(y_pos-.7*radius);
				ballcheckOOY=y_pos;
				ballcheckSOY=(int)(y_pos+.7*radius);
				ballcheckSSY=y_pos+radius;
				ballcheckSWY=(int)(y_pos+.7*radius);
				ballcheckWWY=y_pos;
				ballcheckNWY=(int)(y_pos-.7*radius);
				
				ballcheckAdvNNWX=(int)(x_pos-.39*radius);
				ballcheckAdvNWWX=(int)(x_pos-.92*radius);	
				ballcheckAdvSWWX=(int)(x_pos-.92*radius);
				ballcheckAdvSSWX=(int)(x_pos-.39*radius);
				ballcheckAdvNNOX=(int)(x_pos+.39*radius);
				ballcheckAdvNOOX=(int)(x_pos+.92*radius);	
				ballcheckAdvSOOX=(int)(x_pos+.92*radius);
				ballcheckAdvSSOX=(int)(x_pos+.39*radius);
				
				ballcheckAdvNNWY=(int)(y_pos+.92*radius);
				ballcheckAdvNWWY=(int)(y_pos+.39*radius);	
				ballcheckAdvSWWY=(int)(y_pos-.39*radius);	
				ballcheckAdvSSWY=(int)(y_pos-.92*radius);
				ballcheckAdvNNOY=(int)(y_pos+.92*radius);
				ballcheckAdvNOOY=(int)(y_pos+.39*radius);		
				ballcheckAdvSOOY=(int)(y_pos-.39*radius);	
				ballcheckAdvSSOY=(int)(y_pos-.92*radius);	
				
				x_pos =x_pos+(grundspeedx*richtungx);
				y_pos =y_pos+(grundspeedy*richtungy);
				
				if ((p1.contains(ballcheckNNX, ballcheckNNY)==true)&&richtungx==-1)
				{grundspeedx=1;grundspeedy=2;richtungy=-1;}
				if ((p1.contains(ballcheckSWX, ballcheckSWY)==true)&&richtungx==-1)
				{grundspeedx=1;grundspeedy=1;richtungx=+1;richtungy=-1;}
				if ((p1.contains(ballcheckWWX, ballcheckWWY)==true)&&richtungx==-1)
				{grundspeedx=2;richtungx=+1;}
				if ((p1.contains(ballcheckNWX, ballcheckNWY)==true)&&richtungx==-1)
				{grundspeedx=1;grundspeedy=1;richtungx=+1;richtungy=1;}
				if ((p1.contains(ballcheckSSX, ballcheckSSY)==true)&&richtungx==-1)
				{grundspeedx=1;grundspeedy=2;richtungy=1;}
				
				if ((p2.contains(ballcheckNNX, ballcheckNNY)==true)&&richtungx==1)
				{grundspeedx=1;grundspeedy=2;richtungy=-1;}
				if ((p2.contains(ballcheckNOX, ballcheckNOY)==true)&&richtungx==1)
				{grundspeedx=1;grundspeedy=1;richtungx=-1;richtungy=1;}
				if ((p2.contains(ballcheckOOX, ballcheckOOY)==true)&&richtungx==1)
				{grundspeedx=2;richtungx=-1;}
				if ((p2.contains(ballcheckSOX, ballcheckSOY)==true)&&richtungx==1)
				{grundspeedx=1;grundspeedy=1;richtungx=-1;richtungy=-1;}
				if ((p2.contains(ballcheckSSX, ballcheckSSY)==true)&&richtungx==1)
				{grundspeedx=1;grundspeedy=2;richtungy=1;}	
				
		/*		if ((p1.contains(ballcheckAdvNNWX, ballcheckAdvNNWX)==true)&&richtungx==-1)
			    {grundspeedx=1;grundspeedy=2;richtungx=1;richtungy=1;}
				if ((p1.contains(ballcheckAdvNWWX, ballcheckAdvNWWX)==true)&&richtungx==-1)
				{grundspeedx=2;grundspeedy=1;richtungx=1;richtungy=1;}
				if ((p1.contains(ballcheckAdvSWWX, ballcheckAdvSWWX)==true)&&richtungx==-1)
				{grundspeedx=2;grundspeedy=1;richtungx=1;richtungy=-1;}
				if ((p1.contains(ballcheckAdvSSWX, ballcheckAdvSSWX)==true)&&richtungx==-1)
				{grundspeedx=1;grundspeedy=2;richtungx=1;richtungy=-1;}
				
				if ((p2.contains(ballcheckAdvNNOX, ballcheckAdvNNOX)==true)&&richtungx==1)
				{grundspeedx=1;grundspeedy=2;richtungx=-1;richtungy=1;}
				if ((p2.contains(ballcheckAdvNOOX, ballcheckAdvNOOX)==true)&&richtungx==1)
				{grundspeedx=2;grundspeedy=2;richtungx=-1;richtungy=1;}
				if ((p2.contains(ballcheckAdvSOOX, ballcheckAdvSOOX)==true)&&richtungx==1)
				{grundspeedx=2;grundspeedy=2;richtungx=-1;richtungy=-1;}
				if ((p2.contains(ballcheckAdvSSOX, ballcheckAdvSSOX)==true)&&richtungx==1)
				{grundspeedx=1;grundspeedy=2;richtungx=-1;richtungy=-1;}*/
				
				if (stripe1.contains(ballcheckNNX, ballcheckNNY)==true){richtungy=1;}
				
				if (stripe2.contains(ballcheckSSX, ballcheckSSY)==true){richtungy=-1;}
				
			}
		
			// Neuzeichnen des Applets
		repaint();

		try
		{
			// Stoppen des Threads für in Klammern angegebene Millisekunden
			Thread.sleep (200);
		}
		catch (InterruptedException ex)
		{
			// do nothing
		}
			// Zurücksetzen der ThreadPriority auf Maximalwert
		Thread.currentThread().setPriority(Thread.MAX_PRIORITY);	
	}
	}
	
	/** Update - Methode, Realisierung der Doppelpufferung zur Reduzierung des Bildschirmflackerns */
	public void update (Graphics g)
	{
		// Initialisierung des DoubleBuffers
		if (dbImage == null)
		{
			dbImage = createImage (threadlaenge, threadhoehe);
			dbg = dbImage.getGraphics ();
		}

		// Bildschirm im Hintergrund löschen
		dbg.setColor (getBackground ());
		dbg.fillRect (0, 0, threadlaenge, threadhoehe);

		// Auf gelöschten Hintergrund Vordergrund zeichnen
		dbg.setColor (getForeground());
		paint (dbg);

		// Nun fertig gezeichnetes Bild Offscreen auf dem richtigen Bildschirm anzeigen
		g.drawImage (dbImage, 0, 0, this);
	}

	public void paint (Graphics g)
	{
		g.setColor  (Color.red);
		g.fillOval (x_pos - radius, y_pos - radius, 2 * radius, 2 * radius);

		g.setColor(Color.green);
		g.drawPolygon(p1);
		g.fillPolygon(p1);
		
		g.setColor(Color.blue);
		g.drawPolygon(p2);
		g.fillPolygon(p2);
		
		g.setColor(Color.black);
		g.drawPolygon(stripe1);
		g.fillPolygon(stripe1);
		
		g.setColor(Color.black);
		g.drawPolygon(stripe2);
		g.fillPolygon(stripe2);
	}

	public void keyPressed(KeyEvent e) {
	
		if(e.getKeyCode()==87)
		{
			activierungHoch1=false;
			if (activierungHoch1==false){
				p1.ypoints[0]=p1.ypoints[0]-playerspeed;
				p1.ypoints[1]=p1.ypoints[1]-playerspeed;
				p1.ypoints[2]=p1.ypoints[2]-playerspeed;
				p1.ypoints[3]=p1.ypoints[3]-playerspeed;
				p1.ypoints[4]=p1.ypoints[4]-playerspeed;
			}
		}
		
		if(e.getKeyCode()==83)
		{
			activierungRunter1=false;
			if (activierungRunter1==false){
				p1.ypoints[0]=p1.ypoints[0]+playerspeed;
				p1.ypoints[1]=p1.ypoints[1]+playerspeed;
				p1.ypoints[2]=p1.ypoints[2]+playerspeed;
				p1.ypoints[3]=p1.ypoints[3]+playerspeed;
				p1.ypoints[4]=p1.ypoints[4]+playerspeed;
			}
		}
		
		if(e.getKeyCode()==38)
		{
			activierungHoch2=false;
			if (activierungHoch2==false){
				p2.ypoints[0]=p2.ypoints[0]-playerspeed;
				p2.ypoints[1]=p2.ypoints[1]-playerspeed;
				p2.ypoints[2]=p2.ypoints[2]-playerspeed;
				p2.ypoints[3]=p2.ypoints[3]-playerspeed;
				p2.ypoints[4]=p2.ypoints[4]-playerspeed;
			}
		}
		
		if(e.getKeyCode()==40)
		{
			activierungRunter2=false;
			if (activierungRunter2==false){
				p2.ypoints[0]=p2.ypoints[0]+playerspeed;
				p2.ypoints[1]=p2.ypoints[1]+playerspeed;
				p2.ypoints[2]=p2.ypoints[2]+playerspeed;
				p2.ypoints[3]=p2.ypoints[3]+playerspeed;
				p2.ypoints[4]=p2.ypoints[4]+playerspeed;
			}
		}
	}

	public void keyReleased(KeyEvent e) {
		if(e.getKeyCode()==38){activierungHoch1=true;}
		if(e.getKeyCode()==40){activierungHoch2=true;}
		if(e.getKeyCode()==87){activierungRunter1=true;}
		if(e.getKeyCode()==83){activierungRunter2=true;}
	}

	public void keyTyped(KeyEvent e) {
		if(e.getKeyChar()=='a')
		{
			System.out.println("Punkt1: "+p1.xpoints[0]+"#"+p1.ypoints[0]);
			System.out.println("Punkt2: "+p1.xpoints[1]+"#"+p1.ypoints[1]);
			System.out.println("Punkt3: "+p1.xpoints[2]+"#"+p1.ypoints[2]);
			System.out.println("Punkt4: "+p1.xpoints[3]+"#"+p1.ypoints[3]);
			System.out.println("Punkt5: "+p1.xpoints[4]+"#"+p1.ypoints[4]);
		}
		else
		{

		}
	}
}
 
*Update*

Um mal etwas Fehler einzugrenzen...

*Edit: Interessant ist die Tatsache, dass in dem Polygon aus den Punkten (1/30); (1/110); (30/110); (70/30); (30/10)
nicht der Punkt P (10/30) enthalten sein soll (p1.contains(10,30); )

Jedoch gibt es mir mit System.out.println, eben die oben genannten Punkte des Polygons aus. Diese sind die selben, die abgefragt werden ...

Ist der Punkt aber von anfang am im Poligon enthalten(contains), so ist die if - Abfrage "true", solange ich das Polygon nicht zu weit weg bewege(dann wird sie "false"). Bewege ich es nun zurück, ist die if - Abfrage wieder "true".
Java:
import java.applet.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class BallApplet extends Applet implements Runnable,KeyListener
{
	private static final long serialVersionUID = 1L;
	// Initialisierung der Variablen

        ...
	
	int x_pos = 10;		// x - Position des Balles
	int y_pos = 100;	// y - Position des Balles
	int radius = 20;	// Radius des Balles
	
	int richtungx=1;	// x Richtung des Balles
	int richtungy=1;	// y Richtung des Balles
	
	int grundspeedx=2;	    // x Beschleunigung des Balles
	int grundspeedy=0;	    // y grundspeed des Balles
	
	int threadlaenge=1000;
	int threadhoehe=600;
	
	int geschwindigkeit=8;
	
	int playerspeed=10;
	
	int ballcheckNNX;
	int ballcheckNOX;
	int ballcheckOOX;
	int ballcheckSOX;
	int ballcheckSSX;
	int ballcheckSWX;
	int ballcheckWWX;
	int ballcheckNWX;
	
	int ballcheckNNY;
	int ballcheckNOY;
	int ballcheckOOY;
	int ballcheckSOY;
	int ballcheckSSY;
	int ballcheckSWY;
	int ballcheckWWY;
	int ballcheckNWY;

	// Variablen für die Doppelpufferung
	private Image dbImage;
	private Graphics dbg;
	
	Polygon p1=new Polygon();
        ...

	public void init()
	{	
                ...	
	}

	public void start ()
	{
             ...
	}

	public void run ()
	{
		// Erniedrigen der ThreadPriority um zeichnen zu erleichtern
		Thread.currentThread().setPriority(Thread.MIN_PRIORITY);

		// Solange true ist läuft der Thread weiter
		while (true)
		{

			for (int i=0;i<geschwindigkeit;i++)
			{
				ballcheckNNX=x_pos;
				ballcheckNOX=(int)(x_pos+.7*radius)+2;
				ballcheckOOX=x_pos+radius;
				ballcheckSOX=(int)(x_pos+.7*radius)+3;
				ballcheckSSX=x_pos;
				ballcheckSWX=(int)(x_pos-.7*radius)-2;
				ballcheckWWX=x_pos-radius;
				ballcheckNWX=(int)(x_pos-.7*radius)-5;

				ballcheckNNY=y_pos-radius;
				ballcheckNOY=(int)(y_pos-.7*radius);
				ballcheckOOY=y_pos;
				ballcheckSOY=(int)(y_pos+.7*radius);
				ballcheckSSY=y_pos+radius;
				ballcheckSWY=(int)(y_pos+.7*radius);
				ballcheckWWY=y_pos;
				ballcheckNWY=(int)(y_pos-.7*radius);
				
				ballcheckAdvNNWX=(int)(x_pos-.39*radius);
				ballcheckAdvNWWX=(int)(x_pos-.92*radius);	
				ballcheckAdvSWWX=(int)(x_pos-.92*radius);
				ballcheckAdvSSWX=(int)(x_pos-.39*radius);
				ballcheckAdvNNOX=(int)(x_pos+.39*radius);
				ballcheckAdvNOOX=(int)(x_pos+.92*radius);	
				ballcheckAdvSOOX=(int)(x_pos+.92*radius);
				ballcheckAdvSSOX=(int)(x_pos+.39*radius);
				
				ballcheckAdvNNWY=(int)(y_pos+.92*radius);
				ballcheckAdvNWWY=(int)(y_pos+.39*radius);	
				ballcheckAdvSWWY=(int)(y_pos-.39*radius);	
				ballcheckAdvSSWY=(int)(y_pos-.92*radius);
				ballcheckAdvNNOY=(int)(y_pos+.92*radius);
				ballcheckAdvNOOY=(int)(y_pos+.39*radius);		
				ballcheckAdvSOOY=(int)(y_pos-.39*radius);	
				ballcheckAdvSSOY=(int)(y_pos-.92*radius);	
				
				x_pos =x_pos+(grundspeedx*richtungx);
				y_pos =y_pos+(grundspeedy*richtungy);

				if (p1.contains(10, 50)==true){System.out.println("Cointains Point One");}
				
				if (p1.contains(10, 300)==true){System.out.println("Cointains Point Two");}
				
				if ((p1.contains(ballcheckNNX, ballcheckNNY)==true)&&richtungx==-1)
				{grundspeedx=1;grundspeedy=2;richtungy=-1;System.out.println("HIT");}
				if ((p1.contains(ballcheckSWX, ballcheckSWY)==true)&&richtungx==-1)
				{grundspeedx=1;grundspeedy=1;richtungx=+1;richtungy=-1;System.out.println("HIT");}
				if ((p1.contains(ballcheckWWX, ballcheckWWY)==true)&&richtungx==-1)
				{grundspeedx=2;richtungx=+1;System.out.println("HIT");}
				if ((p1.contains(ballcheckNWX, ballcheckNWY)==true)&&richtungx==-1)
				{grundspeedx=1;grundspeedy=1;richtungx=+1;richtungy=1;System.out.println("HIT");}
				if ((p1.contains(ballcheckSSX, ballcheckSSY)==true)&&richtungx==-1)
				{grundspeedx=1;grundspeedy=2;richtungy=1;System.out.println("HIT");}
				
                                ...
				
			}
		
			// Neuzeichnen des Applets
		repaint();

                ...
			// Zurücksetzen der ThreadPriority auf Maximalwert
		Thread.currentThread().setPriority(Thread.MAX_PRIORITY);	
	}
	}

	public void paint (Graphics g)
	{
		g.setColor  (Color.red);
		g.fillOval (x_pos - radius, y_pos - radius, 2 * radius, 2 * radius);

		g.setColor(Color.green);
		g.drawPolygon(p1);
		g.fillPolygon(p1);
		
                ...
	}

	public void keyPressed(KeyEvent e) {
	
		if(e.getKeyCode()==87)
		{
			activierungHoch1=false;
			if (activierungHoch1==false&&p1.ypoints[0]>30){
				p1.ypoints[0]=p1.ypoints[0]-playerspeed;
				p1.ypoints[1]=p1.ypoints[1]-playerspeed;
				p1.ypoints[2]=p1.ypoints[2]-playerspeed;
				p1.ypoints[3]=p1.ypoints[3]-playerspeed;
				p1.ypoints[4]=p1.ypoints[4]-playerspeed;
			}
		}
		
		if(e.getKeyCode()==83)
		{
			activierungRunter1=false;
			if (activierungRunter1==false&&p1.ypoints[2]<threadhoehe-30){
				p1.ypoints[0]=p1.ypoints[0]+playerspeed;
				p1.ypoints[1]=p1.ypoints[1]+playerspeed;
				p1.ypoints[2]=p1.ypoints[2]+playerspeed;
				p1.ypoints[3]=p1.ypoints[3]+playerspeed;
				p1.ypoints[4]=p1.ypoints[4]+playerspeed;
			}
		}
		
		if(e.getKeyCode()==38)
		{
			activierungHoch2=false;
			if (activierungHoch2==false&&p2.ypoints[0]>30){
				p2.ypoints[0]=p2.ypoints[0]-playerspeed;
				p2.ypoints[1]=p2.ypoints[1]-playerspeed;
				p2.ypoints[2]=p2.ypoints[2]-playerspeed;
				p2.ypoints[3]=p2.ypoints[3]-playerspeed;
				p2.ypoints[4]=p2.ypoints[4]-playerspeed;
			}
		}
		
		if(e.getKeyCode()==40)
		{
			activierungRunter2=false;
			if (activierungRunter2==false&&p2.ypoints[2]<threadhoehe-30){
				p2.ypoints[0]=p2.ypoints[0]+playerspeed;
				p2.ypoints[1]=p2.ypoints[1]+playerspeed;
				p2.ypoints[2]=p2.ypoints[2]+playerspeed;
				p2.ypoints[3]=p2.ypoints[3]+playerspeed;
				p2.ypoints[4]=p2.ypoints[4]+playerspeed;
			}
		}
	}
}
 
Zuletzt bearbeitet:
Also wenn ich das so mache gehts, allerdings sieht das eher noch Flicken aus und weniger nach korrektem Code :S

Java:
	public void start ()
	{
		p1.addPoint( 1,  threadhoehe/2-400);
		p1.addPoint( 1,  threadhoehe/2+400);
		p1.addPoint(30,  threadhoehe/2+400);
		p1.addPoint(70,  threadhoehe/2);
		p1.addPoint(30,  threadhoehe/2-400);
		p2.addPoint( threadlaenge   ,  threadhoehe/2-400);
		p2.addPoint( threadlaenge   ,  threadhoehe/2+400);
		p2.addPoint( threadlaenge-30,  threadhoehe/2+400);
		p2.addPoint( threadlaenge-70,  threadhoehe/2);
		p2.addPoint( threadlaenge-30,  threadhoehe/2-400);
		
		th.start ();
		resize(threadlaenge, threadhoehe);
		this.addKeyListener(this);
		
		p1.ypoints[0]=threadhoehe/2-40;
		p1.ypoints[1]=threadhoehe/2+40;
		p1.ypoints[2]=threadhoehe/2+40;
		p1.ypoints[3]=threadhoehe/2;
		p1.ypoints[4]=threadhoehe/2-40;;
		p2.ypoints[0]=threadhoehe/2-40;
		p2.ypoints[1]=threadhoehe/2+40;
		p2.ypoints[2]=threadhoehe/2+40;
		p2.ypoints[3]=threadhoehe/2;
		p2.ypoints[4]=threadhoehe/2-40;
	}
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben