Bilderpositionierung mit Maus

Status
Nicht offen für weitere Antworten.
D

DarkShadow

Gast
Hallo !

Wir müssen für ein Schulprojekt ein Schachspiel mit java programmieren.
Bis jetzt haben wir das Schachfeld mit Menü etc. gezeichnet. Nun wollen wir Bilder einfügen, welche die Figuren sein sollen. Unser Problem ist nun, das wir die jeweiligen Bilder bzw. Figuren mit der Maus bewegen / positionieren wollen. Allerdings bewegt sich bei uns nicht nur ein Bild sondern alle Bilder die auf der jewiligen Höhe sind. Das heißt das wir die einzelnen Figuren nicht setzen können.


PS: Wir haben es bis jetzt so geplant gehabt das für jede Figur eine extra Klasse programmiert werden soll, in der die erlaubten Spielzüge etc. gespeichert sind.

Wir hoffen auf eure Hilfe

[/code]
 

LoN_Nemesis

Bekanntes Mitglied
Wir hoffen auf etwas Code!

Spontan würde ich jetzt raten, dass ihr die Koordinaten der Figuren als Point speichert und alle Figuren in einer Reihe auf das gleiche Point Objekt zeigen, aber das ist einfach nur geraten und höchstwahrscheinlich total vorbei :p
 

DarkShadow

Neues Mitglied
Quellcode vom Schachbrett:


Code:
import java.io.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

class Schachbrett extends JPanel
{
 private boolean schwarz = false;
 private BauerWeiss1 bw1;
 private int yPos = 300;
 
   public void paintComponent(Graphics g)
  {
    super.paintComponent(g);
    int anzahlhorizontal = 0;
    int anzahlvertikal = 0;
    int x = 0;
    int y = 0;

    bw1 = new BauerWeiss1();
    //Schachbrettfelder abwechselnd erzeugen
    while(anzahlvertikal <= 8)
    {

      while(anzahlhorizontal <= 4)
      {
        if(schwarz == false)
        {
          g.setColor(Color.WHITE);
        }
        else
        {
          g.setColor(Color.GRAY);
        }
        g.fillRect(x, y, 50, 50);
        g.setColor(Color.GRAY);
        g.drawRect(x, y, 50, 50);
        if(schwarz == false)
        {
          g.setColor(Color.GRAY);
        }
        else
        {
          g.setColor(Color.white);
        }

        g.fillRect(x+50, y, 50, 50);
        g.setColor(Color.GRAY);
        g.drawRect(x+50, y, 50, 50);

        anzahlhorizontal++;
        x = x+100;
      }
      anzahlhorizontal = 0;
      x = 0;
      y = y+50;
      anzahlvertikal++;
      if(schwarz == false)
      {
        schwarz = true;
      }
      else
      {
        schwarz = false;
      }
    }
          schwarz = true;
          
       addMouseMotionListener(new MouseMotionAdapter()
        {
           public void mouseDragged(MouseEvent e)
          {
             yPos = e.getY();
             repaint();

          }
        });


        g.drawImage(bw1.bauerweiß, bw1.xPos, yPos, 50, 50, this);

          

  }

}



Quellcode der Figur BauerWeiß:


Code:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

class BauerWeiss1 extends JPanel
{

  public int xPos = 0;
  public int yPos = 300;
  private Schachbrett sb;
  Image bauerweiß = Toolkit.getDefaultToolkit().getImage( "BauerWeiß.gif");
   public void paintComponent(Graphics g)
   {
     super.paintComponent(g);

   }

   public int getxPos()
   {
     return xPos;
   }

   public int getyPos()
   {
     return yPos;
   }
   
   
}
 

LoN_Nemesis

Bekanntes Mitglied
An dem Code sind mehrere Sachen sehr schlecht.

1. Die paintComponent Methode ist (wie der Name schon sagt) nur dazu da um Dinge darzustellen. Du solltest dort keinesfalls so Sachen machen wie deine Figuren erstellen oder einen MouseListener adden. Das ergibt auch überhaupt keinen Sinn, denn es reicht völlig EINEN MouseListener zu pro Fenster zu haben.

2. Für jede Farb-/Figurenkombination eine eigene Klasse zu erstellen halte ich für umständlich. Besser: Erstelle eine abstrakte Klasse "Figur" von der alle konkreten Figuren dann erben. Außerdem würde ich Weiss oder Schwarz einfach als Attribut einer Figur definieren. Dann kommst du mit 8(+1 abstrakte) kleinen Klassen für die Figuren aus. BauerWeiss1 <-- Das sieht ja fast so aus, als wolltest du wirklich für jede einzelne Figur eine Klasse erstellen. BauerWeiss1-8?

3. Warum erbt BauerWeiss1 von JPanel? Eine Figur ist doch kein Panel.
 

DarkDragoon

Mitglied
tach, ich bin der Projekt Partner von DarkShadow.
schon ma danke für die Hinweise aber kannst du uns sagen wie wir wie figuren am besten bewegen können?

Schon ma danke im vorraus
 

Marco13

Top Contributor
Eine Klasse für jede Figuren-Art (6 Stück), die alle von "Figur" (und NICHT von JPanel) erben ist OK. Dann habt ihr mehrere Objekte vom Typ "Figur" auf dem Spielfeld. Für jede Figur kennt ihr die X/Y Position, und vermutlich auch die Größe des Bildes, das diese Figur darstellt. Dann könnt ihr eurem Spielbrett einen MouseListener geben. Wenn die Maus gedrückt wird (mousePressed) schaut ihr, ob dabei eine Figur getroffen wurde (mit sowas wie figur[x].contains(mouseEvent.getPoint())). Falls ja, merkt ihr euch diese Figur. In der MouseDraged-Methode veschiebt ihr die Figur dann an die aktuelle Mausposition.
 
G

Guest

Gast
okay, danke für die antwort.

wir haben jetzt aber ein anderes problem und zwar das der die Klasse bauer nicht aufgerufen wird, wenn das er gezeichnet werden soll.


in dieser Klase wird das Schachbrett gezeichnet
Code:
import java.awt.*;
import javax.swing.*;


public class Schachbrett extends JPanel
{
	 private boolean schwarz;
	 private Bauer  bw1;
	 
	   public void paint(Graphics g)
	  {
	    super.paintComponent(g);
	    int anzahlhorizontal = 0;
	    int anzahlvertikal = 0;
	    int x = 0;
	    int y = 0;
	    schwarz = false;

	    //Schachbrettfelder abwechselnd erzeugen
	    while(anzahlvertikal <= 8)
	    {

	      while(anzahlhorizontal <= 4)
	      {
	        if(schwarz == false)
	        {
	          g.setColor(Color.WHITE);
	        }
	        else
	        {
	          g.setColor(Color.GRAY);
	        }
	        g.fillRect(x, y, 50, 50);
	        g.setColor(Color.GRAY);
	        g.drawRect(x, y, 50, 50);
	        if(schwarz == false)
	        {
	          g.setColor(Color.GRAY);
	        }
	        else
	        {
	          g.setColor(Color.white);
	        }

	        g.fillRect(x+50, y, 50, 50);
	        g.setColor(Color.GRAY);
	        g.drawRect(x+50, y, 50, 50);

	        anzahlhorizontal++;
	        x = x+100;
	      }
	      anzahlhorizontal = 0;
	      x = 0;
	      y = y+50;
	      anzahlvertikal++;
	      if(schwarz == false)
	      {
	        schwarz = true;
	      }
	      else
	      {
	        schwarz = false;
	      }
	    }
	    
	    //Figuren
	    System.out.print("bauer wird erstellt");
	    bw1 = new Bauer(0, 100, true, false);
	    
	  }
}


und dies ist die Klasse für den Bauern
Code:
import java.awt.*;

public class Bauer extends Figuren
{
	private int xPos;		
	private int yPos;
	private boolean weiß;	// farbe weiß oder nicht?
	private boolean weg;	// noch auf dem feld?
	private Image bw;
	
	
	public Bauer(int x, int y, boolean w, boolean we)
	{
		x = xPos;
		y = yPos;
		w = weiß;
		we = weg;
		
	}
		
		
	public void paint(Graphics g)
	{
		if(weiß == true)
		{
			System.out.print("weiß");
			bw = Toolkit.getDefaultToolkit().getImage( "BauerWeiß.gif");
			
		}
		else
		{
			System.out.println("schwarz");
			bw = Toolkit.getDefaultToolkit().getImage( "BauerSchwarz.gif");
		}
		g.drawImage(bw, xPos, yPos, null);
	}
}

ich hoffe ihr könnt uns helfen

MfG Darkdragoon
 

Marco13

Top Contributor
Im Moment wird der Bauer innerhalb der paint-Methode erstellt. Das sollte aber NICHT so sein. Gezeichnet wird er erstmal nirgendwo.

Die Figuren sollten in einer "initialisierungs-Methode" erstellt werden. Je nachdem, welches Konzept ihr euch erarbeitet habe (FALLS ihr euch ein Konzept erarbeitet habt :wink: ) liegen die Figuren dann in einem eigenen Array, oder auf den einzelnen Feldern, oder beides. (Im Moment liegt der Bauer ja noch als eigene Variable im Spielbrett - davon solltet ihr Abstand nehmen).

Die Paint-Methode des Spielbrettes ist ... hm ... also, die könnte man schöner schreiben.

Jedenfalls würde man in der Paint-Methode des Spielbrettes dann alle Figuren nacheinander zeichnen:
Code:
public class Schachbrett extends JPanel
{
    private Figuren figuren[]; // NUR EIN BEISPIEL!
   
    public void init()
    {
        ...
        figuren[x] = new Bauer(....); // Einmal während der Initialisierung erstellen....
    }


      public void paint(Graphics g)
      {
          ...
          for (int i=0; i<figuren.length; i++)  // Alle figuren malen
         { 
              figuren[i].paint(g);
          }
      }
...

Außerdem sollte das Bild für die Figuren auch NICHT in der paint-Methode der Figuren geladen werden, sondern am besten im Konstruktor. Wenn man bei jedem Neuzeichnen das Bild neu lädt, wird's grottenlangsam...
 

Micha_S

Aktives Mitglied
Anonymous hat gesagt.:
Code:
public Bauer(int x, int y, boolean w, boolean we)
	{
		x = xPos;
		y = yPos;
		w = weiß;
		we = weg;
	}

Ich könnte wetten, dass das so rum soll:
Code:
public Bauer(int x, int y, boolean w)
	{
		xPos = x;
		yPos = y;
		weiß = w;
		weg = false;
	}
Und das weg könnt ihr direkt, ohne Parameter mit false belgen,
weil es keinen Sinn macht einen Bauern zu erstellen der schon "weg" sein könnte. :wink:
 

DarkDragoon

Mitglied
Danke für die Hinweise^^


wenn ich das mit dem array versuche mekert er bei dem figuren.paint(g); rum, also nicht im compiler sondern beim ausführen und die paint methode in der abstrakten klasse Figuren enthält ja auch nichts. woher soll er denn dann wisen was er zeichnen soll? sorry wenns ne dumme frage ist aber wir haben noch nie vorher mit abstrakten klassen gearbeitet.

MfG DarkDragoon
 

Marco13

Top Contributor
Naja, das ist ja der Trick (Suchmaschinen-Stichwort: "Polymorphie" / "Polymorphism" - klingt komplizierter, als es ist)

In der abstrakten Klasse "Figur" wird die abstrakte Methode "paint" definiert.
Dann leitete man davon konkrete Klassen ab.
In der Klasse "Bauer" malt "paint" einen Bauer.
In der Klasse "Ritter" malt "paint" einen Ritter.
In der Klasse "Turm" malt "paint" einen Turm.

In dem Array liegen nur "Figur"en. Egal, WAS für eine Figur das ist: Auf JEDER Figur kann man "paint" aufrufen, und sie weiß, wie sie sich selbst zu zeichnen hat.

Kurz: Es sollte funktionieren. Poste evtl. mal die relevanten Code-Stellen.
 

DarkDragoon

Mitglied
okay

hier ist die klasse bauer

Code:
import java.awt.*;

public class Bauer extends Figuren
{
	private int xPos;		
	private int yPos;
	private boolean weiß;	// farbe weiß oder nicht?
	private boolean weg;	// noch auf dem feld?
	private Image bw = Toolkit.getDefaultToolkit().getImage( "BauerWeiß.gif");	

	
	public Bauer(int x, int y, boolean w)
	{
		xPos = x;
		yPos = y;
		weiß = w;
		weg = false;
		
	}
		
		
	public void paint(Graphics g)
	{

		g.drawImage(bw, xPos, yPos, null);
	}
}

und hier die Schachbrett Klasse

Code:
import java.awt.*;
import javax.swing.*;


public class Schachbrett extends JPanel
{
	 private boolean schwarz;
	 private Figuren figuren[] = new Figuren[0];
	 
