Thema: Delphi Farben erkennen

Einzelnen Beitrag anzeigen

Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#3

Re: Farben erkennen

  Alt 11. Dez 2005, 19:55
also erstmal machst du dir einen Screenshot Hier im Forum suchenScreenshot
Dann lädst du das ganze in ein TBitmap o.ä. Hier im Forum suchenTBitmap

dann baust du dir ein Array [1..x,1..y] of Byte um darin abzulegen, welcher untergrund das ist

Delphi-Quellcode:
for x:=1 to Bild.Width do
  for y:=1 to Bild.Height do
    begin
    Case Bild.Canvas.Pixels[x,y] of
      clBlack: Data[x,y]:=0; //Rand
      clGreen: Data[x,y]:=1; //Rasen
      //....
    end;
    end;
und dann gibt es mehrere möglichkeiten.

a)
du kannst versuchen zu berechnen (wenigstens näherungsweise) wo du hinspielen musst. Dies wäre am sinnvollsten, aber auch stylistisch am schönsten.

wie das gehen könnte habe ich ehrlich gesagt keine idee


b)
du simulierst in bestimmten Rastern die abschläge, und tastest dich so an den korrekten Schlag an.
Das wäre wahrscheinlich relativ einfach zu programmieren, braucht aber im zweifel mehr zeit und ist imho stylistisch sehr unschön (sagt dir Brute-Force was? )

das könnte wie folgt aussehen:
du machst ein Schleifenkonstrukt wie folgt:
Delphi-Quellcode:
for Winkel:=Anfang to Ende (Step genauigkeit) do
  for Stärke=Min to Max do
indem du einfach mit einer gewissen genauigkeit alle schläge im Winkel "Winkel" mit der stärke "Stärke" durchprobierst (für das eigentliche Simulieren musst du halt jeweils gucken was für felder du überquerst, und demnach abbremsung, beschleunigung und ablenkung draufhauen)
beim durchprobieren prüfst du jedesmal, wie weit der ball vom Loch entfernt ist. die kleinste Distanz speicherst du.
Dann nimmst du dir die Winkel und die Stärken der beiden Durchläufe mit der kleinsten Distanz und fängst mit den neuen Grenzen von vorne an.
wenn diese Distanz klein genug ist, das der ball im Loch landet, kannst du natürlich aufhören
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat