AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Simulation kleiner "Dinger" (Achtung Sinnfrei)
Thema durchsuchen
Ansicht
Themen-Optionen

Simulation kleiner "Dinger" (Achtung Sinnfrei)

Ein Thema von furuha · begonnen am 10. Feb 2009 · letzter Beitrag vom 19. Feb 2009
Antwort Antwort
Seite 1 von 2  1 2      
furuha

Registriert seit: 21. Jan 2009
21 Beiträge
 
Delphi 2005 Personal
 
#1

Simulation kleiner "Dinger" (Achtung Sinnfrei)

  Alt 10. Feb 2009, 13:25
Hallo,


dieses Programm ist mehr aus langeweile herraus entstanden. Im Prinzip sollen dort n "Partikel" die ihn am nächste "Nahrung" aus n "Nahrung" auswählen und sich zu dieser hinbewegen und diese "fressen". Das Programm ist noch nicht ganz fertig, evtl. auch etwas unschön geschrieben UND es hat einen Bug.... und zwar bewegen sich die "Partikel" irgendwann nicht mehr weiter, und fressen auch nicht mehr.

Anleitung: Erstellen der Partikel mit rechtsklick. Neue Nahrung per Button.

Getestet: Auf 3 WinXP Rechnern.


EDIT1: Neue Version (siehe Partikel3.zip), Array's haben jetzt definitiv keine Indexfehler mehr(hoffentlich^^) und die Anzahl kann pr Eingabefeld bestimmt werden. (Achtung: BEi 0 oder nicht Integer werten kommt ein Error, hab noch keine Überprüfung drinne.)





Furuha
Angehängte Dateien
Dateityp: zip partikel2_717.zip (205,0 KB, 43x aufgerufen)
Dateityp: zip partikel3_804.zip (223,3 KB, 80x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Simulation kleiner "Dinger" (Achtung Sinnfrei)

  Alt 10. Feb 2009, 13:54
Bewegen tuen die sich alle zwar, aber bei mir laufen die nach wenigen Sekunden alle auf den selben Punkt zu und zappeln dort nur rum.

Wenn ich das Programm maximiere, dann malt der Mauszeiger rechts (neben der Zeichenfläche) so eigenartig rum?

Tipp: wir haben hier schon kleine Einwohner ... falls du dort mal etwas abgucken willst
z.B.: Hier im Forum suchenAmeisen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
furuha

Registriert seit: 21. Jan 2009
21 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Simulation kleiner "Dinger" (Achtung Sinnfrei)

  Alt 10. Feb 2009, 14:16
Danke für den Verweis.

Und genau dieses stehenbleiben und rumzappeln was du ansprichst ist das Problem. Vorallem alle auf dem selben Punkt! Vllt handhabe ich die array's falsch?


btw. : Kann sich ein timer eigentlich überhohlen? oder wartet der bis zur nächsten Ausführung bis der einmal durch ist?





Furuha
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Simulation kleiner "Dinger" (Achtung Sinnfrei)

  Alt 10. Feb 2009, 14:23
nun. Um das "sich selbs überholen" auszuschalten mach doch sowas:
Delphi-Quellcode:
procedure form.OnTimerTimer;
begin
  timer.enabled:=false;
  //code...
  timer.enabled:=true;
end;
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Simulation kleiner "Dinger" (Achtung Sinnfrei)

  Alt 10. Feb 2009, 14:29
Also ein Timer kann sich nicht "überholen", es sei den du machst z.B. ein Application.ProcessMessages drt rein, womit die Nachrichtenschleife mittendrin ausgeführt wird.
Denn die Timernachricht wird von dieser abgearbeitet und alle Nachrichten werden normaler Weise nacheinander verarbeitet.

Wegen dem an einer Stelle sammeln ... vermutlich ist einfach deine Berechnung irgendwo falsch ... ich hatte es hier auch schon, daß sich sehr viele Partikel in einer Futterstelle sammelten und diese nicht verschwand.

womöglich könntest du auch etwas mit Records rumspielen, damit sieht man dann auch leichter, was womit gemeint ist. (vielleicht hast'e ja nur irgendwo 'nen falschen Array-Index verwendet)
Delphi-Quellcode:
// statt
var
  partikel: array of array[0..3] of extended;
  food: array of array[0..2] of extended;

// z.B. lieber sowas
type
  TPartikel = record
    x, y, movX, movY: extended;
  end;
  TFood = record
    x, y, mirfälltgradkeinnamedafürein: extended;
  end;
var
  partikel: array of TPartikel;
  TFood: array of TFood;
wofür ist px1 und px2?
und warum sind x2 und y2 globale Variablen, wo sie doch nur in FormMouseMove verwendet werden
ja und wozu wird in FormMouseMove gemalt ... wird doch eh gleich wieder vom Timer übermalt

PS: Deine CodeFormatierung ist nicht unbedingt die Beste ... könnte man vielleicht etwas aufräumen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
furuha

Registriert seit: 21. Jan 2009
21 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Simulation kleiner "Dinger" (Achtung Sinnfrei)

  Alt 10. Feb 2009, 15:19
Hab den Code etwas von Müll befreit, allerdings noch nicht neu formatiert. Neue Version im ersten Post.

EDIT: Indexfehler usw. sollten auch beseitigt sein. Mehr Infos im ertsen Post.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Simulation kleiner "Dinger" (Achtung Sinnfrei)

  Alt 18. Feb 2009, 13:23
Hallo furuha,

ich hab mir mal Deine Sourcen angetan. OK, daß die Formatierung noch im argen liegt weißt Du ja. Aber als ich es ausprobiert habe, hat es mal funktioniert (der Hintergrund wurde weiß) und mal nicht.

Neben dem Formatieren der Sourcen solltest Du vielleicht etwas an der Oberfläche arbeiten, z.B. "Start mit Rechtsklick der Maus" oder einen "Start"-Button.

Unter uses hast Du wohl alle Units eingebunden die Dir über den Weg gelaufen sind, da wäre weniger auch mehr, denn Grids z.B. wird wohl überhaupt nicht benötigt.

Zum Programm selbst, da hab ich nur ein paar rote Rechtecke gesehen, und viele Masernflecken, die sich auf einer Diagonalen einfanden und dann mehr oder weniger geordnet in einem Kanalloch verschwanden. (wenn es denn dann lief)

Gruß K-H
  Mit Zitat antworten Zitat
Benutzerbild von Reinhardtinho
Reinhardtinho

Registriert seit: 26. Feb 2007
411 Beiträge
 
Delphi 5 Enterprise
 
#8

Re: Simulation kleiner "Dinger" (Achtung Sinnfrei)

  Alt 18. Feb 2009, 13:46
Das flackert aber teilweise ganz schön, hast du

DoubleBuffered := true; eingestellt?

Warum nehmen die Partikel nicht immer den kürzesten Weg zum Futter. Manchmal schließen sie erst zu einer Reihe weiterer Partikel auf und folgen dann erst zu der Nahrung. Oder ist das Absicht?
Ich habe viel von meinem Geld für Alkohol, Weiber und schnelle Autos ausgegeben ... Den Rest habe ich einfach verpraßt.

George Best - 22.05.1946 - 25.11.2005 - nordirischer Fußballspieler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Simulation kleiner "Dinger" (Achtung Sinnfrei)

  Alt 18. Feb 2009, 13:52
Zitat von Reinhardtinho:
Warum nehmen die Partikel nicht immer den kürzesten Weg zum Futter. Manchmal schließen sie erst zu einer Reihe weiterer Partikel auf und folgen dann erst zu der Nahrung. Oder ist das Absicht?
Das liegt einfach an der Berechnung .... die gehen alle nach dem selben Muster und nicht unbedingt den "kürzesten" Weg zum Ziel ... drum sieht es so aus, als würden sie sich zusammenschließen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Reinhardtinho
Reinhardtinho

Registriert seit: 26. Feb 2007
411 Beiträge
 
Delphi 5 Enterprise
 
#10

Re: Simulation kleiner "Dinger" (Achtung Sinnfrei)

  Alt 18. Feb 2009, 14:10
Also doch Absicht

Naja, alleine essen macht ja auch dick^^
Ich habe viel von meinem Geld für Alkohol, Weiber und schnelle Autos ausgegeben ... Den Rest habe ich einfach verpraßt.

George Best - 22.05.1946 - 25.11.2005 - nordirischer Fußballspieler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz