feldmausabfrage per xy und nicht per collidedimage
Übersicht

EisrabeBetreff: feldmausabfrage per xy und nicht per collidedimage |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja ich weiss, besser wärs mit collidedimages aber ich habe noch nicht alle felder der spielfeldmap sepretiert und daraus images gemacht, also habe ich immo nur die ganze map und frage ab, ob mit der maus auf ein rect eines feldes der map geklickt wurde. das soll erstmal reichen, bis der grundstock des spiels funktioniert. allerdings macht er einfach nicht was ich will. hier mal der code für die maus-coordinaten-checks
Code: [AUSKLAPPEN] Function klick()
While lmt = 0 ; schleife solange bis linke maustaste gedrückt wird LMT = MouseHit(1) If lmt= 1 Then ; falls links gedrückt... MausX = MouseX() MausY = MouseY() If zw(mausx,800,860) And zw(mausy,50,80) Then End ; exitbutton For f=1 To 36 ; jetzt abchecken der coordinaten aller 36 felder If zw(mausx,textfeld_x(f),textfeld_y(f)) And zw(mausy,textfeld_x(f)+39,textfeld_y(f)+19) Then ; prüft of mauscoords zwischen den gespeicherten coords der rects der spielfelder rueckgabe = f ; die nr des felds EndIf Next Color 255,255,255 : Rect 785,490,70,30 ; kontrollausgabe Color 0,0,0:Text 785,490, "textfeld= "+f ; erst feld löschen dann die nummer des feldes hinschreiben, dass übergeben werden soll If rueckgabe = 0 Then lmt = 0 ; fall kein rect angeklickt wurde, also irgendwo auf der map EndIf Wend Return rueckgabe ; soll eigentlich die angeklickte feldnummer rückgen, tuts aber nicht End Function Function zw(a,b,c) ; prüft ob a zwischen b und c If a >= b And a <=c Then Return True Else Return False EndIf End Function der wert rückgabe ist sogar mal 37. das geht ja eigentlich garnicht ps: ich hab echte probleme ne einfach vernünftige maussteuerung hinzubekommen. da gibts doch bestimmt ein grundmodell, dass man an seine bedürfnisse anpassen kann, oder? |
||
ich habe einCode: [AUSKLAPPEN] GOTO und ich bin bereit es einzusetzen!
|
- Zuletzt bearbeitet von Eisrabe am So, Feb 01, 2004 18:00, insgesamt einmal bearbeitet
![]() |
Blatolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Color 0,0,0:Text 785,490, "textfeld= "+f
ich denke du musst statt f rueckgabe anzeigen lassen. da du ja außerhalb der schleife den text ausgibst. |
||
Eisrabe |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ahh du meinst die anzeige. ja, da hast du recht.
aber warum hat rueckgabe nicht den reichtgen wert? immerhin soll ja rueckgabe den wert von f speichern, wenn es tatsächlich x und y übereinstimmungen gibt ich habe es gecheckt, ob irgendwas mit den coordinaten durcheinandergekommen ist, aber die variablen textfeld_x(f) und textfeld_y(f) haben alle die richtigen werte ACK, ich dummi Code: [AUSKLAPPEN] If zw(mausx,textfeld_x(f),textfeld_y(f)) And zw(mausy,textfeld_x(f)+39,textfeld_y(f)+19) Then
ich sollte natürlich nur x und nur y prüfen und nicht mischen : correct: Code: [AUSKLAPPEN] If zw(mausx,textfeld_x(f),textfeld_x(f)+39 And zw(mausy,textfeld_y(f)),textfeld_y(f)+19) Then
|
||
ich habe einCode: [AUSKLAPPEN] GOTO und ich bin bereit es einzusetzen!
|
![]() |
Blatolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] If zw(mausx,textfeld_x(f),textfeld_y(f)) And zw(mausy,textfeld_x(f)+39,textfeld_y(f)+19)
Das versteh ich nicht ganz. Wie soll ein Punkt zwischen x und y Koordinate liegen? versuch mal das Code: [AUSKLAPPEN] If zw(mausx,textfeld_x(f),textfeld_x+39(f)) And zw(mausy,textfeld_y(f)+39,textfeld_y(f)+19)
edit: Haste schon selbst rausgekriegt Funktioniert es denn jetzt? |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: ich hab echte probleme ne einfach vernünftige maussteuerung hinzubekommen
da würde ich vorschlagen das so zu machen, wenn du das als vernünftige maussteuerung verstehst Nutze den Befehl von Blitz für diese Art der Abfragen. Der basiert nicht auf auf images, sondern prüft die Kollision zwischen 2 Rechtecken. Anstatt der Maus setzt du einfach ein Rechteck 1x1 Pixel groß RECTSOVERLAP (X1, Y1, Breite1, Höhe1, X2, Y2, Breite2, Höhe2) Buttonabfrage:Code: [AUSKLAPPEN] If RectsOverlap (800, 50, 60, 30, MausX , MausY, 1, 1) Then End ; exitbutton
Tile - Abfrage:Code: [AUSKLAPPEN] If RectsOverlap (textfeld_x(f),textfeld_y(f), 39, 19, MausX , MausY, 1, 1)Then ; prüft of mauscoords zwischen den gespeicherten coords der rects der spielfelder
würde die Code: [AUSKLAPPEN] Function zw(a,b,c) ; prüft ob a zwischen b und c
überflüssig machen |
||
[BB2D | BB3D | BB+]
|
Eisrabe |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja, es funktioniert jetzt
du hast recht Rallimen, aber die rectsoverlap-function braucht mehr parameter als meine methode. und im grunde ist das eh das selbe. was ich mit verkorkster maussteuerung meine, ist, dass BB nicht "versteht" dass ein OBJEKT (rect oder image) "angeklickt" wurde und es immer "zu fuss" abgefragt werden muss. ausserdem habe ich auch strukturelle probleme, dass nicht in jeder situation alles angewählt werden können darf. ich bin immer über deine posts glücklich Rallimen. immer weiter. und schau dir mal mein projekt im projekte-teil des forums an. ich traue mich nicht ganz den code zu posten, denn der ist bestimmt low-low-low-quali ![]() |
||
ich habe einCode: [AUSKLAPPEN] GOTO und ich bin bereit es einzusetzen!
|
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group