JirkaDellOro / EIA2-Inverted

Material for the inverted classroom
https://jirkadelloro.github.io/EIA2-Inverted
13 stars 25 forks source link

Positionen vergleichen #166

Closed elenajenny closed 4 years ago

elenajenny commented 4 years ago

Hallo, wir beschäftigen uns gerade mit der Umsetzung der Infektion der menschlichen Zelle vom Coronavirus. Dabei haben wir uns überlegt, dass die menschliche Zelle und der Corona Virus ungefähr die gleiche Position haben müssen, damit dass funktioniert. Dabei haben wir an this.position.x / .y [coronavirus] = this.position.x /.y [menschliche Zelle] gedacht, aber wie kann man das darstellen? Ist unser Ansatz einigermaßen richtig oder sollten wir hier einen ganz anderen Weg einschlagen, und wenn ja, hast du eine Idee für uns, die wir ausarbeiten könnten? Danke schonmal im Vorraus!

JirkaDellOro commented 4 years ago

Euer Ansatz ist sehr richtig, insbesondere mit dem Wort "ungefähr" bei der Prüfung der Gleichheit der Positionen. Da liegt nämlich ein Fallstrick, die Positionen werden so gut wie niemals exakt gleich sein. Das bedeutet, ihr müsst eine entsprechende Toleranz zulassen. Schaut euch das Lektionsvideo "Implementation 2 - Hauptprogramm" von 10:00 bis 20:00 nochmal an, da wird genau das für die Treffer der Asteroiden gemacht.

PS: statt die Entfernung in beiden Dimensionen getrennt zu betrachten, kann man auch die Länge des Differenzvektors ausrechnen (Pythagoras) und zur Beurteilung der Nähe heranziehen. Gerade bei eher kreisförmigen Objekten passt das besser, das wird auch noch später bei den Asteroiden so umgebaut.

elenajenny commented 4 years ago

Okay danke das hat auf jeden Fall weitergeholfen! Wir sind gerade noch etwas verwirrt, du hast ja in der Lektion die Position deines Cursors beschrieben und wir würden statt dem Hotspot die Position des Viruses beschreiben aber wie bekommen wir in der Main.ts die Position vom dem, da diese ja nur der Virus kennt und nicht das Hauptprogramm Main.ts.

AnnaLotz commented 4 years ago

Du kannst über . auch außerhalb einer Klasse auf ihren Wert zugreifen. Die Klasseninstanz muss dabei die Variable sein, in der du die Anfangs neu erstellte Instanz des Virus gespeichert hast, der Variablenname wäre bei euch dann vermutlich position.x/y.

JirkaDellOro commented 4 years ago

Genau, das Hauptprogramm kann ja auf die position eines Virus zugreifen und diese auch weiterverarbeiten oder weitergeben.

elenajenny commented 4 years ago

Das haben wir auch schon versucht mit virus.position.x / .y aber das wird rot unterstrichen und es kommt die Meldung: "property position does not exist on type "typeofvirus". Hier der Link zu meinem Repository, vielleicht findet ihr den Fehler: https://github.com/elenajenny/EIA2

JirkaDellOro commented 4 years ago

Ich nehme an, ihr habt das Problem in einer Zeile wie diese, die auskommentiert ist:

let virusposition: Vector = new Vector (Virus.position.x);

Virus ist der Name der Klasse, damit wird nicht eine Instanz dieser Klasse referenziert. Die Instanzen aber, also die einzelnen tatsächlich erschaffenen Viren, verfügen jeweils über die Eigenschaft position. In der Klasse wird lediglich beschrieben, dass sie darüber verfügen sollen. Ihr müsst also auf die Viren zugreifen, nicht auf deren "Bauplan".