Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.312 Beiträge
 
Delphi 12 Athens
 
#51

Re: Programm zum Beobachten von Ameisen

  Alt 24. Jul 2006, 14:07
If round(realtime/2)=realtime/2 Then Hier im Forum wurde schon mehrmals gesagt, daß und warum man keinen direkten Vergleich mit RealWerten machen soll.
Delphi-Quellcode:
If time and 1 = 0 Then
//oder
If Odd(time) Then
Dann hab ich eine zusätzliche Variable eingeführt, so daß nicht mehr die Farben ausgelesen werden müssen.
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:
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;
ähhh, dazu sag ich mal nichts.
Code:
/////
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;
Warum ist test1 ein Integer und kein Boolean?


================================================== ========================


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

Ähh ... ja ... also die Futterplätze und der Bau sind och nicht mehr fest positioniert ... im Grunde ist fast alles recht dynamisch ausgelegt.
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

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:
// 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);
Jetzt noch eine Kleinigkeit beheben und dann muß ich mir noch überlegen, ob ich den QC offenleg




Nun noch 'ne Frage an den Herrn der Schöpfung: was war'n eigentlich mit dem Holz angedacht?
Angehängte Dateien
Dateityp: 7z ameisen_904.7z (22,3 KB, 22x aufgerufen)
Dateityp: exe ameisen_576.exe (502,0 KB, 37x aufgerufen)
Dateityp: exe ameisenex_213.exe (505,0 KB, 48x aufgerufen)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat