Abfrage ob Mouse über einem bestimmten Sprite ist

Anfängerfragen zum Programmieren mit PureBasic.
Zweihänder
Beiträge: 49
Registriert: 21.06.2007 14:40

Abfrage ob Mouse über einem bestimmten Sprite ist

Beitrag von Zweihänder »

Hallo,

ich habe auf einem Screen einige Sprites dargestellt, die ich mittels der Maustaste anwählen möchte. Gibt es einen Befehl, mit dem ich abfragen kann, ob sich der Mauspfeil über einem bestimmten Sprite befindet?
Benutzeravatar
PureBasic4.0
Beiträge: 785
Registriert: 29.10.2006 17:26
Wohnort: 127.0.0.1

Beitrag von PureBasic4.0 »

Bild

ich habe das ganze in ein Bild gepackt, weil phpBB das so darstellt:

Code: Alles auswählen

If MouseX() > SpriteX And MouseX() <SpriteX> SpriteY And MouseY() < SpriteY + SpriteHeight(1)
  ;...
EndIf
SpriteWidth() und SpriteHeight() beziehen sich auf ein Sprite, das die ID 1 trägt.
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

Benutz MouseX() und MouseY()
Wo die Sprites sich befinden wirst du ja wohl selber wissen :wink:

Es gab auch mal einfache 2d Kollisionsabfrage-Proceduren hier im Forum.
Leider weiß ich nicht mehr wo und von wem.

@PB4.0 Schalte HTML aus, dann gehts
Zweihänder
Beiträge: 49
Registriert: 21.06.2007 14:40

Beitrag von Zweihänder »

Hört sich auf jeden Fall schon einmal super an. Die Spriteausgabe ist bei mir aber folgendermaßen:

Ich habe ein Array (x,y) erstellt. Dies stellt sozusagen eine Spielfeldkarte dar. Auf dem Bildschirm gebe ich einen Kartenausschnitt aus. Jetzt möchte ich mit der Maus ein Feld dieser Ausgabe anwählen können. Natürlich wird beispielsweise der Sprite "Grasfläche" hier öfter ausgegeben, so dass ich - so denke ich auf jeden Fall - mit der Sprite# nicht weiterkomme. Wenn ich das Feld anklicke möchte ich die x und y-Koordinate des Arrayfeldes als Resultat wiederbekommen.
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

ah eine Tilemap.. leider sind aufgrund eines HDD Crashes meine alten Codes weg, dadrunter ein Tilemap Editor.
Grundprinzip:
Zur Darstellung hast du ja w3ohl 2 Variablen, die die horizontale und Vertikale Verschiebung der Map anzeigen...
Entweder sind diese in Pixeln oder stehen für einen Schritt im Array.

grundsätzlich musst du dann die mausposition mit der Verschiebung der map * tilegröße Vergleichen
Sind einfache rechnung.
Lass die einfach alle wichtigen werte mittels drawtext anzeigen und probier ein bisschen herum ob du nun + oder - oder * oder / an bestimmten Stellen brauchst.
Genau so wie du deine Map anzeigen Lässt kannst du auch rückwirkend die relativen oder absoluten X/Y Positionen sowieso den Array eintrag herausfinden.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

kernpunkt ist einfach, berechne es aus den mauskoordinaten und den darstellungs-koordinaten der sprites.

für check auf ner tilemap, das hat a14xerus schon gut umrissen...

der code mit den koordinaten-checks heißt "collisions", und befindet sich im C-T&T-unterforum...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Zweihänder
Beiträge: 49
Registriert: 21.06.2007 14:40

Beitrag von Zweihänder »

Dann werd ich mich mal ans Berechnen machen... :o
Antworten