	 public void init()
	 {
		 figuren[0] = new Bauer(200, 200, false);
	 }
	 
	   public void paint(Graphics g)
	  {
        ...
	    for(int i = 0; i < figuren.length; i++)
	    {
	    	figuren[i].paint(g);
	    }
	  }
}
 

Micha_S

Aktives Mitglied
DarkDragoon hat gesagt.:
Code:
private Figuren figuren[] = new Figuren[0];
	 
	 public void init()
	 {
		 figuren[0] = new Bauer(200, 200, false);
	 }

Solltest du hier nicht eine ArrayOutOfBounds Exception bekommen?
Du erstellst ein Array mit 0 Elementen und versuchts dann auf das erste zuzugreifen...

Code:
private Figuren figuren[] = new Figuren[1];
	 
	 public void init()
	 {
		 figuren[0] = new Bauer(200, 200, false);
	 }
So müsste das eigentlich gehen
 

DarkDragoon

Mitglied
geht trotzdem net. jedesmal wenn ich das schachfeld zeichnen lassen will, bekomme ich diese fehlermeldung

  • Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at Schachbrett.paint(Schachbrett.java:74)
    at javax.swing.JComponent.paintChildren(Unknown Source)
    at javax.swing.JComponent.paint(Unknown Source)
    at javax.swing.JComponent.paintChildren(Unknown Source)
    at javax.swing.JComponent.paint(Unknown Source)
    at javax.swing.JComponent.paintChildren(Unknown Source)
    at javax.swing.JComponent.paint(Unknown Source)
    at javax.swing.JLayeredPane.paint(Unknown Source)
    at javax.swing.JComponent.paintChildren(Unknown Source)
    at javax.swing.JComponent.paint(Unknown Source)
    at javax.swing.JComponent.paintWithOffscreenBuffer(Unknown Source)
    at javax.swing.JComponent.paintDoubleBuffered(Unknown Source)
    at javax.swing.JComponent._paintImmediately(Unknown Source)
    at javax.swing.JComponent.paintImmediately(Unknown Source)
    at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
    at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

PS: in zeile 74 wird die figur gemalt
 

Leroy42

Top Contributor
DarkDragoon hat gesagt.:
geht trotzdem net. jedesmal wenn ich das schachfeld zeichnen lassen will, bekomme ich diese fehlermeldung

  • Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at Schachbrett.paint(Schachbrett.java:74)
    PS: in zeile 74 wird die figur gemalt


  • Und was steht in Zeile 74 (und drum herum?)
 

DarkDragoon

Mitglied
das

Code:
public void paint(Graphics g)
     {
        ...
       for(int i = 0; i < figuren.length; i++)
       {
          figuren[i].paint(g);
       }
     }

der rest des quelltextes steht oben, es ist die Schachbrett Klasse
 

Leroy42

Top Contributor
Na dann kann ja eine NullPointerException nur dann
auftreten, wenn entweder figuren selbst null ist
oder einer Arraykomponenten figuren
 

Marco13

Top Contributor
Code?
Code:
import java.awt.*;
import javax.swing.*;




public class Schachbrett extends JPanel
{
    public static void main(String args[])
    {
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Schachbrett s = new Schachbrett();
        s.init();
        f.getContentPane().add(s);
        f.setSize(300,300);
        f.setVisible(true);
    }


    private Figuren figuren[] = new Figuren[1];

    public void init()
    {
       figuren[0] = new Bauer(200, 200, false);
    }

    private boolean schwarz;

      public void paint(Graphics g)
     {
       super.paintComponent(g);
       int anzahlhorizontal = 0;
       int anzahlvertikal = 0;
       int x = 0;
       int y = 0;
       schwarz = false;

       //Schachbrettfelder abwechselnd erzeugen
       while(anzahlvertikal <= 8)
       {

         while(anzahlhorizontal <= 4)
         {
           if(schwarz == false)
           {
             g.setColor(Color.WHITE);
           }
           else
           {
             g.setColor(Color.GRAY);
           }
           g.fillRect(x, y, 50, 50);
           g.setColor(Color.GRAY);
           g.drawRect(x, y, 50, 50);
           if(schwarz == false)
           {
             g.setColor(Color.GRAY);
           }
           else
           {
             g.setColor(Color.white);
           }

           g.fillRect(x+50, y, 50, 50);
           g.setColor(Color.GRAY);
           g.drawRect(x+50, y, 50, 50);

           anzahlhorizontal++;
           x = x+100;
         }
         anzahlhorizontal = 0;
         x = 0;
         y = y+50;
         anzahlvertikal++;
         if(schwarz == false)
         {
           schwarz = true;
         }
         else
         {
           schwarz = false;
         }
       }


       for(int i = 0; i < figuren.length; i++)
       {
          figuren[i].paint(g);
       }

     }
}

abstract class Figuren
{
    abstract public void paint(Graphics g);
}

class Bauer extends Figuren
{
   private int xPos;
   private int yPos;
   private boolean weiß;   // farbe weiß oder nicht?
   private boolean weg;   // noch auf dem feld?
   private Image bw;


   public Bauer(int x, int y, boolean w)
   {
      xPos = x;
      yPos = y;
      weiß = w;
   }


   public void paint(Graphics g)
   {
       g.setColor(Color.red);
       g.drawString("Bauer",xPos,yPos);

      //g.drawImage(bw, xPos, yPos, null);
   }
}
 
G

Guest

Gast
ich hab den fehler nun, hab vergessen die init() methode aufzurufen :oops: :oops:

allerdings wird zwar jetzt das programm gestartet aber der Bauer wird nicht gezeichnet

hier nochma der code für die Bauer Klasse

Code:
import java.awt.*;

public class Bauer extends Figuren
{
	private int xPos;
	private int yPos;
	private boolean weiß;
	private boolean weg;
	private Image bw = Toolkit.getDefaultToolkit().getImage( "BauerWeiß.gif");	

	
	public Bauer(int x, int y, boolean w)
	{
		xPos = x;
		yPos = y;
		weiß = w;
		weg = false;
	}
		
		
	public void paint(Graphics g)
	{
		g.setColor(Color.red);
		g.drawString("Bauer", xPos, yPos);
		
		g.drawImage(bw, xPos, yPos, null);
	}
}

der String wird aber gezeichnet, aber bei mir wird das Image gar nicht geladen denk ich ma.

die schachbrettklasse is gleich geblieben
und da alles wir von der SchachGUI Klasse aus gestartet, wo auch das menü etc ist.
 

Micha_S

Aktives Mitglied
Wenn mich nicht alles täuscht müsst ihr der drawImage() Methode noch einen ImageObserver
anstatt des null mitgeben. Das wäre in eurem Fall das JPanel.
 

Marco13

Top Contributor
Bin grad nicht 100% sicher, aber ich glaube, einen ImageObserver braucht man glaubich nicht unbedingt - allerdings muß dann irgendwie sichergestellt sein, dass das Bild vollständig geladen ist. Du solltest das Bild vmtl. im Konstruktor laden, und einen (Websuch-Stichwort: ) MediaTracker drumwickeln.
 

DarkDragoon

Mitglied
super das mt den figuren klappt jetzt wunderbar :) .
es lag am fehlenden MediaTracker.

