Verständnisprobleme mit allgemeiner Maussteuerung
Übersicht

NitroXPBetreff: Verständnisprobleme mit allgemeiner Maussteuerung |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
HI FOLKS!
ist mein erster post, aber auch ein total verzweifelter! bin jetzt nicht der totale blutige anfänger, aber auch nicht wirklich so weit das ich mich selber aus dieser sackgasse raushohlen kann. seit tagen durchsuche ich bereits das forum und habe mir alle 316 ergebnisse der suche zum thema "maus" durchgelesen. mein problem ist volgendes: bin dabei an einem recht simplem kartenspiel herum zu bassteln... ich kriege nur einfach keine maussteuerung hin, die maus ist zwar da (windows maus) kreig aber überhaubt nichts auf die reihe! nicht mal ein einfaches menü mit einem knopp oder so. dabei soll beim klicken auf ein kartenstapel nur die oberste karte gezogen werden, also aufgedeckt werden. ich habe sogar versucht die windows maus per HidePointer zu verstecken, und eine eigene zu laden, aber das bringt micht total zum verzweifeln. dabei habe ich das problem das mausbild an die maus zu binden, hab es auch mit MouseX() MouseY() versucht aber anscheinen bin ich grad zu fest gefahren... online hillfen und alle beispiele bringen mich nicht weiter, hab zwar gedacht das die ansätze die ich gefunden habe, mich irgend wie weiter bringen, aber das ist nicht der fall, ist nur noch verwirrender. würde mich tierisch freuen wenn mich einer überhaubt versteht, und erst recht wens ne lösung gibt (gib et, weiß ich, es nur ich sehe es nicht!) ThX |
||
![]() |
Mr.HydeNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo.
Grundsätzlich hast du dir schon die richtigen Gedanken gemacht. Um mit der Maus zu arbeiten brauchst du die Koordinaten, die du ja mit MouseX ![]() ![]() BlitzBasic: [AUSKLAPPEN]
Nun kannst du im Hauptprogramm jederzeit auf die Mauskoordinaten zugreifen. Wenn du nun eine eigene Mausgrafik möchtest, lädst du dein Bild einmal BlitzBasic: [AUSKLAPPEN]
und lässt es in der Hauptschleife mit BlitzBasic: [AUSKLAPPEN]
anzeigen. Für deine Kartenauswahl brauchst du noch Kollision. Da du es ja anscheinend mit rechteckigen Objekten zu tun hast, bietet sich die schnellste Kollisionsabfrage RectsOverlap ![]() ![]() Ich hoffe das hilft dir ein wenig. MfG, Hyde |
||
BBP News RSS | Chaos Interactive | Watanien 2 Screens, Infos und Download | Watanien 2 Worklog | PuzzleMasters
http://abgeordnetenwatch.de - http://www.regierungs-beratung.de - Der Regierung auf die Finger schauen |
- Zuletzt bearbeitet von Mr.Hyde am Do, Jun 25, 2009 12:54, insgesamt einmal bearbeitet
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hmm... Also verstehen tu ich dich leider nicht =/
Aber ich hab eine Frage an dich (damit wir wissen, womit wir's genau zu tun haben): Verstehst du diesen Code hier und weisst du auch, was wieso, warum und weshalb geschieht? Code: [AUSKLAPPEN] Graphics 400,300,0,2
SetBuffer BackBuffer() Global TIMER = CreateTimer(60) ; Mausposition und -tastenabfragen speichern wir global... Global mx, my, mh While Not KeyDown(1) ; ... und fragen diese anfangs Hauptschleife ab mx = MouseX() my = MouseY() mh = MouseHit(1) ; Schaltflächen zeichnen If Button( 100, 90, "Ich ändere die Farbe" ) Color Rand(128,255), Rand(255), Rand(255) EndIf If Button( 100, 190, "Ich beende das Programm" ) End EndIf Flip 0 WaitTimer( TIMER ) Wend Function Button( pX, pY, pTxt$ ) Rect pX, pY, 200, 20, False Text pX +100, pY +10, pTxt$, True, True ; Mausposition abfragen (innerhalb der Schaltfläche?) If mx => pX And mx < pX+200 And my => pY And my < pY+20 ; Und Maustaste gedrückt? If mh ; Dann gibt die Funktion True zurück Return True EndIf EndIf End Function Oder happerts da schon? Wenn nicht, beschreibe doch dein Problem bitte genauer. mfG |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
NitroXP |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wow ihr seid Götter, find das super das jemand sich dem Wirwar angenommen hat...
Local MousePosition_X Local MousePosition_Y hat schon mal für mich ein Wunder bewirkt. Maus ist da, hinterlässt aber eine Spur, stört mich jetzt aber erst mal nicht, bin überhaubt froh so weit zu sein.. Nun verstehe ich nicht wirklich wie ich das Beispiel von RectsOverlap aus der Hilfe umsetzen soll in mein Fall einarbeiten kann... Code: [AUSKLAPPEN] ;-----------MainMenu----------------------------- Graphics 1024,768, 16, 2 Include "grafikbox.bb" ;<-Sollte alles richtig sein... SetBuffer BackBuffer() Local MousePosition_X Local MousePosition_Y Local Mouse$ = LoadImage("gfx/maus.png") MaskImage Mouse$, 255,0,255 HidePointer DrawImage Menu, 0 , 0 DrawImage BtnNSpiel, 370 , 370 Repeat ;Beginn der Hauptschleife MousePosition_X = MouseX() MousePosition_Y = MouseY() DrawImage (Mouse, MousePosition_X, MousePosition_Y) If RectsOverlap (MousePosition_X, MousePosition_Y, BtnNSpiel 370, BtnNSpiel 370) ;<-Hier Problem Then ;[Alles Löschen & Neues Fenster Laden, etc.] Flip Until Programmende End in der hilfe wurden ja die rechtecke ja generiert und mit fersten werten oder zufalswerten versehen Code: [AUSKLAPPEN] rect1X = Rnd(50, 610) rect1Y = Rnd(50, 430) rect1W = 50 rect1H = 50 rect2X = Rnd(50, 610) rect2Y = Rnd(50, 430) rect2W = 50 rect2H = 50 Die größe der Knöpfschen Grafik ist 50x300 pixels groß das würde "rect2W und rect2H" in diesem Beispiel sein dann die Position auf dem Bildschrim 370,370 aber wie ich der Maus noch die werte 1 zuweise, übersteigt meine vorstellung momentan @Holzchopf Verstehen tu ich das ganze, ja, aber ist mir zu cryptisch würd niemals mx,my,mh nehmen... bzw überhaubt variable so kurz halten. Das es Maus und Button aktionen und If Then Else schleifen sind (hof ist richtig) bin ich auch hintergestiegen, aber was genau passiert könnte ich nicht sagen...[/code] |
||
![]() |
Progger93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
In die Hauptschleife muss noch ein
Code: [AUSKLAPPEN] Cls rein dann gibts keine Mausspur. Und achte mal auf ein besseres einrücken, dann wird der Code auch übersichtlicher. EDIT: http://de.wikibooks.org/wiki/B...y-Tutorial Schau dir mal dieses Tutorial an. Hier wird dir BlitzBasic von Anfang an beschrieben und alle wichtigen sachen werden erklärt. Dies sollte die meisten Fragen beseitigen. (Aber arbeite es bitte durch und les es nicht nur oder kopiere Code-Teile...das hilft nämlich nichts ![]() |
||
- Zuletzt bearbeitet von Progger93 am Do, Jun 25, 2009 14:37, insgesamt einmal bearbeitet
![]() |
Mr.HydeNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
Erstmal sind If![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Dein Problem ist, dass du RectsOverlap ![]() BlitzBasic: [AUSKLAPPEN]
|
||
BBP News RSS | Chaos Interactive | Watanien 2 Screens, Infos und Download | Watanien 2 Worklog | PuzzleMasters
http://abgeordnetenwatch.de - http://www.regierungs-beratung.de - Der Regierung auf die Finger schauen |
NitroXP |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Joah, das es Schleifen sind wusste ich, hab eines gedacht etwas anderes geschreiben...
If und Else sind Entscheidungen, shame on me... If I have brain Than I'm happy... hab Cls beim abtippen vergessen, PEINLIIIICH Danke ![]() - - - X Position Rechteck B währ ja 370, <--Ist ja der Button auf den ich klicke...? Y Position Rechteck B ist dan auch 370, Bereite und Höhe geht ja von der grafik größe aus (denke ich) ABER X Position Rechteck A kann ich nur auf "MousePosition_X = MouseX()" zurückführen oder? Y Position Rechteck A ist das gleiche Problem, Breite Rechteck A, Höhe Rechteck A, Habe ich aus der png alo 24x24 ist aber ja über MaskImage aus X? verkleinert worden... ich glaub ich bin gerade zu Verbissen und sehe nicht was ich falsch mache... Danke für Eure Geduld |
||
TerrorMachine |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
MaskImage verändet die Größe des Bildes nicht. Damit änderst du die transparente Farbe des Bildes.
Die Höhe und Breite eines Bildes kannst du mit ImagesWidth(*bild*) und ImagesHeight(*bild*) auslesen. Ich würde das so lösen: cursor = LoadImage("cursor.jpg") karte = LoadImage("Karte.jpg") Repeat Cls If KeyHit(1) then End If ImagesOverlap(200,200,ImagesWidth(karte),ImagesWidth(karte),MouseX(),MouseY(),1,1) then ;-- Hier neue Karte anzeigen -- EndIf DrawImage(karte,200,200) DrawImage(cursor,MouseX(),MouseY()) Forever |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group