Linie zeichnen

Fabian04088

Aktives Mitglied
könnt ihr mir dabei helfen ich darf keine math.abs oder so benutzen

* Draws a horizontal line from (xStart, y) to (xEnd, y) (both end points included), using the character c.
* If xEnd is less than xStart, then this function does nothing.
* If the line starts or ends outside the plottingArea, then this function only plots the part laying inside the canvas.
*
* @param xStart x coordinate of start point of line.
* @param xEnd x coordinate of end point of line
* @param y y coordinate of line
* @param c character to draw the line with
*/
public static void plotHorizontalLine(int xStart, int xEnd, int y, char c)
 

Fabian04088

Aktives Mitglied
ach ja und er will das ich disem code benutzen muss aber habe keine Ahnung wie und wo ich den Code da benutzen kann


public static boolean plotChar(int x, int y, char c) {
if ((x < 0 || x > plottingArea.length) || (y < 0 || y > plottingArea[x].length)) {
return false;
} else {
plottingArea [x][y] = c;
return true;
 

mihe7

Top Contributor
Fabian04088 hat gesagt.:
for (int i = 0; i < xEnd; i++)
ich konnte leider nur die for schleife schreiben was anderes kann ich mir nicht mehr denken :(
...
ach ja und er will das ich disem code benutzen muss aber habe keine Ahnung wie und wo ich den Code da benutzen kann
Die Methode plotChar zeichnet das durch c gegebene Zeichen an der mit x und y gegebenen Position des Zeichenbereichs, sofern der Punkt in diesem Bereich liegt. Die Methode kannst Du mit den entsprechenden Parametern aufrufen, um zu zeichnen.

Beschreib doch mal in Worten, was Du machen würdest.
 

Fabian04088

Aktives Mitglied
vor die Länge der Linie musst ich halt die Punkte zeichnen und die zeichne ich mit der Funktion plotchar muss da in den Klammern halt noch die Koordinaten angeben Die x Koordinate ändert sich, die y nicht aber ich komm da halt irgendwie nicht weiter
 

mihe7

Top Contributor
aber ich komm da halt irgendwie nicht weiter
Wir sind ja schon dabei aber ein wenig Einsatz wirst Du schon bringen müssen :)

vor die Länge der Linie musst ich halt die Punkte zeichnen und die zeichne ich mit der Funktion plotchar muss da in den Klammern halt noch die Koordinaten angeben
Richtig, um an einem Punkt ein Zeichen zu zeichnen musst Du plotChar die Koordinaten und das Zeichen mitgeben.

Nehmen wir an, Du möchtest an stelle (x,y) ein '*' zeichnen, wie sähe der Code dazu aus?
 

Fabian04088

Aktives Mitglied
puh das weiss ich eben nicht so ganz bin gerade seit 3 Wochen dran in Programmieren und kenne mich da nicht so gut aus wie ich anfangen kann :(
Wir sind ja schon dabei aber ein wenig Einsatz wirst Du schon bringen müssen :)


Richtig, um an einem Punkt ein Zeichen zu zeichnen musst Du plotChar die Koordinaten und das Zeichen mitgeben.

Nehmen wir an, Du möchtest an stelle (x,y) ein '*' zeichnen, wie sähe der Code dazu aus?
 

mihe7

Top Contributor
Eine Methode rufst Du auf, indem Du ihren Namen nennst und in Klammern die Parameter angibst. Eine Anweisung beendest Du mit einem Semikolon, d. h. um ein '*' an Position x, y zu zeichnen kannst Du (weil Dir Dein Lehrer die Methode gegeben hat), einfach schreiben: plotChar(x, y, '*');.

Andere Frage: was glaubst Du, macht der folgende Code?
Java:
int x = 5;
while (x < 10) {
    x++;
}
 

Fabian04088

Aktives Mitglied
die schleife geht so lange weiter
Eine Methode rufst Du auf, indem Du ihren Namen nennst und in Klammern die Parameter angibst. Eine Anweisung beendest Du mit einem Semikolon, d. h. um ein '*' an Position x, y zu zeichnen kannst Du (weil Dir Dein Lehrer die Methode gegeben hat), einfach schreiben: plotChar(x, y, '*');.

Andere Frage: was glaubst Du, macht der folgende Code?
Java:
int x = 5;
while (x < 10) {
    x++;
}

die schleife geht so lange weiter bis x die 9 erreicht hat glaube ich mal


und danke noch mal :)
 

mihe7

Top Contributor
die schleife geht so lange weiter bis x die 9 erreicht hat glaube ich mal
Der Rumpf der Schleife wird wiederholt, so lange x < 10 gilt. D. h. der Rumpf wird bis inkl. x == 9 wiederholt. Die Schleife endet, wenn die Bedingung < 10 nicht mehr gilt, d. h. die Schleife endet (EDIT: in diesem konkreten Fall), wenn x == 10 gilt. Wenn Du willst, dass der Rumpf auch noch für die 10 ausgeführt wird, dann schreibst Du entweder x < 11 oder x <= 10.

OK, jetzt nimmst Du den Code und schreibst ihn um und zwar so, dass der Rumpf für jedes x zwischen xStart und xEnd (inkl.) ausgeführt wird.
 

mihe7

Top Contributor
Nein. Vergiss erstmal die for-Schleife, Du sollst erstmal nur meinen Code umformulieren, d. h.
Java:
int x = xStart;    // initialisiere x mit xStart
while(x <= xEnd){  // so lange x <= xEnd gilt, wiederhole den Block {
    x++;           //     erhöhe x um 1
}                  // } Ende des Blocks
hätte schon gereicht. Ich hab mal ein paar Kommentare eingefügt. Dein plotChar ist auch falsch, schau Dir mal Deinen dritten Parameter und meinen an.

Wenn Du jetzt nur diesen Code betrachtest: an welcher Stelle wäre es denn nun sinnvoll, das plotChar einzufügen?
 

mihe7

Top Contributor
Ja, nachdem Du wiederholt einen "Punkt" zeichnen willst, bietet sich die Schleife an. Aber wo in der Schleife wäre die richtige Stelle? Überleg Dir, was Schritt für Schritt abläuft.
 

mihe7

Top Contributor
Du bist aber noch nicht fertig. Mal abgesehen davon, dass der dritte Parameter von plotChar immer noch falsch ist :)
 

mihe7

Top Contributor
Und weil der Aha-Effekt schon eingetreten ist:
Java:
int x = xStart;
while (x <= xEnd) {
    plotChar(x, y, '*');
    x++;
}
ist äquivalent zu:
Java:
for (int x = xStart; x <= xEnd; x++) {
    plotChar(x, y, '*');
}

Jetzt musst Du den Spaß nur noch richtig in die Methode einbauen (beachte die Parameter, die Du bekommst)
 
K

kneitzel

Gast
Du hast ein Array der Länge 80 (length 80) und versuchst auf den Index 80 zuzugreifen.

Da der Index bei 0 anfängt hat ein Array der Länge 80 aber nur die Elemente 0 bis 79.
 

mihe7

Top Contributor
Natürlich, da fehlt ja auch die Deklaration und Initialisierung von x: int x = xStart;.

Zeig doch mal die komplette Methode.
 

Fabian04088

Aktives Mitglied
public static void plotHorizontalLine(int xStart, int xEnd, int y, char c) {

int x = xStart;
while (x <= xEnd) {
plotChar(x, y, c);
x++;


}
}
 

mihe7

Top Contributor
Ja, das ist prinzipiell in Ordnung (ohne die unsinnige weil leere for-Schleife), aber Du musst noch die Sonderfälle abfangen, die in plotChar nicht berücksichtigt wurden. Sonst erhältst Du ggf. die Exception, die Du schon im Kommentar #24 angesprochen hast.

