Processing?

GuteAntwort2021  14.11.2023, 12:18

Du bekommst nicht mal ship zugeordnet, obwohl direkt darüber die Initialisierung steht?

verreisterNutzer 
Beitragsersteller
 14.11.2023, 13:10

hey, das hab ich nicht gesagt. Ich hab lediglich gesagt, dass ich immer etwas falsch hab bei der Abgabe. Das Formular hier ist ja unausgefüllt.

1 Antwort

(Wieso stehen sowohl "Java" als auch "JavaScript" in den Themen der Frage?)

Bild 1:

Offensichtlich irgendeine Methode, die eine x- und eine y-Koordinate übergeben bekommt ("= x;" bzw. "= y;"). Da eine Instanz dieser Klasse Felder (Variablen) mit denselben Namen hat, sollen die übergebenen Werte höchstwahrscheinlich hierin abgelegt werden.

x = x;

geht nicht - der Compiler denkt, dass es sich auf beiden Seiten um dieselbe Variable handelt. Also muss man entweder eine der Variablen umbenennen oder eine der Variablen "qualifizieren" (ausdrücklich sagen, woher sie kommt). Da die rechte Seite vorgegeben ist ("= x;"), bleibt nur die linke Seite. Da es sich um ein Feld einer Instanz der Klasse handelt, nimmt man hier "this":

this.x = x;

In den Methodenkopf könnte so was stehen:

void someMethod(int x, int y)

aber aus dem weiteren Kontext (Bild 2) (sowie der Position der Methode) wird klar, dass es sich um einen Konstruktor handeln müsste. Bei Konstruktoren fällt der Rückgabetyp "void" weg (der ist immer "void" und muss/darf nicht angegeben werden). Wie ein Konstruktor benannt wird, weißt du hoffentlich.

Bild 2:

Wie erzeugt man eine neue Instanz einer Klasse?

Hier wäre für mich nicht klar ersichtlich, ob

methodenname(250, 250)

oder

methodenname(500/2, 500/2)

erwartet wird. Ich persönlich würde 500/2 nehmen, um möglichst wenige "magic numbers" zu verwenden, vermutlich wird aber 250 erwartet.

Was nach "ship.x = mouseX;" erwartet wird, sollte klar sein (es gibt ja 2 Koordinaten).

Bild 3:

zahlen[] ist ein Array. Die Länge dieses Arrays erhält man über "zahlen.length". Die Elemente eines Arrays werden von 0 bis length-1 durchnummeriert.

Übrigens solltest du dir angewöhnen, persönliche Daten in solchen Bildern zu schwärzen.

Bild 4:

Wie gibt man den Typ "Array of <type>" an? Was steht hier nach "<type>"?

(Hier würde ich eigentlich ein Array von Arrays erwarten, aber die Initialisierung funktioniert so nur mit einem eindimensionalen Array. Also muss man nachher das zweidimensionale Array emulieren.)

Wie initialisiert man ein Array bei der Deklaration?

Ausgaben erfolgen zeilenweise. Damit ist die äußere Schleife für die Zeilen zuständig, und folglich i die Nummer der jeweiligen Zeile.

Die innere Schleife muss demnach für die Spalten zuständig sein. Die Syntax ist dieselbe wie bei der äußeren Schleife, nur muss "i" durch "j" und "3" durch die Anzahl der Spalten ersetzt werden.

in der print-Anweisung soll das entsprechende Element ausgegeben werden. In einem zweidimensionalen Array wäre dies

zahlen[i][j]

aber hier müssen wir das Rechnen selber erledigen - irgendwas wie

zahlen[a * i + b * j]

wobei a und b geeignet bestimmt werden müssen. Außerdem wird vermutlich "1 * " als Fehler gewertet und sollte weggelassen werden. Ebenso sollte vermutlich "i" vor "j" stehen, auch wenn z. B. "b * j + i * a" völlig äquivalent wäre.

Vermutlich geht es auch nicht so einfach, ein String und eine Zahl aneinanderzuhängen (in JavaScript ginge das), also muss an den Ausdruck noch ".toString()" (oder vielleicht ".toString(10)") angehängt werden.

println ist eine Methode. Da gehören also noch Klammern hin. Soll hier noch irgendwas


aperfect10  14.11.2023, 16:18

Ich denke Java ist ein Tag, da Processing stark an Java angelehnt ist und, soweit ich weiß, auch darauf basiert. Von daher ist das nicht ganz sinnlos.

0
PWolff  14.11.2023, 18:15
@aperfect10

Da habe ich mich anscheinend nicht klar genug ausgedrückt - es ging mir um die Kombination von "Java" und "JavaScript", die vom Konzept her ähnlich unterschiedlich sind wie Verbrennungsmotoren und Elektromotoren.

0
verreisterNutzer  14.11.2023, 13:13

Alles klar, vielen Dank für diese ausführliche Antwort, das hilft mir sehr weiter.

Das mit dem schwärzen ist ne gute Sache, darauf hab ich im Vorhinein tatsächlich vergessen 😅 Aber ist ansich nur mein Name ersichtlich. Danke fürs Aufmerksam machen.

LG

0