Hallo!
Wir wollen in der Schule jetzt damit beginnen, grafische Objekte in Java zu erstellen. Wir haben direkt mal die Aufgabe gekriegt, uns im Internet über die Grundlagen dafür klar zu werden und direkt mal ein Programm zu schreiben, das eine Grafik rekursiv aufbaut.
Ausgewählt hab ich dafür folgendes, weil ich dachte es wäre für den Anfang nicht so schwer:
man beginnt mit einem Rechteck, hängt an dieses ein Dreieck, daran wieder ein Rechteck usw., also etwa so:
Nach einiger Arbeit bin ich zu folgendem Ansatz gekommen:
Ich bin in Graphics und Rekursion noch ein Anfänger, deswegen bräuchte ich ein wenig Hilfe. Mit dem obigen Code wird erstmal ein Quadrat und ein Dreieck erzeugt, so wie es sein soll. Wenn ich nun die Kommentare bei *Rechteck* lösche, sollten die Koordinaten des nächsten Rechtecks angepasst werden, aber stattdessen wird das erste völlig deformiert, was ich nicht so ganz verstehe.
Und das nächste wäre dann, die Koordinaten der Folgeglieder richtig zu bestimmen, denn so ganz stimmt das noch nicht, so hätte ich viele Drei- und Rechtecke in einer Reihe. Ich bräuchte etwas, womit ich eine Senkrechte auf der jeweils rechten Seite erzeugen kann (beim Dreieck und beim Quadrat ist es beide Male die Strecke BC), da ja das Objekt unter einem gewissen Winkel geneigt sein soll.
Das ganze ist ziemlich komplex, ich hoffe dass da jemand durchblickt und mir helfen kann, danke schonmal
Gruß,
Topblocker
Wir wollen in der Schule jetzt damit beginnen, grafische Objekte in Java zu erstellen. Wir haben direkt mal die Aufgabe gekriegt, uns im Internet über die Grundlagen dafür klar zu werden und direkt mal ein Programm zu schreiben, das eine Grafik rekursiv aufbaut.
Ausgewählt hab ich dafür folgendes, weil ich dachte es wäre für den Anfang nicht so schwer:
man beginnt mit einem Rechteck, hängt an dieses ein Dreieck, daran wieder ein Rechteck usw., also etwa so:
Nach einiger Arbeit bin ich zu folgendem Ansatz gekommen:
Java:
import java.awt.*;
import java.applet.*;
public class combine extends Applet // Anfang bei 200|200
{
public int[] Dx1;
public int[] Dy1;
public int[] Dx2;
public int[] Dy2;
public int[] Rx1;
public int[] Ry1;
public int[] Rx2;
public int[] Ry2;
public int c=0; // recCounter
public boolean Fortsetzen=true;
public combine()
{
this.Dx1 = new int[100];
this.Dy1 = new int[100];
this.Dx2 = new int[100];
this.Dy2 = new int[100];
this.Rx1 = new int[100];
this.Ry1 = new int[100];
this.Rx2 = new int[100];
this.Ry2 = new int[100];
for(int i=0; i<=10; i++){
Rx1[i] = 200;
Ry1[i] = 200;
Rx2[i] = 200;
Ry2[i] = 200;
}
}
public void init(Graphics g){
if(Fortsetzen == true){
paint(g);
}
}
public void paint(Graphics g)
{
if(c == 2){
Fortsetzen = false;
}
c++;
Rechteck(g,Rx1[c],Ry1[c],Rx2[c],Ry2[c]);
/* Dreieck --> Ausgangspunkte an die obere rechte Ecke des Rechtecks */
Dx2[c] = Rx2[c] + 30;
Dy2[c] = Ry2[c];
Dx1[c] = Dx2[c] + 30;
Dy1[c] = Dy2[c];
Dreieck(g,Dx1[c],Dy1[c],Dx2[c],Dy2[c]);
/* Rechteck */
//Rx1[c+1] = Dx1[c];
//Ry1[c+1] = Dy1[c];
//Rx2[c+1] = Rx1[c+1] + 30;
//Ry2[c+1] = Ry1[c+1];
init();
}
public void Dreieck(Graphics g, int Dx1, int Dy1, int Dx2, int Dy2)
{
g.setColor(Color.blue);
g.drawLine(Dx1,Dy1,Dx2,Dy2); // Strecke BA
g.drawLine(Dx1,Dy1,Dx2,Dy2+30); // Strecke BC
g.drawLine(Dx1-30,Dy1,Dx2,Dy2+30); // Strecke AC
}
public void Rechteck(Graphics g, int Rx1, int Ry1, int Rx2, int Ry2)
{
g.setColor(Color.red);
g.drawLine(Rx1,Ry1,Rx2+30,Ry2); // Strecke AB (200,200,230,200)
g.drawLine(Rx1+30,Ry1,Rx2+30,Ry2+30); // Strecke BC (230,200,230,230)
g.drawLine(Rx1+30,Ry1+30,Rx2,Ry2+30); // Strecke CB (230,230,200,230)
g.drawLine(Rx1,Ry1+30,Rx2,Ry2); // Strecke DA (200,230,200,200)
}
}
Ich bin in Graphics und Rekursion noch ein Anfänger, deswegen bräuchte ich ein wenig Hilfe. Mit dem obigen Code wird erstmal ein Quadrat und ein Dreieck erzeugt, so wie es sein soll. Wenn ich nun die Kommentare bei *Rechteck* lösche, sollten die Koordinaten des nächsten Rechtecks angepasst werden, aber stattdessen wird das erste völlig deformiert, was ich nicht so ganz verstehe.
Und das nächste wäre dann, die Koordinaten der Folgeglieder richtig zu bestimmen, denn so ganz stimmt das noch nicht, so hätte ich viele Drei- und Rechtecke in einer Reihe. Ich bräuchte etwas, womit ich eine Senkrechte auf der jeweils rechten Seite erzeugen kann (beim Dreieck und beim Quadrat ist es beide Male die Strecke BC), da ja das Objekt unter einem gewissen Winkel geneigt sein soll.
Das ganze ist ziemlich komplex, ich hoffe dass da jemand durchblickt und mir helfen kann, danke schonmal
Gruß,
Topblocker
Zuletzt bearbeitet: