Autor Beitrag
Beliar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34



BeitragVerfasst: Di 02.03.04 18:27 
Hi,
Ich wollte mal fragen ob es eine Möglichkeit gibt abzufragen, ob auf exakten Koordinaten einer Form schon etwas wie z.b. ein image draufliegt (so wie ichs mir wörtlich vorstelle: if XYKoordinaten(140,40)=besetzt then...).
MaxiTB
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 679

Win2000, WinXp, Workbench ;-)
D7 Ent, VS2003 Arch.
BeitragVerfasst: Di 02.03.04 18:36 
Die alles entscheidene Frage ist: Was ist ein Image ?

Du kannst an einer exakten Position die Farbe eines Pixels ermitteln. Das ist einfach. Aber ich denke, du willst eher wissen (in bezug auf collision detection) was für ein Objekt an dieser Stelle ist.

Dann wirds schwieriger, aber nicht unmöglich. Ein Stichwort für die Suche habe ich dir ja gegeben.

_________________
Euer Mäxchen
Wer früher stirbt, ist länger tot.
Beliar Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34



BeitragVerfasst: Di 02.03.04 19:48 
Hab mal unter google nach collision detection gesucht... was ich da lese ist nicht wirklich was ich für mein billig-programm brauche. Farbe eines pixels ermitteln - damit versuch ichs erstmal, steht ja auch schon im forum drin wies geht.

Danke für die Stichwörter :idea:
MaxiTB
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 679

Win2000, WinXp, Workbench ;-)
D7 Ent, VS2003 Arch.
BeitragVerfasst: Di 02.03.04 20:32 
Du müßtest ein paar Infos mehr rausrücken ...

Ist das Image ein Control ? Also ein TImage oder ists aufs Canvas gepinselt ?
Hat das Image transparente Eigenschaften und vor allem, was willst du im Endeffekt erreichen ?
Weil es gibt hunderte Methodiken von billig über ganz billig bis Senfwurst-billig ;-) ... daher kann ich dir nicht wirklich Tipps geben, wenn ich zu wenig Background habe. Schließlich will ich dir weder eine unbrauchbare Sache aufschwatzen noch etwas was ein overkill wäre !

_________________
Euer Mäxchen
Wer früher stirbt, ist länger tot.
Beliar Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34



BeitragVerfasst: Di 02.03.04 23:10 
Ich hab mich für die leichteste Lösung entschieden und merke trotzdem keine Performance-Verluste.
Ich habe auf einem Spielfeld 28 Objekte und muss, wenn ich eines bewege, genau wissen, ob ein Objekt und wenn ja, welches Objekt auf den Parametern liegt, wohin ich das Objekt schiebe. Ich hab einfach eine for to do Schleife gemacht, in der ich mit einer if-bedingung alle 28 Image-Objekt-Positionen abfrage. Wenn irgentwas auf den zu überprüfenden Parametern liegt, wird es mit dem zu schiebenden Objekt in dieselbe Richtung verschoben. Wie gesagt das funktioniert problemlos und ich brauch nichtmal getpixel einzusetzen - für effektivere wege bin ich immer offen, muss aber nicht sein da ich ganz froh bin, alleine eine Lösung gefunden zu haben :wink:
MaxiTB
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 679

Win2000, WinXp, Workbench ;-)
D7 Ent, VS2003 Arch.
BeitragVerfasst: Di 02.03.04 23:39 
Genauso könnte man es machen. Es gibt aber sogar noch eine bessere Lösung - aber wie gesagt, bei 28 Objekten zahlt sich die nicht aus:

Das Spielfeld in ein lMap: array [1..x][1..y] of integer einteilen (z.B. als member variable).
Die Imagenummer in dieses Feld eintragen; wenn kein Image an der Position ist, dann -1.
Natürlich das Feld vorinitialisieren.

Mit lMap[x][y] bekommst du dann in ein paar Taktzyklen das aktuelle Image an der Mapposition und somit auch das auf dem Form, wenn du nach jeder Bewegung am Form auch die Position in der Map aktualisierst.

Natürlich funktioniert das nur bei einem blockweisen Spielfeld - aber ich denke, so eines ist es doch, oder ?

_________________
Euer Mäxchen
Wer früher stirbt, ist länger tot.