Unsere ersten Idee war es eine Fischschwarmsimulation zu entwickeln, bei dem man – ähnlich wie bei Computerspielen – selber einen Hai, also einen Angreifer steuern kann, um hinterehre die Bewegung eines jeden Fisches und auch des Schwarms im Ganzen analysieren zu können. Schon schnell haben wir uns überlegt, dass dieses Ziel vielleicht doch ein bisschen hoch gegriffen ist, bzw, dass die Zeit eines Semesters nicht genug sein würde dafür. Wir beschlossen also klein anzufangen und erst einmal einen Fischschwarm zu kreieren und Hindernisse in die Welt zu setzen.
Wir wussten schon früh, dass wir ein sehr flexibles Programm schreiben wollen. Wir wollten erstmal die Grundsteine legen und ein sich bewegenden Schwarm erschaffen, den wir dann immer weiter ausbauen und verbessern, bzw Realitätsnaher gestalten können. Bei unserem ersten Brainstorming kamen dann doch noch viele Vorschläge, für die wir einfach zu wenig Zeit hatten, die unrealistisch zu schaffen waren. Beispielsweise, wollten wir die Fische altern lassen & sterben, ihnen einen Sexualtrieb geben und neue Fische gebehren lassen. Die Trägheit sollte im Alter zunehmen, die Geschwindigkeit sich verringern. Nachdem uns Stefan dazu geraten hat doch noch ein bisschen einfacher anzufangen, kamen wir auf unser erstes Konzept.
Python ist eine objektorientierte Sprache, weshalb es für unser Projekt perfekt geeignet ist! Wir kamen daher auch schnell auf die Idee ein Objekt der Welt und eins der Fische zu erzeugen. Jedes Objekt in Python (oder auch in anderen objektorientierten Programmiersprachen) haben Attribute und Methoden. Dies von uns sehr von Vorteil, weil man sich sehr gut vorstellen kann was die Attribute und die Funktionen eines Fisches wie auch der Welt ist. Es wird also nicht sehr abstrakt programmiert. Außerdem sind die Attribute allgemein festgelegt für das Objekt und kann dann weiter in den Methoden verwendet werden. Was für uns den Vorteil hat, dass wir die einzelnen Werte wie Müdigkeit oder die Anzahl an Nachbarn an denen sich ein Fisch orientiert einmal festlegen, und diese dann in den Methoden benutzt werden. Und wenn wir uns nun an die Realität annähern wollen, müssen wir nur den einen Wert des Attributs ändern, ohne eine ganze Methode umzuschreiben.
Die allgemein Struktur unseres ersten Konzepts mit den zwei Objekten der Welt un des Fischs hat sich zum Großteil komplett durchgesetzt. Nur einzelne Details, wie beispielsweise die Attribute des Fisches haben sich geändert. Diese Liste wurde deutlich länger, da wir anfangs noch nicht an wichtige Konstanten wie den Fischradius, der den Raum um den Fisch beschreibt, in den ein anderer nicht eindringen kann (im Endeffekt der Körper, sozusagen), gedacht haben. Wir haben uns während des Programmierens die ganze Zeit an unser Konzept gehalten; dass es leichte Veränderungen gibt, ist aber wohl bei jedem Projekt so: erst während der Arbeit kommen die Details hinzu.
Zur Visualisierung haben wir von Anfang an den Tipp von Stefan bekommen „Vpython“ zu benutzen, ein Programm, durch dass sich die Visualisierung unglaublich einfach machen lässt. Man braucht nur eine Zeile um einen Punkt bzw unseren Fisch erscheinen zu lassen, und weitere 4 Zeilen um die Hindernisse zu zeigen. Es wäre wohl blöd gewesen nicht dieses Programm zur Visualisierung zu benutzen.