Guten Abend,
ich bin gerade dabei ein "Risiko"-Spiel zu schreiben, möglich ressourcensparend und stehe gerade an dem Punkt, an dem ich mich frage, welche Art und Weise dafür am besten geeignet ist:
Ich habe die Koordinaten der Länder als Polygons in Länderklassen hinterlegt und diese wieder rum in Kontinentklassen. Das JPanel zeichnet in einer for-Schleife jedes Land mit paintComponent(g); Jetzt muss ich die Mausposition dem entsprechenden Land zuweisen, beim drücken der linken Maustaste.
meine Idee: MouseListener im JPanel und erst den Kontinent über contains() und dann in einer for-Schleife das Land mit der selben Methode zu ermitteln.
das ganze scheint mir aber ein wenig umständlich. Hat jemand vielleicht Erfahrung mit dem Thema?
[CODE lang="java" title="Spielfeld"]class Spielfeld extends JPanel
{
@Override
public void paintComponent(Graphics g)
{
for(Kontinent k : Main.karte.getKontinente()) k.zeichne(g);
}[/CODE]
[CODE lang="java" title="class Kontinent"] public void zeichne(Graphics g)
{
for(Land l : länder) l.zeichne(g);
}[/CODE]
[CODE lang="java" title="class Land"] public void zeichne(Graphics g)
{
Graphics g2 = g;
g.setColor(bes.getFarbe());
g.fillPolygon(this.p);
g.setColor(Color.BLACK);
g.setFont(new Font(Font.SERIF, Font.BOLD, 15));
g.drawString(this.name, mitte.x-20, mitte.y);
g.drawPolygon(p);
g = g2;
}
[/CODE]
Vielen Dank im vorraus!
ich bin gerade dabei ein "Risiko"-Spiel zu schreiben, möglich ressourcensparend und stehe gerade an dem Punkt, an dem ich mich frage, welche Art und Weise dafür am besten geeignet ist:
Ich habe die Koordinaten der Länder als Polygons in Länderklassen hinterlegt und diese wieder rum in Kontinentklassen. Das JPanel zeichnet in einer for-Schleife jedes Land mit paintComponent(g); Jetzt muss ich die Mausposition dem entsprechenden Land zuweisen, beim drücken der linken Maustaste.
meine Idee: MouseListener im JPanel und erst den Kontinent über contains() und dann in einer for-Schleife das Land mit der selben Methode zu ermitteln.
das ganze scheint mir aber ein wenig umständlich. Hat jemand vielleicht Erfahrung mit dem Thema?
[CODE lang="java" title="Spielfeld"]class Spielfeld extends JPanel
{
@Override
public void paintComponent(Graphics g)
{
for(Kontinent k : Main.karte.getKontinente()) k.zeichne(g);
}[/CODE]
[CODE lang="java" title="class Kontinent"] public void zeichne(Graphics g)
{
for(Land l : länder) l.zeichne(g);
}[/CODE]
[CODE lang="java" title="class Land"] public void zeichne(Graphics g)
{
Graphics g2 = g;
g.setColor(bes.getFarbe());
g.fillPolygon(this.p);
g.setColor(Color.BLACK);
g.setFont(new Font(Font.SERIF, Font.BOLD, 15));
g.drawString(this.name, mitte.x-20, mitte.y);
g.drawPolygon(p);
g = g2;
}
[/CODE]
Vielen Dank im vorraus!