Entwickler-Ecke

Algorithmen, Optimierung und Assembler - Wie man Game of Life zu programmieren hat


Popov - Mi 29.04.15 17:10

Moderiert von user profile iconNarses: Abgetrennt von hier: [Hausaufgabe] Game of Life [https://www.entwickler-ecke.de/viewtopic.php?t=114059&start=340]

Ich bin zufällig auf diesen Thread gestoßen, hab aber bisher nicht verstanden wieso man sich für den Weg der Shapes entschieden hat? Mal davon abgesehen, dass es vermutlich die Hausaufgabe eines Anfängers ist, bedeutet Komponenten zur Laufzeit einzufügen eine zusätzliche Hürde. Die eigentliche Berechnung der Felder ist gerade mal paar Zeilen lang. Das war es dann schon. Kompliziert ist die Berechnung also nicht. Klein wenig programmieren muss man erst die Aus- und Eingabe. Aber auch die Ausgabe ist simpel, wenn man Standard-Komponenten wählt. Klein wenig kompliziert wird es erst bei der Eingabe. Shape macht es dann erst richtig kompliziert, denn nun muss man Komponenten zur Laufzeit einfügen, sie löschen, sie platzieren usw.

Ich hab ein kleines Beispiel was ich mal programmiert habe. Ein und Ausgabe ist eine TImage Bitmap. Ich hab sie gerade um zwei Regeln gekürzt. Ich poste es mal als Anregung, ich gehe nicht davon aus, dass man das so seinem Lehrer als eigenes andrehen kann. Es zeigt aber wie simpel Game of Life eigentlich ist.


Moderiert von user profile iconNarses: Topic aus Freeware Projekte verschoben am Do 07.05.2015 um 11:02


Sinspin - Mi 29.04.15 18:00

Es geht hier aber nicht darum irgendwelche fertigen Programme hinzukippen. Sondern darum, das ein Mentor seinem Schüler Stück für Stück durch die Erstellung eines Projektes hilft, dessen Rahmen sich der Schüler selber feststeckt. Wer von Anfang an ließt dem fällt auf das hier eigentlich nur zwei User am Werk sind. Alle anderen halten sich zurück und lesen einfach mit.

@user profile iconNarses, @user profile iconNini, ich entschuldige mich dafür das ich mich eingmischt habe. :oops:


Popov - Mi 29.04.15 20:22

Es geht mir hier nicht drum ein fertiges Programm anzubieten, aber die Hürde von der ich sprach, die meinte ich dann doch ernst. Ich schätze bei der Aktion wird der TE sehr viel lernen und, falls er weiter mit Delphi programmieren will, wird er viel dazugelernt haben. Außerdem finde ich toll wie man dem TE hilft. Es stellt sich dann doch die Frage ob Shapes eine gute Idee war, denn sie macht alles etwas komplex.

Mein Beispiel soll man nicht überbewerten. Ich gehe davon aus, dass der TE mit seiner Version schon fast fertig. Er wird die Arbeit nicht in die Tonne kloppen und jetzt noch etwas abkopieren. Aber Game Of Life macht man nun mal auf eine Canvas.


Stundenplan - Do 30.04.15 17:53

Natürlich sind Shapes eine Herausforderung, aber diese Herausforderung hat den Vorteil, dass man dabei ziemlich viel dazulernen kann. Die Aussage
user profile iconPopov hat folgendes geschrieben:
[...] Game Of Life macht man nun mal auf eine Canvas.
finde ich jetzt ein wenig überzogen, es gibt eigentlich keinen Standardweg beim Programmieren, und wenn es um ein "Lernprojekt" geht, schon gar nicht. Es mag sein, dass es üblicher ist, Game of Life mit Canvas zu implementieren, aber ein Muss ist es sicher nicht.
Nur meine zwei Groschen.


Ralf Jansen - Do 30.04.15 19:37

Der Vollständigkeithalber sollte diese [http://www.entwickler-ecke.de/viewtopic.php?t=114068] Diskussion zum Thema nicht unerwähnt bleiben.

Unisono wurde dort denke ich festgestellt das einem Anfänger in solchen Fragen die akademischen Metadiskussionen über den ~besten~ Weg nicht helfen sondern das einer das Heft in der Hand haben sollte und einen konsistenten Weg zu einer(nicht der) Lösung aufzeigt und andere nur versuchen sollten in dieser Richtung weiterzuhelfen. Die Metadiskussionen über bessere Wege sind sicher interessant sollten wir dann aber aus dem konkreten Thread raushalten und woanders führen und den eigentlichen TE damit verschonen.


Delete - Do 30.04.15 20:46

Ich finde das, was Narses für Nini tut, wichtig und richtig. Ob das nun in einem extra Hausaufgaben-Bereich oder sonstwo stattfindet, ist dabei erstmal genauso Nebensache wie die Frage, ob das, was Narses dem Schüler vermittelt, das NonPlusUltra der Delphiprogrammierung ist. Ich denke, Narses verfügt erstens über ausreichend Programmiererfahrung, um die Lehrerrolle verantwortungsvoll ausfüllen zu können, und hat zweitens wohl auch seine Freude am Lehren und Erklären, sonst würde er das wohl nicht so ausdauernd betreiben können/wollen – von der Zeit dafür mal ganz zu schweigen, die z.B. ich kaum erübrigen könnte.

Es wäre meiner Ansicht nach dennoch sinnvoll und vielleicht sogar einladend für so manchen jugendlichen Programmieranfänger, wenn es hier eine Hausaufgaben- oder Übungssparte gäbe, wo sich, wie in jenem Thread bereits angedacht, pro Schüler oder Frage ein Mentor finden läßt, der einen Anfänger durch die Lösung einer Aufgabenstellung begleitet. Narses führt hier anschaulich und lebhaft vor, wie so ein Mentoring aussehen kann. Ich verfolge diesen Lehrer-Schüler-Thread nicht wirklich, wäre mir erstens zu langweilig und das geht mich zweitens sozusagen nichts an. Das ist ein Ding zwischen diesen beiden, und solange die beide damit klarkommen, würde ich micht nicht einmischen wollen – außer der Schüler schreit um Hilfe, weil er vom Lehrer gerade verhauen wird :lol: –, auch wenn ich z.B. irgend eine von Narses gelehrte Lösung anders machen würde. Das wäre in der Tat kontrproduktiv, worauf Ralf Jansen oben bereits hingewiesen hat.

Nebenbei bemerkt: Ohne die Stellenangebote von itcjob und ohne diesen Hausaufgaben-Thread wäre hier vermutlich bereits genauso tote Hose wie im Delphi-Treff. Das einzige Delphi-Forum, das noch rege frequentiert wird, scheint die Delphipraxis zu sein. Ist ja aber auch wurscht, denn im Grunde sind in allen drei Foren weitgehend dieselben User angemeldet ...


Popov - Do 30.04.15 21:06

Schön, das Beispiel ist abgekoppelt, spielt in dem eigentlichen Thread keine Rolle, es gibt auch kein Verweis im ersten Thread auf das Beispiel, im Grunde so, als ob es gar nicht gegeben hätte. Alle sind wieder glücklich. Mich macht es dann aber doch klein wenig sauer.

Also rede ich Klartext. Machen wir das mit einem kleinen Vergleich (ich liebe Vergleiche). Wie wäre es wenn man Game of Life und Shapes auf Pizzabacken übertragen würde? Stellen wir uns vor ein TE kommt vorbei und sagt, es soll eine Pizza backen. Eine Pizza zu backen ist übrigens leichter als man denkt. Man nimmt Mehl, Wasser, Hefe, Salz und etwas Olivenöl, sowie eine Prise Zucker (für die Hefe). Dann knetet man das alles gut durch (ist wichtig). Dann nur noch ausrollen, nach Wunsch belegen fertig. Kann im Grunde jedes Kind.

Wie würde man es aber hier backen?Zuerst brauchen wir Mehl, Wasser, Hefe, Salz und etwas Olivenöl, sowie eine Prise Zucker (für die Hefe). Aber das stellen wir zuerst zurück. Vor allem brauchen wir Steine und Zement, dann wir bauen uns erst das Haus in dem wir die Pizza backen. In den Zwischenzeiten, ein Haus muss auch trocknen, vermischen wir schon mal die Pizza-Zutaten. Dann brauchen wir Kalk für den Putz, denn eine Pizza kann man nur in einer vernünftig verputzen Räumen essen. Nun besorgen wir uns einen Steinoffen. Dazu fahren wir in den Süden zu einem Steinbruch, weil wir das alles auf einem Stein backen wollen. Nun bauen wir uns zuerst zuerst einen Steinoffen um die Pizza zu backen. Aber keine Pizza ohne vernünftige Möbel... In in der Zeit hat jeder andere schon 1000 Pizzen in seinem Backofen gebacken. Warum einfach wenn man es auch kompliziert machen kann.

Lieber Nini, ich hab mir den Thread in dem du Game of Life programmiert hast etwas nachguckt und muss zugeben, dass man dich wirklich an die Hand genommen hat und mit sehr viel Geduld vieles beigebracht hat. Was du da gelernt hast, wird dir in den nächsten Jahren zugute kommen. Aber du bist inzwischen seit zwei Monataten etwas am programmieren was du in einer Woche hättest programmieren können. Ich hab vieles im Leben gesehen, nicht alles, aber vieles, aber ich hab noch nie Game of Life mit Shapes gesehen. Game of Life mit Shapes zu programmieren ist in etwas genauso sinnig wie einen Ego-Shooter mit der TMemo Komponente. Man kann es versuchen, aber wenn es einer macht, dann fragt man sich wie er auf die Idee kommt es damit zu machen?

Ich hätte alles dafür genommen, TStringGrid, TDrawGrid, sogar TMemo, aber Shapes? Was für ein Game of Life soll es werden? Was soll darin abgespielt werden? Eine Game of Life Blinker Figur? Denn für mehr reicht ein Feld aus einer Handvoll Shapes nicht. Bai jeden Feld unter 20x20 ist nach paar Generationen Schluß. Das wären schon 400 Felder. Game of Life braucht Platz, oder es ist ein kurzes Vergnügen. Mal davon abgesehen, dass es sehr langsam wird, da das Programm mit dem erzeugen von Shapes beschäftigt sein wird, statt mit der eigentlichen Aufgabe.

Seit nun mehr 180 Posts dreht sich die Aufgabe überwiegend drum wie man Shapes ansteuert oder zur Laufzeit erzeugt. Was war noch mal die Hausaufgabe? Was war noch mal die Hausaufgabe? Programmieren sie eine Handvoll Shapes auf den Bildschirm oder programmieren sie Game of Life? Womit beschäftigt sich der Thread also überwiegend? mit Shapes oder mit Game of Life?

So, der Titel des Threads ist "Wie man Game of Life zu programmieren hat". Dazu habe ich meine Meinung geschrieben. Wie man auf die Idee kommt es mit Shapes zu machen weiß ich nicht. Ich wäre eher auf die Idee gekommen es mit Legosteinen zu basteln.

Ich finde es übrigens eine Unverschämtheit, dass mein Beispiel aus dem eigentlichen Thread entfernt wurde. Hier hat jemand seine Macht dazu genutzt ein Problem für sich zu entscheiden. Dankeschön.


Delete - Do 30.04.15 21:58

Mein lieber Popov, ich finde es gut und richtig, daß diese Diskussion nicht im Lehrer-Schüler-Thread stattfindet, das würde dort wirklich nur stören, und deshalb wurde das dort wohl auch rausgenommen. Laß die beiden doch mal einfach machen. Es ist doch völlig unwichtig, wie effizient das ist, was Narses da vermittelt. Immerhin hat er einen Menschen dafür begeistert, länger als die durchschnittliche Aufmerksamkeitsspanne bei Jugendlichen gewöhnlich andauert, mitzumachen. Womöglich ist das genau die Art des Einlassens und Mitgehens, die so manchem Lehrer an der Schule abgeht.

Übrigens backe ich meine Pizzen ohne Hefe, Mehl und Wasser: ich kaufe einfach die günstigen 3er-Packs Margerita, wo so gut wie nix drauf ist, und belege selber. Aber bevor du was von ungesunder Ernährung erwidern mußt: Allermeist esse ich gar keine Pizza (denn das ist Junk-Food), sondern lebe vor allem von Salat & Gemüse aller Art, alle paar Tage auch mal mit Fleisch oder Fisch, kaum Brot oder andere Teigwaren, häufig Naturreis und Kartoffeln. Aber das wäre jetzt ein anderes Thema ...


Popov - Sa 02.05.15 12:23

Da es hier einen so schönen Thread mit dem Titel "Wie man Game of Life zu programmieren hat" gibt und ich behauptet habe, dass man Game of Life mit allen möglichen Komponenten leichter programmieren kann, sogar mit TMemo, habe ich heute morgen eine Memo Version von der oberen Version programmiert. Es war leichter als ich dachte und funktioniert sogar besser als ich dachte.

Hier das Spiel im Anhang:


PS Perlsau: Noch leichter als eine preiswerte Margerita zu kaufen um es selbst belegen, ist sich beim Pizza-Taxi anzurufen und sich eine liefern lassen.


Delete - Sa 02.05.15 15:30

Popov, ich finde es ganz ganz toll und wirklich bewundernswert, daß du so gut programmieren kannst – ein Lob war ja wohl das mindeste, was du für deine Arbeit erwartet hattest :lol:
Ich wußte das ja bereits, weshalb ich mir dein Projekt erst gar nicht runtergeladen habe.

Mir fällt da dieser Memory-Thread in einem anderen Delphi-Forum ein, wo sogar zwei sehr junge Frauen (wie ein User, der telefonischen Kontakt mit diesen jungen Damen suchte, berichtet hatte) mit ähnlich verschwindend geringen bis gar nicht vorhandenen Kenntnissen ein Memory-Spiel zu programmieren hatten, wohl aber mehr daran interessiert waren, hier Code abgreifen zu können statt was zu lernen. Und sogar da konnte ich mich – war gar nicht mal so schwer – zurückhalten und habe meine eigene Luxus-Version eines Memory-Spiels (mit Datenbank und Spiele-Editor) nicht hochgeladen. Denn seien wir doch mal ehrlich: Was brächte das als Lerneffekt? Klar, ich hätte ein wenig damit angeben können vor diesen beiden Schülerinnen – einzig das Bedürfnis dazu wollte sich partout nicht einstellen. Mir ist das in der Tat völlig schnuppe, ob Narses der Nini das mit TMemo oder TShape oder mit THutzliPutzli (eine ganz raffinierte Komponente, die allerdings erst noch erfunden werden muß, sozusagen die eierlegende Wollmilchsau aller Komponenten) zeigt – am Ende hat er einen jungen Menschen dazu gebracht, sich intensiver mit Delphi zu befassen als das von den vielen sonstigen Schülern zu erwarten wäre, die lediglich darauf hoffen, hier ihre Hausaufgaben erledigt zu bekommen.

Ich würde vorschlagen, wir lassen's gut sein und die beiden so lange weitermachen, wie es ihnen beliebt. Stört doch keinen, oder?


Popov - Sa 02.05.15 16:27

@Persau

Kennst du Moodle? Das ist eine kostenlose Software für eine Lernplattform. Genaueres kannst du in Wikipedia nachlesen, aber kurz umschrieben beschäftigt sich die Software damit, eine Plattform anzubieten auf der sich berufene und interessiere Menschen oder Gruppen für Lernwillige Lerninhalte anbieten können. Also lieber Persau, wenn du oder jemand anders euch zu Lehrer berufen fühlt, dann macht es richtig.

Eine Forensoftware hat einen ganz anderen Sinn. Eine themenbezogene Forensoftware hat im Grunde den Sinn, dass jemand sein Problem posten kann und andere ihm antworten und helfen. Eine Forensoftware ist keine Lehrsoftware. Nebenbei, ich arbeite u. a. auch als Dozent. Ich hab gelernt wie man lehrt. All die Möchtegern-Dozenten die hier ständig etwas von Lerneffekten schwafeln, die haben doch von Tuten und Blasen keine Ahnung. Irgendein Idiot hat vor 20 Jahren den Begriff "Lerneffekt" erfunden und nun fühlt sich jeder der etwas mehr weiß als der Fragesteller dazu berufen, seinem Opfer etwas beizubringen.

Ich war mal bei einem Kunden und hatte ein sehr dringendes Problem. Also fragte ich in einem Forum in der Hoffnung Hilfe zu bekommen. Da war auch einer, der mir hätte helfen können. Letztendlich waren das zwei oder drei Zeilen, aber dieser Spastiker wollte sie mir nicht nennen, da sonst seiner Meinung nach der Lerneffekt verpufft. Ergebnis war, dass ich etwa drei Stunden beim Kunden vor Ort mir das Wissen aneignen musste (es waren zwar nur paar Zeilen, aber ein langer Rattenschwanz an Parametern der dazugehörte). Der Lerneffekt war: der Kunde war sauer, fast weg und ich konnte noch froh sein keinen Schadenersatz zu zahlen.

Also komm du mir nicht mit dem bescheuertem Lerneffekt. Wenn ihr keine Ahnung von Didaktik habt, dann schwafelt nicht von Lerneffekten. Bei sowas reagiere ich gerne gereizt. Was ist das bitte für ein Lerneffekt einen Schüler der Game of Life programmieren will Shapes anzubieten? Sorry, ich wollte nur eine alternative Lösung aufzeigen, ihr hat es zum Thema gemacht. Also diskutieren wir das jetzt auch schön breit aus. Dann hat diese ganze Diskussion hier im abgetrennten Thread auch einen Lerneffekt.

Ich frage dich, was ist bei der Aufgabe Game of Life zu programmieren die Quintessenz der Aufgabe? Eine Logikroutine für Game Of Life zu programmieren oder einem zu zeigen wie man Shapes zur Laufzeit erzeugt und auf das Formular platzieren. Was lieber Persau? Du hast das Wort "Lerneffekt" eingeworfen, also sag mir was der Sinn der Aufgabe ist? Was ist das was der (richtige) Lehrer von dem Schüler will? Shapes oder Logikroutine für Game Of Life?

Es geht hier nicht drum ob einer liebevoll sich um seinen TE kümmert, sondern das Ganze in die falsche Richtung geht.

Und ob einer meine Programme nun herunterlädt oder nicht, das geht mir wirkliche am Allerwertesten vorbei. Soviel zum Thema "Lerneffekt". Mein Lerneffekt ist zu zeigen wie es geht. Wer lernen will, der wird es studieren und etwas daraus lernen, wer nichts lernen will, den zwinge ich nicht etwas lernen zu müssen.


Delete - Sa 02.05.15 17:09

Auf derart aggressive Replik antwortet man am besten – gar nicht ... :P


Popov - Sa 02.05.15 17:15

Es geht nicht wie man antwortet, sondern um die Message.


Mathematiker - Sa 02.05.15 17:15

Hallo Popov,

Ich schlage mal vor, du beruhigst dich wieder. Langsam wird es unschön.
Eigentlich wollte ich still sein, aber dein letzter, langer Beitrag war doch etwas zu viel.

Zum Thema und zur Erinnerung:
Nini ist eine sehr gute und vor allem fleißige Schülerin; also relativ selten. Ich kenne sogar ihren richtigen Namen, den ich hier natürlich nicht nenne.
Ihre ursprüngliche Aufgabe war, in einem halben Jahr sich mit einer Programmieraufgabe zu beschäftigen und damit zu demonstrieren, dass sie nach 1 Jahr (wöchentlich 1 Stunde Programmierung) die Grundprinzipien verstanden hat und anwenden kann. Abzugeben waren ein lauffähiges Programm und eine mehrseitige Beschreibung der Aufgabe und Lösung.
Vorgegeben waren als Themen zur Auswahl das "Game of Life" oder ein "Wörterraten" (klassisch: "Galgenraten"). Sie hat sich für die schwierigere Aufgabe entschieden.

Andere lassen sich nun von Mutti/Vati, Schwester/Bruder, Oma/Opa oder irgendjemand sonst helfen. Sie hat eigene Arbeit und dieses Forum gewählt. Allein das ist schon positiv, da es in der EE leider ruhig geworden ist.
Ihre ursprüngliche Idee war die Verwendung von Stringgrid bzw. Drawgrid. user profile iconNarses antwortete als Erster und führte sie Schritt für Schritt zu einem sehr guten Programm.
Ob er nun Shapes, Panels, Canvas oder sonst etwas mit ihr erarbeitete, ist völlig gleichgültig. Sie hat in den vielen Wochen so viel über Programmierung gelernt, wie vorher nicht. Und das ist wichtig! Das Ergebnis zählt und nur begrenzt die Methode. Ob du das "Lerneffekt" oder sonst wie nennst, ist egal.
Allein, dass sie erfahren hat, wie professionell an ein solches Problem herangegangen wird, ist viel wert.
Ob Nini nun Interesse und Spaß am Programmieren gefunden hat, kann ich nicht einschätzen.

Und bevor du mir unterstellst, ich hätte keine Ahnung vom Lehren, sei nur so viel gesagt, dass ich seit 1985(!) versuche, Schülern etwas Informatik und Programmierung beizubringen. Ganz so schlecht kann ich nicht gewesen sein, da einige meiner Schüler/innen mit einem Informatikthema Sieger bzw. Preisträger bei der Bundesrunde "Jugend forscht" waren.
Übrigens kenne ich auch das Ergebnis/die Note der Arbeit. Nini wird sehr zufrieden sein. :D

Beste Grüße
Mathematiker


Popov - Sa 02.05.15 18:35

Mathematiker, nun unterstellst du mir böse Absichten (indirekt). Gute Absichten selbst zählen wenig wenn der Weg und das ganze Drumherum falsch ist. Und sorry, ich wäre nie auf die Idee gekommen Game of Life z. B. mit TMemo oder TShapes oder gar TButton zu programmieren (auch wenn ich schon mal das Spiel Snake just4fun mit TMemo programmiert habe). Trotzdem, es ist Quatsch. Es ist ein Witz. Sowas macht man aus Spaß. Dafür ist die Komponente nicht gedacht. Jede Komponente hat einen bestimmten Sinn.

So nebenbei, die Version von Game of Life mit TMemo habe ich nicht programmiert um zu zeigen was ich drauf hab, sondern um die Absurdität dahinter zu zeigen. Das Problem mit solchen Witzen ist aber oft, dass sie nicht verstanden werden (sorry Persau).

Wenn einer mich fragt wie man Pixel auf einer Bitmap zeichnet, dann erkläre ich ihm nicht wie man 1x1 Pixel große Panele auf dem Formular platziert. Denn auch wenn das Ergebnis für den Anfang ähnlich wäre, müsste ich mir dann doch die berechtigte Frage stellen ob ich überhaupt weiß was der Unterschied zwischen einem Pixel und einem 1x1 Pixel großem Panel ist.

Mag sein, dass StringGrid nicht das optimale, aber seien wir mal ehrlich, spätesten mit DrawGrid hätte man die Aufgabe hundert mal einfacher lösen können. Irgendwie konnte ich mich selbst nie mit DrawGrid anfreunden, aber... soll ich es wirklich sagen? ...dem DrawGrid einfach die gleichen Abmessungen wie dem Array geben und dann nur noch mit paar Zeilen alles durchlaufen lassen. Fertig. So einfach kann man eine Aufgabe lösen. Für Anfänger optimal.

Ich hab Bitmap gewählt, weil ich es eleganter finde. Und nebenbei, im Grunde programmieren alle es über Grafik. Wenn ein Konzept am Anfang falsch war, dann zieht man die Reißleine und versucht es erneut. Etwas falsches zu lehren ist nichts was man bewundern kann. Hier zählt nicht die gute Ansicht.


Lelf - Sa 02.05.15 21:50

Hallo,

"Nebenbei, ich arbeite u. a. auch als Dozent. Ich hab gelernt wie man lehrt. All die Möchtegern-Dozenten die hier ständig etwas von Lerneffekten schwafeln,
die haben doch von Tuten und Blasen keine Ahnung"...
Diese Worte hat @Popov geschrieben.
Nun schlage ich vor, daß er der @Nini beibringt, wie man Game of Life mit DrawGrid programmiert.

Gruß
Lelf


Xion - So 03.05.15 01:16

Wow, hier herrscht aber ein gut gelaunter Ton :) Da wäre mein fieses Posting garnicht mal aufgefallen, dass ich ehrlich gesagt nur aus schlechter Laune heraus verfasst hatte, und mich dann doch eines besseren besonnen habe.

Also erstmal muss ich sagen, dass es auch eine Menge Dozenten gibt, die keine Ahnung haben...vielleicht mehr als man meint, denn immerhin sind sie Dozenten geworden, anstatt in der Wirtschaft tätig zu sein (das soll jetzt aber keine Verallgemeinerung/Unterstellung sein). Sich selbst als besonders schlau darzustellen ist in jedem Fall kein besonders kluger Schachzug, aber manchmal kochen vielleicht auch einfach die Emotionen etwas hoch. ;)