Aber jetzt haben wir ein neues problem(jaja ich weiß wir nerven^^) nämlich das weshalb dieser Thread aufgemacht wurde, das bewegen der Figuren. wir haben es so verucht wie ihr es uns gesagt habt aber er findet contains nicht.

also noch mal der code^^

Code:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;


public class Schachbrett extends JPanel
{
   private boolean schwarz;
   private Figuren figuren[] = new Figuren[32];
   
   public Schachbrett()
   {
     addMouseListener(new MouseAdapter()
     {
      public void mousePressed(MouseEvent e)
      {
         for(int i = 0; i < figuren.length; i++)
         {
           figuren[i].contains(e.getPoint()) ;
         }
      }
     });
     addMouseMotionListener(new MouseMotionAdapter()
     {

      public void mouseDragged(MouseEvent e)
      {

      }
     });
   }
   
   public void init()
   {
     figuren[0] = new Bauer(5, 305, true);
     figuren[1] = new Bauer(55, 305, true);
     figuren[2] = new Bauer(105, 305, true);
     figuren[3] = new Bauer(155, 305, true);
     figuren[4] = new Bauer(205, 305, true);
     figuren[5] = new Bauer(255, 305, true);
     figuren[6] = new Bauer(305, 305, true);
     figuren[7] = new Bauer(355, 305, true);
     figuren[8] = new Turm(5, 355, true);
     figuren[9] = new Pferd(55, 355, true);
     figuren[10] = new Laeufer(105, 355, true);
     figuren[11] = new Dame(155, 355, true);
     figuren[12] = new Koenig(205, 355, true);
     figuren[13] = new Laeufer(255, 355, true);
     figuren[14] = new Pferd(305, 355, true);
     figuren[15] = new Turm(355, 355, true);
     figuren[16] = new Bauer(5, 55, false);
     figuren[17] = new Bauer(55, 55, false);
     figuren[18] = new Bauer(105, 55, false);
     figuren[19] = new Bauer(155, 55, false);
     figuren[20] = new Bauer(205, 55, false);
     figuren[21] = new Bauer(255, 55, false);
     figuren[22] = new Bauer(305, 55, false);
     figuren[23] = new Bauer(355, 55, false);
     figuren[24] = new Turm(5, 5, false);
     figuren[25] = new Pferd(55, 5, false);
     figuren[26] = new Laeufer(105, 5, false);
     figuren[27] = new Dame(155, 5, false);
     figuren[28] = new Koenig(205, 5, false);
     figuren[29] = new Laeufer(255, 5, false);
     figuren[30] = new Pferd(305, 5, false);
     figuren[31] = new Turm(355, 5, false);
   }
   
     public void paint(Graphics g)
    {
      super.paintComponent(g);
      int anzahlhorizontal = 0;
      int anzahlvertikal = 0;
      int x = 0;
      int y = 0;
      schwarz = false;

      //Schachbrettfelder abwechselnd erzeugen
      while(anzahlvertikal <= 8)
      {

        while(anzahlhorizontal <= 4)
        {
          if(schwarz == false)
          {
            g.setColor(Color.WHITE);
          }
          else
          {
            g.setColor(Color.GRAY);
          }
          g.fillRect(x, y, 50, 50);
          g.setColor(Color.GRAY);
          g.drawRect(x, y, 50, 50);
          if(schwarz == false)
          {
            g.setColor(Color.GRAY);
          }
          else
          {
            g.setColor(Color.white);
          }

          g.fillRect(x+50, y, 50, 50);
          g.setColor(Color.GRAY);
          g.drawRect(x+50, y, 50, 50);

          anzahlhorizontal++;
          x = x+100;
        }
        anzahlhorizontal = 0;
        x = 0;
        y = y+50;
        anzahlvertikal++;
        if(schwarz == false)
        {
          schwarz = true;
        }
        else
        {
          schwarz = false;
        }
      }
      for(int i = 0; i < figuren.length; i++)
      {
        figuren[i].paint(g);
      }
    }
    


}


un hier die fehlermeldung:
No accessible method with signature "contains(java.awt.Point)" was found in type "Figuren".


könnt ihr uns ein weiteres mal helfen ? ^^'
 

Marco13

Top Contributor
Die Methode "contains" kann direkt in die "Figuren"-Klasse. Sinngemäß (!) sowas wie
Code:
public boolean contains(Point p)
{
    Rectangle r = new Rectangle(posX, posY, sizeX, sizeY);
    return r.contains(p);
}
(geht halt auch schöner und effizienter)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Mausbewegungen wie eine echte Maus in 3 dimensionalen Spielen Spiele- und Multimedia-Programmierung 12
N Schüsse in Richtung der Maus Spiele- und Multimedia-Programmierung 5
B GLFW 3D Maus- Input Spiele- und Multimedia-Programmierung 7
Arif Maus-Objekt im Player Klasse implementieren !? Spiele- und Multimedia-Programmierung 2
B Maus Cursor aus/einblenden bei Unity 3d mit .js Spiele- und Multimedia-Programmierung 1
M [JOGL] Maus über einem gezeichnetem Objekt abfragen? Spiele- und Multimedia-Programmierung 5
S Mausklicks innerhalb eines JFrames/SWTBrowser ohne richtige Maus simulieren Spiele- und Multimedia-Programmierung 6
L Bild in Richtung Maus drehen Spiele- und Multimedia-Programmierung 4
M Maus an Fedenkreuz heften Spiele- und Multimedia-Programmierung 16
M Beim schießen richtet sich die Kugel nach der Maus aus (Quaternion) Spiele- und Multimedia-Programmierung 5
D Sprite zur Maus bewegen Spiele- und Multimedia-Programmierung 9
G Maus springt --> Free-Hand-Zeichnen Spiele- und Multimedia-Programmierung 2
G Zeichnung mit der Maus bewegen Spiele- und Multimedia-Programmierung 3
S Schiff in Richtung der Maus rotieren - Problem :/ Spiele- und Multimedia-Programmierung 5
M Grafikprogramm, zeichnen mit Maus Spiele- und Multimedia-Programmierung 7
S Problem bei Kartenbewegung mit Maus! Spiele- und Multimedia-Programmierung 3
M Exakte Position auf Kugel mit Maus picken , Java3d Spiele- und Multimedia-Programmierung 14
T Maus-Cursor-Position manipulieren Spiele- und Multimedia-Programmierung 3
K Ein 3D-Objekt mit Maus auswählen Spiele- und Multimedia-Programmierung 5
T Problem mit Maus und Bildschirm Spiele- und Multimedia-Programmierung 3
C NavigationBehaviour mit Maus und Keyboard Spiele- und Multimedia-Programmierung 5
A Maus im Spiel-Menu oder nicht? Spiele- und Multimedia-Programmierung 5

Ähnliche Java Themen

Neue Themen


Oben