Schau Dir nochmal Deine Exception und den Code an, den Du für plotChar bekommen hast und die Erklärung von @JustNobody an. Damit solltest Du erkennen, wo es zu Problemen kommen könnte...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Zeichnen einer verschiebbaren Linie Allgemeine Java-Themen 3
H Eine Linie verkürzen Allgemeine Java-Themen 5
M Linie von Kreisen Allgemeine Java-Themen 23
S 3D-Grafik Linie mit Textur Allgemeine Java-Themen 3
S moveTo/lineTo Linie hervorheben Allgemeine Java-Themen 9
S Linie skalieren Allgemeine Java-Themen 13
M 3D Objekte mit einer Linie Verbinden Allgemeine Java-Themen 3
C Linie in Matrix machen Allgemeine Java-Themen 5
ElViZ MouseListener auf Linie die per drawLine() gezeichnet wurde? Allgemeine Java-Themen 2
M punkt-linie Allgemeine Java-Themen 2
berserkerdq2 Habe ein svg bild, kann ich das zu svg koordinaten umrechnen, damit ich den Umriss zeichnen kann? Wenn ja wie? Allgemeine Java-Themen 1
Aboya Kugel mit Hilfe von Dreiecken rekursiv zeichnen Allgemeine Java-Themen 2
I Raute mit Rekursion "zeichnen" Allgemeine Java-Themen 7
P Zeichnen Allgemeine Java-Themen 18
S Best Practice Diagramm zeichnen Allgemeine Java-Themen 0
C Tortendiagramm zeichnen Allgemeine Java-Themen 3
U Koordinaten alle Pixel eines Dreiecks zeichnen ausgeben Allgemeine Java-Themen 5
D Baum zeichnen hilfe Allgemeine Java-Themen 4
I 2D-Grafik Polygon mit Double Werten zeichnen Allgemeine Java-Themen 4
D Grafische Objekte zeichnen Allgemeine Java-Themen 4
E Tool/Programm zum Zeichnen von UML Diagrammen Allgemeine Java-Themen 14
F 2D-Grafik drawString (scharf zeichnen lassen) Allgemeine Java-Themen 13
J Teil eines Image/ImageIcon zeichnen Allgemeine Java-Themen 2
D Lösung Differentialgl. mit RungeKutta + Kurve zeichnen Allgemeine Java-Themen 3
U Zeichnen mit JFrame. Allgemeine Java-Themen 5
lenniii zeichnen Allgemeine Java-Themen 2
N Tepich zeichnen Allgemeine Java-Themen 8
K Zeichnen auf ein Bild und Scrollen Allgemeine Java-Themen 7
S Problem mit Zeichnen Allgemeine Java-Themen 8
L Buffered Image teilweise zeichnen Allgemeine Java-Themen 6
B Tool zum Zeichnen von Systemarchitektur Allgemeine Java-Themen 2
MasterEvil Lib zum zeichnen von Baumdiagrammen? Allgemeine Java-Themen 4
O TimeSeriesChart Linien Fetter Zeichnen Allgemeine Java-Themen 2
B Programmablaufgraph erstellen und zeichnen Allgemeine Java-Themen 2
H Sinusähnliche Kurve mit Paint zeichnen! Allgemeine Java-Themen 3
G Bild neu zeichnen Allgemeine Java-Themen 13
E Pixelweise auf einem JPanel/JLabel o.ä. zeichnen Allgemeine Java-Themen 4
L Linien, Recktecke und Elipsen zeichnen ohne Image Allgemeine Java-Themen 2
R Grafiken. direkt zeichnen Allgemeine Java-Themen 5
S Auf vorhandenes Window zeichnen? Allgemeine Java-Themen 2
G BufferedImage zeichnen Allgemeine Java-Themen 4
S Vierecke zeichnen Allgemeine Java-Themen 18
T Rechtecke usw mit Paint auf Panel zeichnen Allgemeine Java-Themen 5
G Bilder zeichnen und Zoom Funktion Allgemeine Java-Themen 2
J Fenster mit paint Methode selbst zeichnen Allgemeine Java-Themen 3
A Zeichnen mit JAVA ! Allgemeine Java-Themen 3
T Linien-Diagramm zeichnen Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben