![]() |
Re: Programm zum Beobachten von Ameisen
Liste der Anhänge anzeigen (Anzahl: 3)
Delphi-Quellcode:
Hier im Forum wurde schon mehrmals gesagt, daß und warum man keinen direkten Vergleich mit RealWerten machen soll.
If round(realtime/2)=realtime/2 Then
Delphi-Quellcode:
Dann hab ich eine zusätzliche Variable eingeführt, so daß nicht mehr die Farben ausgelesen werden müssen.
If time and 1 = 0 Then
//oder If Odd(time) Then Nicht nur, daß es schneller ist (nicht nur, weil die Multiplikation wegfällt und wegen dem INC, satt ADD ... Pixels ist ja bekannter Maßen nicht gerade eine schnelle Funktion), vorher waren die Werte auch noch verloren, wenn der Bildschirm gelöscht wurde und man kann jetzt Anfragen einfach zusammenfassen.
Delphi-Quellcode:
ähhh, dazu sag ich mal nichts.
If canvas.pixels[Ameise[a].X*4, Ameise[a].Y*4+4] = clred Then
If Feld[Ameise[a].X, Ameise[a].Y + 1] = sAmeise Then If canvas.pixels[Ameise[a].X*4, Ameise[a].Y*4+4] = clred Then w := 0; If canvas.pixels[Ameise[a].X*4, Ameise[a].Y*4+4] = clgreen Then w := 0; If Feld[Ameise[a].X, Ameise[a].Y + 1] in [sAmeise, sGras] Then w := 0;
Code:
Warum ist test1 ein Integer und kein Boolean?
/////
If a Then If b Then If a and b Then ///// If a=b=false Then If a<>b Then ///// a*1000 + b=100100=false a*1000 + b<>100100 // siehe drüber (a <> 100) or (b<>100) ///// If a Then ... If a Then ... If a Then ... If a Then Begin ... ... ... end; ================================================== ======================== So, ich hab och mal ein bissl rumgespielt ._. (siehe Anhang). Es wird kein TImage verwendet (wie bei einem Vorgänger), sondern TPaintBox und intern (nur wenn das gesamte Bild neugemacht wird) ein TBitMap als Zwischenspeicher. Die Pixels werden nicht mehr ausgelsen, dafür wirde eine neue Variable eingeführt, wo die Zustände der Felder gespeichert sind. Und dann durden noch die Variablen neu geordnet ... zusammengehöriges in einen Record Ach ja, in QC gibt's so'n paar nette Constanten (ganz oben) ... damit könnte man es sich ein bissl anpassen (an Monitor und CPU). Die PaintBoxen, Panels und der Rest wird dann beim Programmstart mit angepasst. Die beiden Wege- und Strassenbilder werden jetzt auch mal mit bereinigt ... so werden z.B. verduftete Straßen entfernt und man sieht nur noch das "Aktuelle". Mit NeuIntervall=0; NeuSchritte=MaxX; wird das bei jedem Durchgang gemacht (die Wege verschwinden dann so, wie man es von den ganzen Snake-Spielen kennt), aber wegen der CPU-Belastung wird das standardmäßig nur Schrittweise durchgeführt. Wofür die beiden ScrollBars da unten sind, werdet ihr schon rausfinden :zwinker: Ähh ... ja ... also die Futterplätze und der Bau sind och nicht mehr fest positioniert ... im Grunde ist fast alles recht dynamisch ausgelegt. :roll: Dann können sich auf den Feldern des Baus mehrere Ameisen zugleich aufhalten, ist och logischm weil der ja eigentlich ganz tief in die Erde reicht. Außerdem auch wegen des größeren Baus gibt es jetzt kein gedrängel mehr, wenn mehrere zugleich reinwollen. Dann hab ich noch die transportierbare Futtermenge etwas gedroßelt ... die Kleinen hatten sich ja explosionsartig vermehrt. Und da ich ja jetzt mal den tatsächlichen Zustand der Geruchsspuren sah, verringerte ich auch noch deren Verfall, die waren ja och viel zu schnell verschwunden -.-'' So ... ich hoffe damit wäre erstmal alles gesagt ^^ Na OK, ein/zwei Fehler sind noch drin, aber mal sehn wann nich Lust bekomm die zu suchen :engel: [size=1]ach, was man nicht alles macht, wenn man ma kurz von seinen Dingen Abstand braucht ._.[/size] [add] So, Samstag war ma und Heute hatte ich doch nochma ä bissl Lust bekommen. ('s macht irgendwie Spaß und Haustiere hatte ich och lange keine mehr) -Vorschau siehe AmeisenEx.exe -Geburtenkonntrolle eingeführt -Wegefenster erweitert -transprotierende Ameisen haben auch noch ein paar Prozente an Zufall bekommen (die haben sich sonst zu schnell irgendwo festsetzten können, wenn der Weg mal versperrt war) -will 'ne Ameise die schon was trägt an 'nem anderem Häppchen vorbei, dann läßt sie das Aktuelle liegen und nimmt sich's Neue (die Variante mit dem Drumrumlaufen war nicht so schön, vorallem da die Kleinen so auch mal mitten im Futterplatz eingesperrt werden konnten und jämmerlich "verhungerten" ._.) ... -ups, hatte es wohl mit'm Futter über(unter)trieben ... na ja, jetzt isses nichmehr möglich ein Volk/Folk aussterben zulassen -'nen Fehler behoben (blöd, wenn man oben mit unter / + mit - verwechselt -.-'') -nein, Blut wird nicht vergossen, die sin also noch dodal lieb :zwinker: Also beim "Benchmark" ... wenn die Zeit für einen Durchlauf übe der des Timers liegt, dann sollte man sich wohl langsam mal Gedanken machen, falls man selber auch noch etwas CPU-Leisung benötigt ;) an Einstellungen gibt's dann sowas
Code:
Jetzt noch eine Kleinigkeit beheben und dann muß ich mir noch überlegen, ob ich den QC offenleg :tongue:
// 800x600: MaxX=198, MaxY=169, FutterPlaetze=5
// 1280x1024*: MaxX=237, MaxY=200, FutterPlaetze=13 // 1600x1200*: MaxX=305, MaxY=260, FutterPlaetze=20 Const MaxX = 198; MaxY = 169; FutterPlaetze = 10; Voelker = 2; AmeisenStart = 50; AmeisenMin = 3; AmeisenMax = 4096; MaxLeben = MaxX * MaxY div 16; NeuIntervall = 16; NeuSchritte = 16; VolkFarbe: Array[-1..Voelker-1] of TColor = (clSkyBlue, clRed, clOlive); Nun noch 'ne Frage an den Herrn der Schöpfung: was war'n eigentlich mit dem Holz angedacht? |
Re: Programm zum Beobachten von Ameisen
Hi Himitsu,
sieht echt nett aus, allerdings kam bei mir erst die 9. (!!!) Ameise mit ihrem Futter an, weil alle anderen hängen blieben. Die Struktur war so (g ^= Gras, a ^= Ameise):
Delphi-Quellcode:
Das war bei einigen der Fall, wobei der oberste Graspunkt nicht unbedingt da war, sie sind teilweise auch an 2 übereinanderliegenden Graspunkten hängen geblieben.
.
[g] [a][g] [g] Ansonsten :thumb: mfg, Martin |
Re: Programm zum Beobachten von Ameisen
Offenbar ist das eine gepimpte Version von einem schon einmal vorgestelltem Ameisenstaatsimulator (AstaS).
Offenbar sind deine Ameisen auch nicht viel schlauer als die alten, sie rennen auch an schnurstracks am Fressen vorbei obwohl es sich nur einen Pixel neben ihnen befindet ^^ Habe die Population mal auf das Maximum anwachsen lassen, etwa 1500 denn dann wird die Nahrung knapp. Dann hab ich mal den Nahrungswert auf Null heruntergesetzt und die Pop. auf 14 reduziert. Nun mit meinem Suchauge das Bild abgegrast, real waren aber nur 4 auf dem Bildschirm, gleiches Problem wie bei dem alten Code :) |
Re: Programm zum Beobachten von Ameisen
Liste der Anhänge anzeigen (Anzahl: 1)
inzwischen bleiben die zwar nicht mehr ganz so stark zu hängen ... hab halt noch etwas zufall mit din die Bewegung eingebaut, aber perfekt ist es noch lange nicht.
normaler weise laufen die Ameisen ja vorwigend über zufall und de Geruchsspuren, welche ja von irgendwo herkommen, also "Hindernisfrei" sind. Aber zurück laufen die halt vorwiegend direkt (in 45°- und 90°-Winkeln) und können Hindernissen nur bedingt ausweichen. Idealer wäre es halt, wenn die erstmal direkt laufen und bei 'nem Hindernis versuchen Bogenförmig und immer Bogenförmiger zu laufen ... aber dafür 'ne Berechnungsformel zu erstellen °_° also bisher war mir das noch etwas zu hoch (abgesehn davon hab ich das hier nur nebenbei mal geschrieben ... so aus Spaß. ach ja, die Version hier hatte noch 'nen Fehler drin ... die Ameisen durften im original Programm nur ab 'ner bestimmten Stärke "Lebensenergie" ins Freie und wenn sie nichts zu futern hatten, waren sie halt zu schwach und durften nicht raus. Aber Zählfehler kann ich dennoch nicht ausschließen. siehe Bild. Population 2 hat 4 Ameisen (ich konnte aber bisher nur eine entdecken) ... aber schlimmer ist, selbst wenn es wiklich 4 sind ... schaut euch mal an wievile davon was tragen ._. (war leider zu sehr mit WMI beschäftigt, daß ich doch glat vergessen hab die neue Programmdatei und eventuell noch die QCs mitzunehmen -.-'' ) PS: das mit dem gepimpt ... eigentlich hatte ich zuerst nur mal das Original umstrukturiert und einige Sachen etwas anders ... als ich dann fastvertig war, dachte ich mir.. och, den einen _Record da noch mit reinpacken und davor dann ein "Array of" und man hätte 2, 3, oder Völker. Na OK ganz s enfach war's ann doch nicht, weil dann plötzlich einige Ameisen die Nahrung im falschen Hügelablieferten ... und solche Sachen :roll: geplant ist (für die nächsten Wochen) - nahrung bleibt liegen und kann von 'ner anderen Ameise mitgenommen werden, wenn ein Ameise stirbt - die ameisen können sich gegenseitig das futter klauen also entweder aus dem gegnerischem hügel, oder oder sie (kämpfen) die stärkere krigt halt die Beute, wenn sie sich treffen - wenn sie sich treffen und beide mal kein futter bei haben, dann evenuell ein "machtkampf" ... der schwächere wird zu futter ... na ja, die sollen halt auch mal miteinander agieren. bisher ignorieren sie sich ja nur OK, auf dm Bild war es halt so, das die obere Population einfach zuweit vom Futter weg war und die in der Mitte denen alles so schnell wegfraß (weil sie sich halt schneller vermehren konnten), daß die Obere fast einging ._. [add2] ohh, hab doch noch die fehlenden Ameisen entdeckt (denk ich mal) ... eine s so links oben und die anderen mehr in der mitte, bis leicht rechts unten ^^ |
Re: Programm zum Beobachten von Ameisen
Liste der Anhänge anzeigen (Anzahl: 1)
Hehe... Also mir ist was lustiuges passiert (siehe Anhang)
|
Re: Programm zum Beobachten von Ameisen
Nöö, dat is Absicht ... ich kann ja keine Ameisen aus dem Nichts erzeugen, also holen die sich einen "Kedit".
Solange es also "normal" läuft, dann fressen die nur bis auf 0 (Vorratskammer leer) runter und verhungern dann jämerlich (hier könnte man es ja noch mit Sounds/Klagelauten untermauern). Aber wenn die Ameisen am aussterben sind, dann wird immer dafür gesorgt, daß (mit den aktuellen Einstellungen) immer mindestens 3 Ameisen vorhanden sind .. tja und die Aeisen müssen ja aus irgendwas gemacht werden (also der Kredit) :stupid: |
Re: Programm zum Beobachten von Ameisen
Schade ^^ Ich wollte schon meine Kolonien ausrotten! ^^
|
Re: Programm zum Beobachten von Ameisen
seit wann nimmt ne Ameise nen Kredit auf?
nur wenn sehr viel Futter da ist, wird aus nem Teil des Futtervorrats ne Ameise erschaffen... und das ist auch ganz richtig so denke ich ausserdem gibts keine Geburtkontrolle! wenn genug Futter da ist vermehren die sich und das pendelt sich schon ein ich hab mir den source code noch nicht angeguckt(wegen Delphi 3: Delphi 2005 hab ich uf nem anderen Windows), aber sieht ja schon mal sehr hübsch aus und darauf, dass sich Ameidenvölker bekriegen freu ich mich schon! Aber was fürn Holz? wenns das ist was ich meine, sollten die Ameisen unter viel Aufwand und vllt auch durch tote Grashalme absägen, die nennen wr dann Holz und damit bauen die sich nen neuen Bau... Wenns so weiter geht, dann haben wir ne Intelligente Ameisenkolonie erschaffen und dann Programmieren wir mal die möglichkeit, dass menschliche Spieler auch ne Menschen(winzlinge) Klonie bauen können und dann haben wir ein Spiel aller Age of Empires! ich glaub, dass gehört langsam alles in Open-Source |
DP-Maintenance
Dieses Thema wurde von "Dax" von "Freeware" nach "Open-Source" verschoben.
Passt hier wirklich besser |
Re: Programm zum Beobachten von Ameisen
hi, bau doch einfach eine kollisionsabfrage auf alle 8 felder die eine ameise umgibt,
wenn eines davon gras ist, wird das feld schon mal ausgelassen, einfach mit ner while schleife durchlaufen lassen bis ein betretbares feld erreichbar ist bei mir haben sich 20 - 30 ameisen direkt zwischen dem futter verbarrikadiert und kamen erst raus als ein paar andere sie befreit haben :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz