Mauskoordinaten abfragen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Takashi Kenshin

Betreff: Mauskoordinaten abfragen

BeitragMi, Okt 17, 2007 0:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab den tipp bekommen um die normale maus benutzen zu können einfach die mauskoordinaten abfragen kann anstatt kollisionsabfragen zu machen um z.B. das sich ein feld färbt wenn ich mit der maus drüber gehe.

Wie geht sowas ?
Das Exponenzielle Volumen subterraner Agrarprodukte, steht in reziproker Relation zur geistigen Kapazität des kultivierenden Agronoms. Oder Kurz gesagt: Der dümmste Bauer hat die dicksten Kartoffeln.

Abrexxes

BeitragMi, Okt 17, 2007 0:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Was?

shure_kyu

Newsposter

BeitragMi, Okt 17, 2007 0:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Arrow ql:MouseX

Arrow ql:MouseY



viel spaß

_______//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\________
◄Blitz 3D/MAX • PC - 2x 3.16Ghz, 4GB-Ram, ATi HD 4890 1024MB• win7 • site$ Rush2Play ° My-Htc.de
¯¯¯¯¯¯¯\__________________________________________________________________________//¯¯¯¯¯¯¯¯
BBP-RSS FEED Halt dich auf dem laufenden!
(C)Shure_kyu
  • Zuletzt bearbeitet von shure_kyu am Mi, Okt 17, 2007 0:40, insgesamt einmal bearbeitet
 

Takashi Kenshin

BeitragMi, Okt 17, 2007 0:26
Antworten mit Zitat
Benutzer-Profile anzeigen
also mein ziel ist ein jetzt weißes Feld in ein Graueß Feld umzuwandeln. Dies soll geschehen so bald ich die Maus über dieses Feld bewege. Das bedeutet ich muss ja abfragen ob sich die mauskoordinaten innerhalb der Feldkoordinaten befinden.

ich habe das mehrere stunden probiert. Es kamen bei sämtlichen variationen fehler und ich hab absolut keine ideen mehr wie man sowas machen könnte.

Code: [AUSKLAPPEN]

AppTitle "Takashi Sudoku"


Graphics 600, 400, 32, 2
ClsColor 130, 0, 0
Cls
SetBuffer BackBuffer()


Global Arial = LoadFont ("Arial", 38, 1, 0, 0)
Global Ms = MouseHit(1)
Global Spielfeld = LoadAnimImage ("Sudoku.bmp", 44, 44, 0, 81)
Global Zahlenfeld = LoadAnimImage ("Zahlenfeld.bmp", 44, 44, 0, 9)


Repeat
Cls


FELDER()
ZAHLENFELD()


Flip


Until KeyHit(1)
WaitKey


Function FELDER()
j = 0
For i = 0 To 352 Step 44
   For i2 = 0 To 352 Step 44
      DrawImage Spielfeld, i2, i, j
      j = j + 1
   Next
Next


g = 0
For h = 267 To 357 Step 44
   For h2 = 467 To 557 Step 44
      DrawImage Zahlenfeld, h2, h, g
      g = g + 1
   Next
Next
End Function


Function ZAHLENFELD()
SetFont Arial
Color 0, 0, 0
a = 1
For c = 270 To 358 Step 44
   For b = 481 To 569 Step 44
         Text b, c, a
      a = a + 1
      Next
Next
End Function
Das Exponenzielle Volumen subterraner Agrarprodukte, steht in reziproker Relation zur geistigen Kapazität des kultivierenden Agronoms. Oder Kurz gesagt: Der dümmste Bauer hat die dicksten Kartoffeln.

Abrexxes

BeitragMi, Okt 17, 2007 0:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Lege am besten ein virtuelles Gitter über das ganze und berechne immer in welchem Feld sich die Maus befindet, wenn sich die Grafik mit deinem Gitter deckt kannst du pixelgenau prüfen wo die Maus gerade ist. Siehe : https://www.blitzforum.de/gall...amp;page=5

Die Buttons passen genau in ein 16*16 Gitter. Wo die Maus gerade ist kannst du links erkennen, nämlich im Feld TileX/TileY was weiter nichts ist als mouseX/16 und mouseY/16. Wink

cu

shure_kyu

Newsposter

BeitragMi, Okt 17, 2007 0:35
Antworten mit Zitat
Benutzer-Profile anzeigen
also mal gaaanz einfach für dich damit du heute auch gar nicht mehr deinen kopf anstrengen musst...

wenn du weißt das dein 1. feld z.B. 10 Pixel breit und 10 pixel hoch ist und es an x = 100 und y = 100 anfängt dann is das doch nicht so schwer oder ?

du musst dann nur von 100 bis 100+ 10 auf x und das gleiche auf y abfragen, wenn die maus in dem kästchen ist dann soll halt rect 100,100,10,10 gemacht werden solange die maus dort ist.


Wink

_______//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\________
◄Blitz 3D/MAX • PC - 2x 3.16Ghz, 4GB-Ram, ATi HD 4890 1024MB• win7 • site$ Rush2Play ° My-Htc.de
¯¯¯¯¯¯¯\__________________________________________________________________________//¯¯¯¯¯¯¯¯
BBP-RSS FEED Halt dich auf dem laufenden!
(C)Shure_kyu
 

Takashi Kenshin

BeitragMi, Okt 17, 2007 0:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Virtuelles Gitter? ich kann mir schon sehr gut vorstellen was du damit meinst aber gibts für sowas ein tutorial???
Das Exponenzielle Volumen subterraner Agrarprodukte, steht in reziproker Relation zur geistigen Kapazität des kultivierenden Agronoms. Oder Kurz gesagt: Der dümmste Bauer hat die dicksten Kartoffeln.

Abrexxes

BeitragMi, Okt 17, 2007 0:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, für ein Gitter und 2 Divisionen gibt es leider kein Tutorial. Du kannst ja am Anfang ein echtes durchsichtiges benutzen.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Okt 17, 2007 0:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein virtuelles Gitter:

Code: [AUSKLAPPEN]
Graphics 640,480,0,2
SetBuffer BackBuffer()

While Not KeyHit(1)
   MX=MouseX()
   MY=MouseY()
   XVGitter=(MX/32)*32
   YVGitter=(MY/32)*32
   Rect XVGitter,YVGitter,32,32,0
   Flip
   Cls
Wend
End


edit1: Ach sorry Abrexxes, wollte dir nicht da zwischen funken...

Abrexxes

BeitragMi, Okt 17, 2007 0:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Kein Problem, aber wenn du es ihm schon vorkaust dann haue auch noch eine Text Anzeige rein. Wink
 

Takashi Kenshin

BeitragMi, Okt 17, 2007 0:58
Antworten mit Zitat
Benutzer-Profile anzeigen
also würde es so gehen?
Code: [AUSKLAPPEN]

If MouseX = 0 + 44
   If MouseY = 0 + 44
      Color 128, 128, 128 Rect 44, 44, 0, 0, 1
   EndIf
EndIf


P.s. kanns nicht ausprobieren. bin nicht an meinem pc.
Das Exponenzielle Volumen subterraner Agrarprodukte, steht in reziproker Relation zur geistigen Kapazität des kultivierenden Agronoms. Oder Kurz gesagt: Der dümmste Bauer hat die dicksten Kartoffeln.

shure_kyu

Newsposter

BeitragMi, Okt 17, 2007 1:02
Antworten mit Zitat
Benutzer-Profile anzeigen
wieso 0 + 44 ???
rechne mal 0 + 44 = 44 wieso also diese addition in der abfrage ?????? Rolling Eyes

_______//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\________
◄Blitz 3D/MAX • PC - 2x 3.16Ghz, 4GB-Ram, ATi HD 4890 1024MB• win7 • site$ Rush2Play ° My-Htc.de
¯¯¯¯¯¯¯\__________________________________________________________________________//¯¯¯¯¯¯¯¯
BBP-RSS FEED Halt dich auf dem laufenden!
(C)Shure_kyu

Abrexxes

BeitragMi, Okt 17, 2007 1:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Takashi Kenshin hat Folgendes geschrieben:

P.s. kanns nicht ausprobieren. bin nicht an meinem pc.


Das ist jetzt nicht dein Ernst. Du kennst nicht mal die Basis von Blitzbasic, stellst eine Frage nach der anderen und sitzt noch nicht mal an einem PC wo du testen kannst was wir dir posten? Und dann sollen sollen wir auch noch deine Codes testen? Ich fasse es nicht!

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Okt 17, 2007 1:08
Antworten mit Zitat
Benutzer-Profile anzeigen
@Takashi Kenshin, ich bin bemüht jedem hier und da auf die Sprünge zu helfen, aber du hast anscheinend nichtmal das sehr einfache Beispiel verstanden. Du musst dein Wert zuerst durch die Gittergröße teilen und dann wieder um den selben Wert multipizieren. Das bewirkt folgendes:

Eine Integerzahl kann keine Kommastellen speichern. Daher werden diese abgeschnitten oder fallen einfach weg. Multiplizierst du nun den 'verstümelten' Wert mit dem selben Teilerwert, so erscheint ein Wert, der nur in Schritten des vielfachen des Ursprungswertes hat. Komisch zu erklären... Du kannst also deine Koordinaten mit dieser Methode damit einrastern.

Was dein Beispiel angeht, so musst du also deine Mauskoordinaten zuvor teilen und dann wieder multiplizieren. Es empfielt sich die Mauskoordinaten (wegen anderer Gründe) in eine Variable am Anfang der Schleife zwischen zu speichern.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Takashi Kenshin

BeitragMi, Okt 17, 2007 1:09
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe nicht gesagt ihr sollt meinen code testen.
und ich mache das grundsätzlich so das wenn ich nicht daheim seuin kann ich mir überlege wie ich etwas machen möchte und dann beim nächsten mal wenn ich an meinen pc komme asprobiere.

ähmm die 0 + 44 dachte ich eigentlich für die strecke 0 bis 44 aber ist jetzt klar 0 + 44 = 44

Zitat:
du musst dann nur von 100 bis 100+ 10 auf x und das gleiche auf y abfragen, wenn die maus in dem kästchen ist dann soll halt rect 100,100,10,10 gemacht werden solange die maus dort ist.


hattest du ja auch so geschrieben Wink
Das Exponenzielle Volumen subterraner Agrarprodukte, steht in reziproker Relation zur geistigen Kapazität des kultivierenden Agronoms. Oder Kurz gesagt: Der dümmste Bauer hat die dicksten Kartoffeln.

DerHase

BeitragMi, Okt 17, 2007 1:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Lad Dir doch für den anderen Rechner die Demo runter, das hab ich auf dem Rechner meiner Mutter auch gemacht Rolling Eyes
Play Satyr!
 

Takashi Kenshin

BeitragMi, Okt 17, 2007 1:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo. Ich hab jetzt ein Gitternetz eingebaut und hab jetzt die frage wie man dem programm sagen kann, das er nach einem MouseHit(1) in dem Quadrat wo ich mit der maus geklickt habe ein input erwarten soll?

Bis her ging der input dann nur im ersten kästchen auch wenn ich wo anders hinklickte.
Das Exponenzielle Volumen subterraner Agrarprodukte, steht in reziproker Relation zur geistigen Kapazität des kultivierenden Agronoms. Oder Kurz gesagt: Der dümmste Bauer hat die dicksten Kartoffeln.

flona

BeitragMi, Okt 17, 2007 14:06
Antworten mit Zitat
Benutzer-Profile anzeigen
ql:Locate
Das sollte dein Problem lösen Wink
www.Dreier-Florian.kilu.de
Intel Core 2 Quad Q9400 | Zotac 9800GT | 4GB RAM | 1TB HDD | Windows 7 Professional 32bit

DerHase

BeitragMi, Okt 17, 2007 14:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Graphics 320,240,0,2
While Not KeyHit(1)
   If RectsOverlap (MouseX(), MouseY(),1 ,1, 100, 100, 50, 25)
      Color 255, 0, 0
   Else
      Color 0, 255, 0
   End If
   Rect 100, 100, 50, 25
   Flip:Cls
Wend
Play Satyr!
 

Takashi Kenshin

BeitragMi, Okt 17, 2007 14:42
Antworten mit Zitat
Benutzer-Profile anzeigen
also schaut euch das an schon ziemlich weit Very Happy :
Code: [AUSKLAPPEN]

AppTitle "Takashi Sudoku"


Graphics 600, 400, 32, 2
ClsColor 150, 0, 0
Cls
SetBuffer BackBuffer()


SetFont LoadFont ("Arial", 38, 1, 0, 0)
Global Spielfeld = LoadAnimImage ("Sudoku.bmp", 44, 44, 0, 81)
Global Zahlenfeld = LoadAnimImage ("Zahlenfeld.bmp", 44, 44, 0, 9)
Dim Zahlen(8,8)


Repeat
Cls


FELDER()
GITTERNETZ()
ZAHLENFELD()
ZAHLENEINGEBEN()
ZAHLENUPDATE()


Flip
Until KeyHit(1)


Function FELDER()
j = 0
For i = 0 To 352 Step 44
   For i2 = 0 To 352 Step 44
      DrawImage Spielfeld, i2, i, j
      j = j + 1
   Next
Next


g = 0
For h = 264 To 354 Step 44
   For h2 = 440 To 528 Step 44
      DrawImage Zahlenfeld, h2, h, g
      g = g + 1
   Next
Next
End Function


Function ZAHLENFELD()
Color 0, 0, 0
a = 1
For c = 266 To 356 Step 44
   For b = 453 To 541 Step 44
            Text b, c, a
      a = a + 1
      Next
Next
End Function


Function GITTERNETZ()
MX = MouseX()
MY = MouseY()
XVGitter = (MX/44) * 44
YVGitter = (MY/44) * 44
Color 150, 0, 0 Rect XVGitter, YVGitter, 44, 44, 1
End Function


Function ZAHLENEINGEBEN()
If MouseHit(1) Then
a = MouseX() / 44
b = MouseY() / 44
If a < 9 And b < 9 Then Zahlen (a, b) = Int (Chr (WaitKey()))
EndIf
End Function


Function ZAHLENUPDATE()
For i = 0 To 8
   For i2 = 0 To 8
      If Zahlen(i, i2) <> 0 Then Text i * 44 + 12, i2 * 44 + 5, Zahlen(i, i2)
      FlushMouse : FlushKeys        
   Next
Next
End Function


nur ein problem ich kann die zahlen nicht auch mit dem numpad eingeben warum?
eigentlich ist doch waitkey für ASCII codes oder?
Das Exponenzielle Volumen subterraner Agrarprodukte, steht in reziproker Relation zur geistigen Kapazität des kultivierenden Agronoms. Oder Kurz gesagt: Der dümmste Bauer hat die dicksten Kartoffeln.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group