user profile iconPopov hat folgendes geschrieben Zum zitierten Posting springen:
Es geht nicht wie man antwortet, sondern um die Message.

Dies ist ebenso eine sehr fragwürdige Aussage für einen Dozenten! Wozu bräuchte man dann Pädagogik?

Was Nini angeht, bin ich regelrecht begeistert. Denn sie scheint wirklich interessiert zu sein, und ich finde es toll, dass Narses sich die Zeit nimmt. :zustimm: Ich bin mir auch ziemlich sicher, dass Narses weiß, warum er Shapes gewählt hat (eventuell steht das sogar irgendwo auf den vielen Seiten). Eigentlich ist es aber ganz egal, denn es ist nicht die Aufgabe, Game of Life zu erstellen. Denn "es ist Quatsch. Es ist ein Witz. Sowas macht man aus Spaß.". Wenn das die Aufgabe wäre, würde man eine fertige Lösung herunterladen. Die Aufgabe ist aber vielmehr, Interesse und ein grundlegendes Verständnis für die Informatik bei den Schülern zu wecken. Man könnte nun auch gleich schon hervorragend darüber diskutieren, ob Game of Life die beste Wahl dafür ist.

Und überhaupt (SCNR): Game of Life mit einem DrawGrid oder Shapes darzustellen ist Pfusch und nur Anfänger machen sowas! Igitt! Wenn man es ordentlich haben will, dann nimmt man OpenGL. Mit der richtigen Komponente geht das auch flott von der Hand...eventuell schneller als mit DrawGrid und garantiert viel hübscher und effizienter.


mandras - So 03.05.15 01:27

Ich habe mich hier bei ein oder zwei interessanten Fäden abseits gehalten.

Mir fiel aber auf, daß der "Ton" sich öfters in nicht so angenehme Richtungen entwickelt hat.

Das finde ich bedauernswert, gerade weil die Teilnahme hier nicht mehr so aktiv ist wie ich
es gerne hätte...

Die Beschäftigung mit dem GOL-Problem habe ich intensiv verfolgt.

Narses hat sich m.E. nach vorbildlich eingesetzt. Und meiner Meinung nach Nini motiviert. Auch in didaktischer Hinsicht.

Ich habe mich dort herausgehalten weil ich der Meinung war, daß es perfekt abläuft.

Das will ich auch so lassen.

Aber - Die Streiterei über die "beste didaktische Vorgehensweise" (incl. persönlicher Meckerei) - muß das sein?


Popov - So 03.05.15 03:14

Wir sollten an dieser Stelle eines klarstellen, denn anscheinend missversteht man meinen Beitrag (ob bewusst oder unbewusst): es geht hier weniger drum wie der lieben Nini bisher geholfen wurde. Ich hab weder Narses noch anderen in dem Thread didaktische Fähigkeiten abgesprochen. Ganz im Gegenteil - wie ihr geholfen wurde ist geradezu vorbildlich.

Was ich kritisiert habe war der allgemein gerne missbräuchlich genutzte Begriff "Lerneffekt", der i. d. R. von Leuten eingeworfen wird, die von Tuten und Blasen und Didaktik keine Ahnung haben. Was ich also geschrieben habe war, dass wir hier in einem Forum sind wo Antworten auf Fragen gewünscht sind. Keine Lerneffekte. Wer etwas lernen will der geht zur Schule oder holt sich ein Buch. Er fragt nicht Hinz und Kunz in der Hoffnung keine Hilfe zu bekommen, weil keine oder halbe Antwort schließlich den Lerneffekt unterstützt. So machen es die Lehrer in der Schule übrigens schon sein paar Hundert Jahren. Wenn jemand etwas fragt, dann kriegt er keine Antwort. Da ist der Lerneffekt größer. Das ist ja der Sinn der Schule und der Lehrer. Eben keine Antworten zu geben.

Foren sind keine Plattformen für Leute die glauben sich als Lehrer aufspielen zu können und auf Fragen wie: "wie kann ich ein Programm starten" zuerst auf den Lerneffekt verweisen und dann entweder auf die Suche, oder, wenn sie einen guten Tag haben, ein Schlagwort wie "ShellExecute" geben. Und dann überlassen sie sich den ratlosen TE sich selbst mit dem guten Gefühl kleinwenig Lerneffekt verstreut zu haben.

Also bitte noch mal meinen Beitrag lesen und mir nicht unterstellen ich habe Narses & Co. bezüglich ihre Hilfe kritisiert.

Was ich an dem anderen Thread zu kritisieren habe ist, dass man mit Kritik nicht klarkommt. Da wird eine alternative Möglichkeit schon mal in einen Extrathread ausgelagert. Auch kritisiere ich, dass das Konzept mehr aus fragwürdig ist. Lerneffekt? Wie wäre der Lerneffekt: man missbraucht Komponenten nicht dazu Daten zu speichern. Das ist das A und O der guten Programmierung. Man trennt Daten und Darstellung. Man speichert keine Information in einem Shapes. Wenn schon, dann nimmt man die Shapes für die Darstellung.

Zweitens, ich weiß nicht ob hier einer überhaupt weiß um was es bei Game of Life geht. Denn ich verstehe nicht wie man auf die Idee kommt, dass Shapes eine Möglichkeit der Darstellung sind?


Delphi-Laie - So 03.05.15 18:07

user profile iconPopov hat folgendes geschrieben Zum zitierten Posting springen:
Denn ich verstehe nicht wie man auf die Idee kommt, dass Shapes eine Möglichkeit der Darstellung sind?


Die Delphi(3)-Hilfe meint dazu (vom schlechten Deutsch einmal abgesehen):

Shape: "Ein Objekt zur Darstellung von geometrischen Figuren, wie Kreisen, Rechtecken und Quadraten mit verschiedenen Umriß- und Füllfarben. [...]"


Popov - So 03.05.15 22:58

@Delphi-Laie

Man sollte nie einen Satz aus dem Kontext nehmen.


Delphi-Laie - So 03.05.15 23:07

user profile iconPopov hat folgendes geschrieben Zum zitierten Posting springen:
@Delphi-Laie

Man sollte nie einen Satz aus dem Kontext nehmen.


Einen Kontext gab es nicht. Ich zitierte den ersten der beiden Sätze, den m.E. wichtigeren Satz nur, weil er Deiner Behauptung widerspricht. Solche unredlichen Mogeleien liegen mir fern. Über die (Un)Eignung von Shapes zu Lösung der Aufgabe kann ich mich nicht äußern, ich kannte diese zuvor nicht mal. Dir die alternative Hilfestellung in Ninis Diskussion in der Weise zu verwehren, daß Dein Beitrag und Deine Programmveröffentlichung dort hierher verbannt wurden, empfand ich allerdings auch nicht als die feine englische Art, das ist nicht Sinn eines Diskussionsforums.


Popov - Mi 06.05.15 23:13

Sorry, konnte mich nicht zurückhalten. Hab noch schnell ein Game of Life mit SpeedButtons programmiert. Wollte es zuerst mit ComboBoxen machen, aber die nehmen zu viel Platz weg.


Zitat:
Einen Kontext gab es nicht. Ich zitierte den ersten der beiden Sätze, den m.E. wichtigeren Satz nur, weil er Deiner Behauptung widerspricht.

Evtl. hast du mich falsch verstanden. Ist aber inzwischen egal.


mandras - Mi 06.05.15 23:22

Ich wäre an der Version mit dem Memo interessiert.


Mathematiker - Mi 06.05.15 23:28

Ich habe auch eine Variante, in Turbo Pascal mit Textausgabe: :lol:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
Program gameoflife;
uses crt;
var
     feld1,feld2 : array[0..21,0..21] of boolean;
     i,j:integer;
     taste:char;

procedure anfangswerte;
begin
     for i:=0 to 21 do for j:=0 to 21 do begin
         feld1[i,j]:=false; feld2[i,j]:=false;
         end;
     {Ausgangssituation Fünfer-Gruppe}
     feld1[5,5]:=true; feld1[6,5]:=true;
     feld1[6,6]:=true; feld1[7,6]:=true;
     feld1[6,7]:=true;
end;

procedure anzeige;
begin
    for i:=1 to 20 do for j:=1 to 20 do begin
       gotoxy(i+30,j);
       if feld1[i,j]=true then write('*') else write(' ');
       end;
end;

procedure neuegeneration;
var nachbarn:integer;
begin
     feld2:=feld1;
     for i:=1 to 20 do for j:=1 to 20 do begin
         nachbarn:=0;
         if feld2[i-1,j-1]=true then nachbarn:=nachbarn+1;
         if feld2[i,j-1]=true then nachbarn:=nachbarn+1;
         if feld2[i+1,j-1]=true then nachbarn:=nachbarn+1;
         if feld2[i-1,j]=true then nachbarn:=nachbarn+1;
         if feld2[i+1,j]=true then nachbarn:=nachbarn+1;
         if feld2[i,j+1]=true then nachbarn:=nachbarn+1;
         if feld2[i-1,j+1]=true then nachbarn:=nachbarn+1;
         if feld2[i+1,j+1]=true then nachbarn:=nachbarn+1;
       if nachbarn<2 then feld1[i,j]:=false;
       if nachbarn>3 then feld1[i,j]:=false;
       if nachbarn=3 then feld1[i,j]:=true;
     end;
end;

begin
    clrscr;
    anfangswerte;
   repeat
    anzeige;
    repeat
       taste:=readkey;
    until taste in ['e',' '];    {Taste ‚e’ für Abbruch, Leertaste … neue Generation}
    neuegeneration;
   until taste='e';
end.

Kann man bestimmt noch optimieren. :wink:

Beste Grüße
Mathematiker


mandras - Mi 06.05.15 23:34

Also Mathematiker...

an meine Version in Assembler damals auf dem C64 würde ich gerne noch hinweisen!


Narses - Mi 06.05.15 23:49

Moin! ich wollte zwar heute nix mehr schreiben, aber was soll´s - ist eh ein Insider-Joke *g*

Ich suche jetzt schon seit bestimmt 2 Tagen nach dem Silberpapier-Thermodrucker-Fetzen, auf dem meine ZX81-Version von damals steht... :lupe: verdammt, ich find´s einfach nicht mehr... :motz: :eyes: wenn das Ding noch auftaucht, scanne ich das ein und lade das hoch, das muss man einfach gesehen haben... Sinclair-Basic... das waren noch Zeiten... :angel:

cu
Narses


Popov - Do 07.05.15 00:09

So langsam gehen mir die Ideen aus welche Version ich noch programmieren könne. Ich glaube ich programmiere als nächstes ein Game of Life mit TForm-Fenstern. Mal sehen ob das System 800 Fenster aushält.


Narses - Do 07.05.15 00:13

Moin!

user profile iconPopov hat folgendes geschrieben Zum zitierten Posting springen:
So langsam gehen mir die Ideen aus welche Version ich noch programmieren könne.
Boah, und ich dachte schon... :zwinker:

user profile iconPopov hat folgendes geschrieben Zum zitierten Posting springen:
Ich glaube ich programmiere als nächstes ein Game of Life mit TForm-Fenstern. Mal sehen ob das System 800 Fenster aushält.
Man man man, auf das Naheliegendste ("einfacher Ansatz", du erinnerst dich sicher) kommst du erst jetzt? :suspect: :schmoll:

cu
Narses


Mathematiker - Do 07.05.15 00:14

Hallo,
ich kann es besser. Das schlägt keiner!
Eine Game of Life mit Menüeinträgen:

gol

Mathematiker


Delphi-Laie - Do 07.05.15 08:37

user profile iconMathematiker hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe auch eine Variante, in Turbo Pascal mit Textausgabe: :lol:

Quelltext
1:
Program gameoflife;                    


Das soll funktioniert haben? Mußte nach meiner Erinnerung doch der interne Programmname gleich dem Dateinamen (vor dem Trennpunkt) sein, ansonsten wäre der Compiler doch gleich an der ersten Zeile stehengeblieben. Unter DOS waren maximal 8 Zeichen möglich, "gameoflife" hat derer aber 10. "gameoflife.pas" konnte es unter DOS demnach nicht geben.


OlafSt - Do 07.05.15 10:39

Ähm... Wurde der Dateiname nicht ohnehin vom DOS einfach kommentarlos gekappt ? Ergo ist "gameofli" übriggeblieben, ohne das es jemand merkt.

Ehrlich, die ZX81-Version würde mich brennend interessieren. Wäre doch mal cool, meinem hier stehenden ZX81 mal wieder was zu tun zu geben :beer:


Fiete - Do 07.05.15 12:53

Moin,
es ist schon lange her, auf einem TI 59 und PET 2001 liefen meine ersten Versionen :?
Die DOS-Version mit Assembler Anno 1989:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
{$R+,G+}
PROGRAM GAME_OF_LIFE_NACH_ARTHUR_CONWAY;{ zuletzt ge„ndert am 3.11.1989 }
 USES CRT,READEXT;
 CONST ZE=25;SP=82;ZEICHEN:ARRAY[FALSE..TRUE]OF CHAR=('.','*');
 TYPE FELD=ARRAY[1..ZE,1..SP]OF BOOLEAN;
 VAR F,NF:FELD; RUNTER,RECHTS,MZ,MS,NZ,NS,ZEILE,SPALTE:BYTE;
     LOW_LEBEN,HIGH_LEBEN,LOW_GEBURT,HIGH_GEBURT,OZZI:BYTE;
     ANZAHL,MODUS,GZ,LEBENDIG,A,G:WORD; TASTE:CHAR;
     OK,ABBRUCH,GLEICH:BOOLEAN;
     SCREEN:WORD;
 FUNCTION HERC_CARD:BOOLEAN;
  VAR KARTE:BYTE ABSOLUTE $40:$49;
  BEGIN HERC_CARD:=KARTE=7 END;
 PROCEDURE BLINK;
  BEGIN TEXTBACKGROUND(0);TEXTCOLOR(31END;
 PROCEDURE REVERSE;
  BEGIN TEXTBACKGROUND(7);TEXTCOLOR(0END;
 PROCEDURE NORMAL;
  BEGIN NORMVIDEO;TEXTCOLOR(YELLOW);TEXTBACKGROUND(BLACK) END;
 PROCEDURE RAND;
  VAR Z,S:BYTE;
  BEGIN
   FOR S:=2 TO NS DO
    BEGIN F[MZ,S]:=F[2,S];F[1,S]:=F[NZ,S] END;
   FOR Z:=2 TO NZ DO
    BEGIN F[Z,MS]:=F[Z,2];F[Z,1]:=F[Z,NS] END;
  END;
 PROCEDURE LOESCHEN_NF;
   VAR Z,S:BYTE;
   BEGIN
    FOR Z:=1 TO MZ DO
     FOR S:=1 TO MS DO NF[Z,S]:=FALSE;
   END;{ OF LOESCHEN_NF }
 PROCEDURE AUSGABE(VAR LEBEN:WORD);
  BEGIN
    ASM
             MOV BX,SCREEN
             MOV ES,BX
             MOV DI,OFFSET F
             XOR DX,DX  { LEBEN:=0 }
             XOR BX,BX
             MOV BL,RECHTS
             ADD BL,BL
             MOV AL,RUNTER
             MOV CL,160
             MUL CL
             ADD AX,BX
             XCHG AX,BX
             ADD DI,83
             MOV CL,NZ
             DEC CL
     @FOR_Z: PUSH BX
             PUSH DI
             MOV AH,14
             MOV CH,NS
             DEC CH
     @FOR_S: MOV AL,[DI]
             CMP AL,1
             JNE @UNTEN
             INC DX
             MOV AL,'*'
             JMP @AUSGB
     @UNTEN: MOV AL,'.'
     @AUSGB: MOV ES:[BX],AL
             INC BX
             MOV ES:[BX],AH
             INC BX
             INC DI
             DEC CH
             JNE @FOR_S
             POP DI
             POP BX
             ADD BX,160
             ADD DI,82
             DEC CL
             JNE @FOR_Z
             LDS DI,LEBEN
             MOV [DI],DX
    END
  END;{ OF AUSGABE }
 PROCEDURE EINGABE;
  CONST HOCH=#72;CRUNTER=#80;LINKS=#75;CRECHTS=#77;
        PGUP=#73;PGDN=#81;HOME=#71;ENDE=#79;ENTER=#13;
  VAR Z:CHAR;
      X,Y:BYTE;
  BEGIN
   CLRSCR;AUSGABE(LEBENDIG);X:=NZ DIV 2;Y:=NS DIV 2;
   REPEAT
    GOTOXY(Y+RECHTS,X+RUNTER);
    Z:=READKEY;
    IF Z=#0 THEN IF KEYPRESSED THEN Z:=READKEY;
    CASE Z OF
     HOCH   : IF X=1 THEN X:=NZ-1 ELSE DEC(X);
     CRUNTER: IF X=NZ-1 THEN X:=1 ELSE INC(X);
     LINKS  : IF Y=1 THEN Y:=NS-1 ELSE DEC(Y);
     CRECHTS: IF Y=NS-1 THEN Y:=1 ELSE INC(Y);
     PGUP   : IF (X>1AND (Y<NS-1THEN BEGIN DEC(X);INC(Y) END;
     PGDN   : IF (X<NZ-1AND (Y<NS-1THEN BEGIN INC(X);INC(Y) END;
     HOME   : IF (X>1AND (Y>1THEN BEGIN DEC(X);DEC(Y) END;
     ENDE   : IF (X<NZ-1AND (Y>1THEN BEGIN INC(X);DEC(Y) END;
     ENTER  : BEGIN F[X+1,Y+1]:=NOT F[X+1,Y+1];WRITE(ZEICHEN[F[X+1,Y+1]]) END
    END
   UNTIL Z=#27;
   AUSGABE(LEBENDIG)
  END;
 PROCEDURE ZAEHLEN(Z,S:BYTE;VAR A:BYTE);
  BEGIN
   ASM
           MOV DI,OFFSET F
           MOV SI,OFFSET @ZAEHL  { SI = Zeiger auf ZAEHL im Codesegment }
           MOV AL,Z
           DEC AL
           DEC AL
           MOV BL,82
           MUL BL
           MOV BL,S
           DEC BL
           DEC BL
           XOR BH,BH
           ADD AX,BX
           ADD DI,AX
           MOV CX,8
           XOR AL,AL
   @FOR_Z: MOV BL,CS:[SI]
           MOV AH,[DI+BX]
           ADD AL,AH
           INC SI
           LOOP @FOR_Z
           JMP @ENDE
   @ZAEHL: DB 0,1,2,82,84,164,165,166
   @ENDE:  LES BX,A
           MOV ES:[BX],AL
   END
  END;{ OF ZŽHLEN }
 PROCEDURE WARTE;
  VAR C:CHAR;
  BEGIN REPEAT C:=READKEY UNTIL C=' ' END;

 PROCEDURE BERECHNEN;
  VAR L,Z,S:BYTE;
  BEGIN
   GLEICH:=TRUE;
   FOR Z:=2 TO NZ DO
    FOR S:=2 TO NS DO
     BEGIN
      ZAEHLEN(Z,S,L);
      IF F[Z,S] THEN NF[Z,S]:=(L>=LOW_LEBEN) AND (L<=HIGH_LEBEN)
      ELSE NF[Z,S]:=(L>=LOW_GEBURT) AND (L<=HIGH_GEBURT);
      GLEICH:=GLEICH AND (F[Z,S]=NF[Z,S]);
     END
  END;{ OF BERECHNEN }
 BEGIN{ OF MAIN }
  RANDOMIZE;CLRSCR;
  IF HERC_CARD THEN SCREEN:=$B000 ELSE SCREEN:=$B800;
  BLINK;WRITE('Game of Life nach Arthur Conway (Life 2333)':60);NORMAL;WRITELN;
  WRITELN('Dieses Programm simuliert primitive Lebensvorg„nge. Gegeben ist');
  WRITELN('ein rechteckiger Lebensraum. Jedes Feld dieses Lebensraumes kann');
  WRITE('von einem ');REVERSE;WRITE('lebendem');NORMAL;
  WRITELN(' Individuum besetzt sein oder nicht. Alle Felder');
  WRITE('des Lebensraumes werden ');REVERSE;WRITE('gleichzeitig');NORMAL;
  WRITELN(' nach folgenden Regeln ver„ndert :');WRITELN;
  WRITE('1. Ein Lebewesen ');REVERSE;WRITE('berlebt');NORMAL;
  WRITELN(', wenn auf den 8 Nachbarfeldern zusammen');
  WRITELN('   mindestens 2 oder h”chstens 3 Lebewesen existieren.');
  WRITE('2. Ein Lebewesen ');REVERSE;WRITE('stirbt');NORMAL;
  WRITELN(',   wenn auf den 8 Nachbarfeldern zusammen');
  WRITELN('   weniger   als 2 Lebewesen existieren (sterben an Isolierung)');
  WRITELN('   oder mehr als 3 Lebewesen existieren (sterben an šberbev”lkerung.)');
  WRITE('3. Ein Lebewesen wird auf ein leeres Feld ');
  REVERSE;WRITE('geboren');NORMAL;WRITELN(', wenn auf den');
  WRITELN('   8 Nachbarfeldern zusammen genau 3 Lebewesen existieren.');
  GOTOXY(5,15);WRITE('Anzahl der Zeilen (10-23) : ');
  REPEAT
   OK:=TRUE;GOTOXY(32,15);NZ:=0;READBYTE(NZ,3);
   IF (NZ<10OR (NZ>23THEN OK:=FALSE
  UNTIL OK;
  INC(NZ);MZ:=NZ+1;
  GOTOXY(5,16);WRITE('Anzahl der Spalten (10-80) : ');
  REPEAT
   OK:=TRUE;GOTOXY(32,16);NS:=0;READBYTE(NS,3);
   IF (NS<10OR (NS>80THEN OK:=FALSE
  UNTIL OK;
  GOTOXY(5,17);WRITE('Lifeversion : ');
  REPEAT
   OK:=TRUE;GOTOXY(34,17);MODUS:=2333;READWORD(MODUS,4);
   IF (MODUS<2222OR (MODUS>8888THEN OK:=FALSE
   ELSE
    BEGIN
     LOW_LEBEN:=MODUS DIV 1000;HIGH_LEBEN:=(MODUS DIV 100)MOD 10;
     LOW_GEBURT:=(MODUS DIV 10MOD 10;HIGH_GEBURT:=MODUS MOD 10;
     IF LOW_LEBEN>HIGH_LEBEN THEN OK:=FALSE;
     IF LOW_GEBURT>HIGH_GEBURT THEN OK:=FALSE;
     IF LOW_GEBURT=0 THEN OK:=FALSE
    END
  UNTIL OK;
  INC(NS);MS:=NS+1;LOESCHEN_NF;F:=NF;
  RUNTER:=(ZE-1-NZ) DIV 2;RECHTS:=(SP-1-NS) DIV 2;
  GOTOXY(5,19);WRITE('Lebewesen eingeben (J/N) ? ');
  REPEAT TASTE:=UPCASE(READKEY) UNTIL TASTE IN['J','N'];WRITELN(TASTE);
  IF TASTE='N' THEN
   BEGIN
    A:=0;
    GOTOXY(5,21);WRITE('Anzahl der Lebewesen (0-',(NS-1)*(NZ-1),') : ');
    REPEAT
     OK:=TRUE;GOTOXY(39,21);READWORD(A,4);
     IF (A<0OR (A>(NS-1)*(NZ-1)) THEN BEGIN OK:=FALSE;A:=0 END
    UNTIL OK;
    GOTOXY(20,23);BLINK;WRITE('Ich');NORMAL;WRITE(' ');
    REVERSE;WRITE('rechne');NORMAL;WRITE(', bitte warten !');
    FOR G:=1 TO A DO
     BEGIN
      REPEAT
       ZEILE:=RANDOM(NZ-1)+2;SPALTE:=RANDOM(NS-1)+2;
      UNTIL (ZEILE IN[2..NZ]) AND (SPALTE IN[2..NS]) AND NOT F[ZEILE,SPALTE];
      F[ZEILE,SPALTE]:=TRUE
     END;CLRSCR;AUSGABE(LEBENDIG)
   END
  ELSE
   BEGIN
    GOTOXY(10,21);WRITE('Lebewesen setzen oder l”schen mit <ENTER>.');
    GOTOXY(10,22);WRITE('Das Eingeben wird mit <ESC> verlassen.');
    GOTOXY(25,24);WRITE('Weiter mit der Leertaste !');
    REPEAT TASTE:=READKEY UNTIL TASTE=' ';
    EINGABE
  END;
  GZ:=0;ABBRUCH:=FALSE;LEBENDIG:=0;OZZI:=0;RAND;
  REPEAT
   ANZAHL:=LEBENDIG;BERECHNEN;F:=NF;RAND;
   AUSGABE(LEBENDIG);INC(GZ); { WARTE;}
   IF ANZAHL=LEBENDIG THEN INC(OZZI);
   GOTOXY(20,MZ+RUNTER);CLREOL;
   WRITE(GZ:3,'-te Generation ',LEBENDIG,' Lebewesen !');
   IF KEYPRESSED THEN ABBRUCH:=TRUE
  UNTIL ABBRUCH OR GLEICH OR (LEBENDIG=0OR (OZZI=9);
  GOTOXY(1,MZ+RUNTER);CLREOL;
  IF LEBENDIG=0 THEN
   BEGIN
    GOTOXY(20,MZ+RUNTER);
    WRITE('Nach der ',GZ,'-ten Generation ausgestorben !')
   END;
  IF (OZZI=9AND NOT GLEICH THEN
   BEGIN
    GOTOXY(20,MZ+RUNTER);
    WRITE('Nach der ',GZ,'-ten Generation ozzilierend unver„ndert!')
   END;
  IF GLEICH THEN
   BEGIN
    GOTOXY(17,MZ+RUNTER);
    WRITE('Nach der ',GZ,'-ten Generation unver„ndert geblieben!')
   END;
  IF ABBRUCH THEN
   BEGIN
    GOTOXY(23,MZ+RUNTER);
    WRITE('Abbruch nach der ',GZ,'-ten Generation!')
   END;
  REPEAT TASTE:=READKEY UNTIL TASTE=#27
 END.

Die C64-Version muss noch im Keller liegen :wink:
Gruß Fiete


ub60 - Do 07.05.15 17:37

Zuerst einmal möchte ich sagen, dass ich erfreut bin, dass sich der Ton hier wieder in gemäßigten Bahnen bewegt.
Außerdem bin ich besonders erfreut über die "just for fun"-Game of Live-Varianten.

Da ich am Anfang des GoL-Threads Nini meine Hilfe bezüglich ihrer StringGrid-Idee angeboten hatte, möchte ich diese Idee (nur die Ansteuerung des Grids, nicht das komplette Spiel) hier auch noch einmal kurz vorstellen, da ich der Meinung bin, dass man das nicht viel kürzer hinbekommt (13 Zeilen ohne Variablendeklaration - Ich rufe auf zum Wettbewerb :lol: .).
Dabei werden allerdings die kompletten Daten direkt in der StringGrid-Eigenschaft Cells gespeichert, was natürlich Software-technisch ein "Verbrechen" ist.

ub60


Mathematiker - Do 07.05.15 18:12

Hallo,
user profile iconub60 hat folgendes geschrieben Zum zitierten Posting springen:
Ich rufe auf zum Wettbewerb :lol: .).

Bin dabei. Während mein Versuch mit den Menüeinträgen ein 5Minuten-Programm nach Mitternacht(!) war, d.h. also ziemlicher Unfug mit Fehlern im Text, habe ich jetzt eine weitere Lösung.

Dieses Mal nehme ich eine Checklistbox. Hier kann man sogar mit der Maus eine Startsituation anklicken.

Viel Spaß beim Testen.
Mathematiker

Nachtrag: In der Revision 1 kann man wahlweise auf eine Torus-Spielfläche schalten.


Delphi-Laie - Fr 08.05.15 07:57

user profile iconPopov hat folgendes geschrieben Zum zitierten Posting springen:
So langsam gehen mir die Ideen aus welche Version ich noch programmieren könne. Ich glaube ich programmiere als nächstes ein Game of Life mit TForm-Fenstern. Mal sehen ob das System 800 Fenster aushält.


Probieren wir es aus, lieber Popov, wenn auch nicht mit dem Game of Life, sondern mit etwas simpleren.

Das angehängte (Delphi-2-)Programm ist mein erfolgreiches Experiment, ein Programm zu schreiben, daß sich selbst anhand eines sichtbaren Elementes, eines Formulares, vollständig fortpflanzt und auf diese Weise vervielfältigt, also inkl. seinem Fortpflanzungs-/Vermehrungsverhalten. Ein solches Verhalten beherrscht ja leider nicht nur etliche Schadsoftware, sondern ist auch eine Voraussetzung für dauerhaftes Leben, aber auch für eine evtl. sich selbst verselbständigende technische Evolution ("Machtübernahme der Roboter"). John von Neumann bewies, daß ein solches Verhalten prinzipiell immer für die Information oder beliebige Systeme möglich ist, sofern eine "gewisse", hinreichend große Komplexität erreicht wird. Nun, diese Komplexität scheint nicht immer gar so groß sein zu müssen.

Was auf dem Bildschirm als farbige Pixel daherkommt (ich wählte derer Größe 2*2, damit sie besser zu sehen sind), sind in Wirklichkeit Mikroformulare (Formulare sind "nackte" Fenster). Nur das Startformular hat eine bedienbare Größe und zeigt auch die aktuelle Anzahl der Formulare an. Es sind demnach deutlich mehr als nur ein paar hundert möglich.

Das Timerintervall beträgt random(1000). Interessant ist auch, daß das Wachstum der Formularanzahl exponentiell ist, was anfangs auch spürbar ist, Windows jedoch sehr schnell damit überfordert ist und das ganze sich dann sogar selbst behindert und verlangsamt.

Von sich aus beenden läßt sich das Programm durch Schließen des Hauptformulares. Auch damit hat Windows ordentlich zu tun, wenn es recht viele Formulare sind, die alle daraufhin zerstört sein wollen, s. auch im Taskmanager das langsame Programmsterben.

Eine ähnliche interessante - und lösbare - Aufgabe ist übrigens, ein Programm seinen eigenen Quelltext komplett ausgeben zu lassen.

Dieser Selbstbezug ist übrigens das zentrale Denken, ja geradezu das Lebenswerk Douglas Hofstadters.


Ergänzung: Den Nachweis, daß viele Formulare generiert werden können, hätte ich auch ohne diese Programmselbstvervielfältigung zeigen können (das eine hat mit dem anderen im Grunde nichts zu tun), nur hatte ich dieses Program gerade zur Hand.

Ergänzung 2: Spätestens nach wenigen tausend Formularen ist allerdings Schluß, das Programm beendet sich daraufhin (oder wird von Windows beendet?).


Nersgatt - Fr 08.05.15 08:21

user profile iconub60 hat folgendes geschrieben Zum zitierten Posting springen:
(13 Zeilen ohne Variablendeklaration - Ich rufe auf zum Wettbewerb :lol: .).

Wenn Du nur Zeilen sparen willst, dann geht da noch was.
Ich hab mir die Initialisierung mit '0' gespart und ausgenutzt, dass im Stringgrid immer erst '' drin steht. 3 Zeilen gespart.
Und dann hab ich die Vorberechnung von Zeile und Spalte rausgenommen. Dadurch wird der Code natürlich deutlich hässlicher, aber es ging ja ums Zeilen sparen :wink:


Delphi-Laie - Fr 08.05.15 08:29

user profile iconub60 hat folgendes geschrieben Zum zitierten Posting springen:
Zuerst einmal möchte ich sagen, dass ich erfreut bin, dass sich der Ton hier wieder in gemäßigten Bahnen bewegt.


Das beeinträchtigt allerdings den Unterhaltungwert.

user profile iconub60 hat folgendes geschrieben Zum zitierten Posting springen:
(13 Zeilen ohne Variablendeklaration - Ich rufe auf zum Wettbewerb :lol: .).


Das ist nur dann einigermaßen sinnvoll, wenn es eine Restriktion gibt, so z.B. eine Anweisung / Zeile.

Viele (?) Programmiersprachen, so auch Pascal und Delphi erlauben ja die Komprimierung des Codes in Form mehrerer Anweisungen pro Zeile.

Deshalb bin ich auch immer wieder "amüsiert" über die Pressemitteilungen, wenn sich z.B. Winzigweich so sehr damit brüstet, wieviele hundert Millionen Codezeilen im neuen, ach so tollen Windows mal wieder hinzugekommen sind. Man kann den Code nämlich auch "strecken".


ub60 - Fr 08.05.15 09:35

user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:

Das ist nur dann einigermaßen sinnvoll, wenn es eine Restriktion gibt, so z.B. eine Anweisung / Zeile.
Das hatte ich mal ehrenhalber vorausgesetzt.

@user profile iconNersgatt:
Die einfachen Ideen sind immer die Besten! :D

ub60


Popov - Fr 08.05.15 11:27

user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
Probieren wir es aus, lieber popov


Dein Wunsch ist mir Befehl. Hier Game of Life mit Dialogfenstern.

Kurzanleitung: Programm starten, Dialogfenster bauen sich auf. Mit Mausklick auf die einzelnen Dialogfenster kann man die Farbe des Fensters setzten. Mit dem Main-Formular dann den Ablauf starten.


Popov - Fr 08.05.15 13:59

user profile iconub60 hat folgendes geschrieben Zum zitierten Posting springen:
Dabei werden allerdings die kompletten Daten direkt in der StringGrid-Eigenschaft Cells gespeichert, was natürlich Software-technisch ein "Verbrechen" ist.

ub60, das eigentliche Problem beim Speichern der Daten in einem StringGrid ist nicht nur Designtechnisch, sondern auch, dass es bei Game of Life immer die aktuelle und nächste Generation gibt. Hat man nur 1 Array, ob als Variable oder als Komponente wie z. B. StringGrid, kann man durchaus die jeweiligen Zellen nach den GoL Regeln berechnen (also einschalten oder abschalten), das Ergebnis wird aber falsch sein. Denn während die einen Zellen schon das Ergebnis der nächsten Generation sind, sind die anderen Zellen noch bei der Berechnung.

Ein Game of Life braucht also immer zwei Arrays. Das eine mit dem aktuellen Zustand, das zweite für die nächste Generation. Mit einem StringGrid alleine geht es also nicht. Man muss in dem Fall, wie auch immer, ein weiteres Array für die nächste Generation haben. Auch wenn es nur ein temporäres Array ist.


Horst_H - Fr 08.05.15 14:29

Hallo,

man braucht nur 3 Zeilen oder Spalten als Zwischenspeicher, je nachdem ob man zeilen- oder spaltenweise vorgeht.
Die davor, die aktuelle und die dahinter.Das kann ja auch zirkulär machen.
Hier geht es ja nur um möglichst krude Arten das Feld zu generieren.
Ich bekomme bei dem Formgenerator von user profile iconDelphi-Laie nur 4056 ( ja, nicht 4096 ) Fenster unter WINE.Crtl-Alt BackSpace hat mich gerettet...

Gruß Horst


ub60 - Fr 08.05.15 14:32

user profile iconPopov hat folgendes geschrieben Zum zitierten Posting springen:

Ein Game of Life braucht also immer zwei Arrays.

Popov, Du enttäuscht mich.

Am Anfang des Threads wärst Du mit solch einem Satz eventuell noch durchgekommen.
Jetzt muss ich Dich strengstens kritisieren. Nach den vielen Sinnlosprogrammen (und als Antwort auf meinen Beitrag) sollte der Satz jetzt heißen:

Ein Game of Life braucht also immer zwei Stringgrids. :twisted:

ub60


Popov - Fr 08.05.15 15:07

user profile iconHorst_H hat folgendes geschrieben Zum zitierten Posting springen:
man braucht nur 3 Zeilen oder Spalten als Zwischenspeicher...

Es geht nicht um die Frage ob man es irgendwie hinkriegt. Irgendwie kann man es immer hinkriegen.

user profile iconub60 hat folgendes geschrieben Zum zitierten Posting springen:
Nach den vielen Sinnlosprogrammen...

1. Überlas bitte mir zu entscheiden welche meine Programme sinnlos sind und welche nicht.

2. Lass bitte das billige anbiedern an die Kritiker. Von wem ich mich kritisieren lassen, entscheide immer noch ich alleine.

Zitat:
Ein Game of Life braucht also immer zwei Stringgrids. :twisted:

Das habe ich nicht behauptet. Lerne lesen und verstehen. Wenn du meine Texte in dieser Weise verdrehst, dann gehe ich davon aus, dass du es mit Absicht machst. Die Absicht hinter dieser Sinnesverdrehung ist dann wohl mich dumm aussehen zu lassen. Wundere dich dann also nicht über meine Reaktion.

Die Frage ist vielmehr ob du Game of Life überhaupt verstanden hast? Bei Game of Life gibt es immer zwei Generationen, die Jetzige und die Nächste. Aus der Aktuellen wird die Nächste berechnet. Da geht es nicht drum zellen blinken zu lassen. Es geht drum die nächste Generation zu berechnen. Und das macht man in einem zweiten Feld. Wenn du eine mathematische Formel auflöst, dann kritzelst du auch nicht alles in der gleichen Zeile hin, sondern leitest sie ab. Dafür nimmst du eine zweite Zeile.


Delphi-Laie - Fr 08.05.15 17:04

user profile iconPopov hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
Probieren wir es aus, lieber popov


Dein Wunsch ist mir Befehl. Hier Game of Life mit Dialogfenstern.

Kurzanleitung: Programm starten, Dialogfenster bauen sich auf. Mit Mausklick auf die einzelnen Dialogfenster kann man die Farbe des Fensters setzten. Mit dem Main-Formular dann den Ablauf starten.


Popov, magst Du vielleicht das Gefühl haben, daß manche hier auf Dir umherhacken oder Dich nicht ganz ernst nehmen: Ich bin jedenfalls schwer begeistert, und das meine ich nicht ironisch!

Was mich nur wundert, woher Du die Zeit und den Elan nimmst, "GoL" mit allen möglichen VCL-Steuerelementen diesem Forum zu kredenzen...


Popov - Fr 08.05.15 19:46

user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
Was mich nur wundert, woher Du die Zeit und den Elan nimmst, "GoL" mit allen möglichen VCL-STeuerelementen diesem Forum zu kredenzen...

1. Die erste Version beruht im Grunde auf einer bereits vorhandenen. Nur etwas modifiziert.
2. Die Nachfolgeversionen sind modifizierte Versionen der in Nr. 1. Es war weniger Arbeit als es aussieht.
3. Auch wenn einige nicht verstanden haben um was es in Game of Life eigentlich geht, es ist eine mathematische Aufgabe. Es geht nicht drum sie irgendwie zu lösen, damit Zellen blinken, es geht um eine Berechnung. Die Ausgabe ist nur der Mittel zum Zweck, nicht der Zweck.
4. Meine Hilfe an Nini war ernst gemeint. Ich hab meine Version nicht veröffentlicht um mich zu präsentieren, sondern um einen anderen Weg zu zeigen. Die Version mit der sich Nini da herumplagt, ob mit Begeisterung oder nicht, hat einen falschen Ansatz. Ich hab mir zwar nicht alles angeschaut, aber wenn der Fehler der auf den ersten beiden Seiten gemacht wurde, nicht später beseitigt wurde, dann funktioniert das Ganze auch nicht mal richtig. Auch fehlt ein Gesamtkonzept. Was bringt es einem kleine Häppchen beizubringen, wenn derjenige nicht weiß um was es da letztendlich geht.
5. Vielleicht warte ich nur auf dem Moment wo man Nini sagt: schön, du hast viel gelernt, das kannst du alles wieder gebrauchen, aber wir machen hier einen Schnitt und fangen mit einem anderen Ansatz neu an. Das ist meine Motivation.


Delphi-Laie - Fr 08.05.15 21:19

M.E. mußt Du Dich nicht rechtfertigen, weder irgendjemandem gegenüber noch mir. Und daß Deine Hilfsmühe, die sehr schnell sozusagen in Ungnade fiel, ehrlich gemeint war, nehme ich Dir ab, welchen Grund, daran zu zweifeln, sollte es auch geben? Ich wurde genausoschnell wie Du "externalisiert" - ein mich überraschendes und alles andere als erfreuendes Vorgehen.

Ich mache mich bei der Administration jetzt sicher wieder unbeliebt, äußere mich aber dennoch: Deine Kritik kann ich nachvollziehen und halte sie in gewisser Weise auch für berechtigt. Auf der anderen Seite hat Nini ja auch die Freiheit und bestimmt auch den Intellekt, die Notbremse zu ziehen und/oder ihren Unmut darob zu äußern, daß andere Hilfe nicht an sie herangelassen wurde. Beides geschah nicht erkennbar. Vermutlich liest sie auch in den anderen, den echten Diskussionen mit - schon zur Ablenkung, Erholung und Entspannung... ;-) Beißen wir uns also nicht am Schicksal einer uns leider nicht persönlich bekannten Chemnitzer Musterabiturientin (meine ich ebenfalls nicht ironisch) fest.

Moderiert von user profile iconNarses: Beiträge zusammengefasst

user profile iconPopov hat folgendes geschrieben Zum zitierten Posting springen:
3. Auch wenn einige nicht verstanden haben um was es in Game of Life eigentlich geht, es ist eine mathematische Aufgabe. Es geht nicht drum sie irgendwie zu lösen, damit Zellen blinken, es geht um eine Berechnung.


Game of life ist eigentlich eine wiederholte Ableitung. Aber näher kenne ich mich mit sog. zellulären Automaten nicht aus. Jeder Tochtergeneration liegen aber nur zahlreiche Zählungen zugrunde. Das mag man kaum als Addition, erst recht nicht als Berechnung bezeichnen.

user profile iconPopov hat folgendes geschrieben Zum zitierten Posting springen:
5. Vielleicht warte ich nur auf dem Moment wo man Nini sagt: schön, du hast viel gelernt, das kannst du alles wieder gebrauchen, aber wir machen hier einen Schnitt und fangen mit einem anderen Ansatz neu an. Das ist meine Motivation.


Das wird spätestens jetzt, nach diesem Deinem offenen Nähkästchen, gewiß nicht mehr passieren, sofern es dafür überhaupt eine Notwendigkeit gibt.


Popov - Fr 08.05.15 22:34

user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
Game of life ist eigentlich eine wiederholte Ableitung.

Egal was es auch ist, es ist kein Gefrikel.

user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
Das wir spätestens jetzt, nach diesem Deinem offenen Nähkästchen, gewiß nicht mehr passieren, sofern es dafür überhaupt eine Notwendigkeit gibt.

Ich werde es überleben. Ich kenne die Frau Anja Müller aus München nicht, ich kenne auch Nini nicht. Ob Frau Anja Müller aus München 1 Euro fehlt um die S-Bahn nachhause zu nehmen oder Nini ein zusammengebasteltes Game of Life bekommt, beides ist nichts über das ich mir wirklich Gedanken mache.

user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
sofern es dafür überhaupt eine Notwendigkeit gibt.

Wie ich schon geschrieben habe, wenn der Fehler von den ersten Seiten nicht später korrigiert wurde, sollte das Ganze nicht richtig funktionieren. Und dann muss man es zu laufen kriegen.


Narses - Fr 08.05.15 23:29

Moin!

Popov, du bist einfach ... einzigartig, unnachahmlich, legendär! :nixweiss: ("ich, einfach unverbesserlich") Jemanden wie dich hab ich noch nie getroffen. ;) (Und das meine ich wirklich ernst, ich schwöar! :shock:)

Wie sehr es dich doch innerlich zerfrisst, dass Nini deine Beiträge nicht mehr lesen kann, weil sie jetzt in einem eigenen Thread stehen, da kriege ich immer ein ganz schlechtes Gewissen... :( ich muss mich richtig zusammen nehmen, damit ich die Threads nicht doch noch wieder merge :? (keine Angst, wenn's zu schlimm wird, mach ich immer schnell was anderes um mich abzulenken, ich nehm dir deinen Thread schon nicht weg :zustimm:)

Aber was du auf eine Weise kannst, die wirklich bewundernswert ist: diese orakelhaften Andeutungen von ominösen Fehlern, <voice tune="doomsday"> die noch ein schlimmes Ende nehmen werden, wenn man sie nicht korrigiert </voice>, aber <voice tune="disclaimer"> das weiß ich nicht so genau, weil ich zu faul war, mir alles durchzulesen </voice>, die sind schon gekonnt, gradezu kleine literarische Kunstwerke, alle Achtung. :beer:

cu
Narses


Popov - Sa 09.05.15 01:34

Narses, mich zerfrisst nichts. Sicherlich, bei mir ist die Eigenschaft zu helfen, wenn ich sehe, dass jemand in Not ist, kleinwenig stärker ausgeprägt als bei vielen anderen. Viele sehen jemanden in Not, gehen aber vorbei und meinen: wenn er Hilfe braucht, wird er sich schon melden. Ich dagegen biete sie oft ungefragt an. In dem Fall muss ich aber auch damit leben, dass sie gelegentlich ausgeschlagen wird.

Nini (den Name ist ja niedlich, da muss man ja helfen) als solches interessiert mich nicht wirklich. Ich kenne ihn oder sie nicht. Er oder sie hat vermutlich den Parallel-Thread bemerkt, es ist also deren Entscheidung wie es weiter geht. Jeder Mensch ist seines eigenen Glückes Schmied. Ich bin zu lange in Foren unterwegs um mich noch zu fragen wieso ein Anfänger sich lieber für den einen Weg entscheidet, statt für den anderen. Ich denke es sind pragmatische Gründe.

Ich finde es übrigens fantastisch, dass der Thread jetzt "[Tutorial] Game of Life" umbenannt ist. Man könnte meinen, dass es sich hier um ein Tutorial handelt. Aber zurück zum Thema: Game of Life als Programm sind nur paar Zeilen lang. Das hätte in zwei Wochen durch sein können. Bei der Anzeige hätte man sich dann Zeit lassen, aber die Berechnung? Sowas nennt man das Pferd von Hinten aufzäumen. Man beginnt mit der Anzeige und programmiert die Berechnung drumherum.

Und nun zu dem ominösen Fehler. Narses, ich hab dir nie irgendwelche Programmierkenntnisse abgesprochen, die sind sogar gut. Was ich gesehen habe zeugt von gutem Wissen. Aber eine Frage stelle ich dann doch: hast du das Projekt in der Form schon selbst programmiert und ein funktionsfähiges Programm erstellt oder hilfst du sozusagen aus der Hüfte heraus? Steht dahinter ein wirkliches Konzept oder nur ein grober Gedanke im Kopf? Falls du es noch nicht selbst programmiert hast, dann mach es jetzt, dann findest du den Fehler auch. Ich hab es nur deshalb bemerkt, weil ich gerade ein halbes Dutzend GoL Programme geschrieben habe.

Natürlich könnte ich einfach sagen wo der Fehler ist (siehe erster Absatz, es juckt mich zu helfen). Man hätte auch geradeaus fragen können, ich hätte meine Vermutung schon genannt. Aber ich finde das Ganze drumherum dann doch zu sehr von oben herab. Also unterdrücke ich mein Verlangen.

Es kann aber auch sein, dass ich mich täusche. Vermutlich. Wie gesagt, ich hab nicht alle Seiten gelesen. Vielleicht wurde es später bemerkt und geändert.


Delphi-Laie - Sa 09.05.15 09:03

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
, damit ich die Threads nicht doch noch wieder merge :?


Dazu stehen Dir in meinem Sortierkino [http://www.entwickler-ecke.de/viewtopic.php?t=95246&start=0&postorder=asc&highlight=sortierkino] diverse Mergingalgorithmen (in diversen Mergesorts) zur Verfügung - bitte sei nicht zimplerlich und bediene Dich! ;-)


Narses - Sa 09.05.15 16:56

Moin!

user profile iconPopov hat folgendes geschrieben Zum zitierten Posting springen:
Natürlich könnte ich einfach sagen wo der Fehler ist
Du musst einfach eine offensichtliche Tatsache übersehen, :nixweiss: anders kann ich mir deine erheblichen Anstrengungen nicht erklären, mich auf einen potenziellen Fehler aufmerksam machen zu wollen: im Gegensatz zu dir kenne ich den Thread bereits (vollständig), ja, ich habe sogar Teile davon selbst geschrieben. :les: :think:

Jetzt, wo ich meinen taktischen Vorteil aufgegeben und dir verraten habe, dass ich bereits weiß, wie der Thread ausgeht (konkret: gab es einen Fehler? Wurde er gefunden? Konnte das Unheil durch eine Korrektur abgewendet werden? Hat der Held das Mädchen bekommen?), hoffe ich mal, dass du dieses Wissen nicht unredlich gegen dich verwendest. :flehan:

cu
Narses


Boldar - Sa 09.05.15 17:29

Was geht denn hier ab o.O


Narses - Sa 09.05.15 22:32

Moin!

user profile iconBoldar hat folgendes geschrieben Zum zitierten Posting springen:
Was geht denn hier ab
:nixweiss: Sag's mir, ich weiß es schon länger nicht mehr... :?

cu
Narses


Popov - So 10.05.15 00:06

Ach herr­je, endlich mal wieder was los hier und schon sind sie alle am jammern.