-
Forum: Software-Projekte der Mitglieder
by Danny92,
4. Sep 2017
Der Case-Zweig in SetzeFlotte musste wie folgt abgeändert werden:
case k of
0: if a.Y >= i then
b := Point(a.X, a.Y - i + 1)
else
richtungProbiert:=True;
1: if a.Y + i - 1 <= feldgroesse then
b := Point(a.X, a.Y + i - 1)
else
-
Forum: Software-Projekte der Mitglieder
by Danny92,
3. Sep 2017
Ok ich habe den Fehler gefunden^^
-
Forum: Software-Projekte der Mitglieder
by Danny92,
3. Sep 2017
Hier noch einmal die Prozedur zum Setzen der Flotte:
procedure TForm1.SetzeFlotte(ofPlayer: boolean);
var
zahl, i, j, k, fehlenNoch, vofPlayer: Integer;
done, alleProbiert: Boolean;
richtungProbiert: array of Boolean;
begin
vofPlayer:=StrToInt(BoolToStr(ofPlayer, false)) + 1;
flotte.Free;
-
Forum: Software-Projekte der Mitglieder
by Danny92,
3. Sep 2017
Ja es wird alles beachtet was beim Plazieren der Schiffe notwenig ist; dass es aus dem Feld nicht herausragt, dass dieses Schiff mit anderen nicht kollidiert oder sie sich berühren. Und solange nicht all diese Bedingungen erfüllt sind, wird das Schiff zufällig neu plaziert. Und mir ist schon unverständlich wie man da aus der Schleife rauskommt, solange noch nicht alle Schiffe plaziert worden...
-
Forum: Software-Projekte der Mitglieder
by Danny92,
2. Sep 2017
Ich habe noch einen Fehler gefunden, aber ich weiß noch nicht, wie der zustande kommt. Setzt man die spielfeldgröße auf 5x5 Felder (spinedit. Max in der form2 muss evtl auf 5 gesenkt werden), und benutzt 1 fünfer Schiff sowie 1 dreier Schiff, so kommt es beim spielstart beim Klick auf zufällig in ca 10% der Fälle dass das fünfer Schiff nicht erscheint, sondern nur das kleine. Weiß jemand, wieso?...
-
Forum: Software-Projekte der Mitglieder
by Danny92,
29. Aug 2017
Okay jetzt habe ich die Speicherlecks gefunden. Einmal hab ich in TFlotte.Destroy vergessen, die einzelnen Schiffe im Array wieder freizugeben.
Und das andere Leck war etwas schwieriger zu finden: Im Destroy-Ereignis der Form hat noch ein BTMemoryFreeLibrary(mp_MemoryModule);
FreeMemory(mp_DllData); gefehlt. :thumb:
-
Forum: Software-Projekte der Mitglieder
by Danny92,
28. Aug 2017
Ja cnPack hab ich soeben schon mal installiert. Was soll ich sagen? Es sieht schon mal prima aus! Im Destroy-Ereignis gebe ich die Bitmap im Array wieder frei. Damit konnte ich die Speicherleaks auf folgende im Anhang reduzieren. Aber was ist der Rest? Ich vermute mal, das hat wieder irgendwas mit der Bass.dll aus der Ressource zu tun. Ich hab mich damit wie gesagt noch nie so intensiv...
-
Forum: Software-Projekte der Mitglieder
by Danny92,
28. Aug 2017
Natürlich das habe ich vergessen:oops:
-
Forum: Software-Projekte der Mitglieder
by Danny92,
27. Aug 2017
Im OnCreate-Ereignis habe ich hinzugefügt:
for i:=low(explosion) to high(explosion) do
begin
explosion.LoadFromResourceName(hInstance,'exp'+IntToStr(i));
end;
Sowie im TExplosionTimer habe ich
Image1.Picture.Bitmap.LoadFromResourceName(hInstance,'exp'+IntToStr(expindex));
durch
image1.Picture.Bitmap.Assign(explosion);
-
Forum: Software-Projekte der Mitglieder
by Danny92,
27. Aug 2017
Jaa, vielen Dank für diese glorreichen Worte. :) Ja die Explosion.gif wird immer aus der Ressource geladen das kann ich noch verbessern. Bloß mit dem Timer im 25ms Intervall verstehe ich noch nicht so ganz. Sinn und Zweck von Delay ist ja nicht, ein Grid irgendwann neu zu zeichnen, sondern die Ausführung an Ort und Stelle im OnMouseDown-Ereignis kurzzeitig zu pausieren, bis die an der Stelle...
-
Forum: Software-Projekte der Mitglieder
by Danny92,
27. Aug 2017
Jaaa die hab ich auch gerade gefunden. Na super, da sinkt die Auslastung der CPU gleich mal um lockere 20 Prozentpunkte...Einwandfrei.
-
Forum: Software-Projekte der Mitglieder
by Danny92,
27. Aug 2017
Ja das mit den Variablen werde ich schon hinbiegen.
Nur das mit dem Delay ist wirklich notwendig, zumindest im OnMouseDown-Ereignis von der FeldKI-Komponente, da mir das Programm bei Sleep einfrieren würde (von wegen keine Rückmeldung), und das ist natürlich nicht so toll, mit Delay kommt das nicht mehr vor. In der BtDemo macht das natürlich kein Sinn klar...
Aber ich brauche jedenfalls an...
-
Forum: Software-Projekte der Mitglieder
by Danny92,
27. Aug 2017
Okay danke das ist doch schon mal was. Ich werd' da weiter dran arbeiten und mich um effizieteren Gebrauch der Variablen kümmern. Womöglich hab ich dann halt mehr Parameter, und den Rest schieb ich in den private-Bereich. Aber ich fürchte das wird nicht das Problem sein für die hohe CPU-Auslastung oder?
Die Bass.pas hab ich nur am Anfang gebraucht, wie ich die Bass.dll in der Ressource noch...
-
Forum: Software-Projekte der Mitglieder
by Danny92,
27. Aug 2017
Okay hier ist die vom Sound entschlackte Projektdatei. Lediglich deshalb war sie über 50 MB groß (das hier keine falschen Eindrücke entstehen :wink: , bei mir wurde der Link auch unsicher gemeldet :wink:) Deswegen hier noch einmal.
-
Forum: Software-Projekte der Mitglieder
by Danny92,
27. Aug 2017
Jetzt habe ich das Schiffe versenken soweit fertig gestellt und stelle es euch hier zur Verfügung. Ich bin für jeden Tipp, Verbesserungsvorschlag, konstruktive Kritik oder neuen Einfall jederzeit dankbar. Schlussendlich geht es mir neben der Kritik nun nur noch darum, etwas an Performance rauszuholen, denn bei aktivem Spielen mit der KI läuft meine - wenn auch nicht gerade schnellste - CPU...