Button mit Maus anklicken
Übersicht

wellensittichBetreff: Button mit Maus anklicken |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also dann meld ich mich auch mal wieder xD
ich hab mal versucht einen kleinen Taschenrechner zu programieren, nun wollte ich aber nicht, dass man die rechnung nur eingibt, sonder dass das programm zahlen von 1 bis 9 (inklusive 0) und +,-,/,* auf dem bildschirm darstellt. nun mein problem: wie stell ich das an, dass man diese ziffern mit der maus auswählen kann?? ![]() Ich hoffe ihr könnt mir helfen! MFG wellensittich |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Am einfachsten finde ich es mit einer verschachtelten For-Schleife:
Code: [AUSKLAPPEN] Graphics 400,400,0,2
SetBuffer BackBuffer() Const XOFFSET=100 Const YOFFSET=100 Const SIZE=40 Local Timer=CreateTimer(75) Local MX,MY,MT Local X,Y Dim Map$(3,3) Restore Taschenrechner For Y=0 To 3 For X=0 To 3 Read Map(X,Y) Next Next While Not KeyHit(1) MX=MouseX() MY=MouseY() MT=MouseHit() For Y=0 To 3 For X=0 To 3 Text XOFFSET+X*SIZE,YOFFSET+Y*SIZE,Map(X,Y) Rect XOFFSET+X*SIZE,YOFFSET+Y*SIZE,SIZE,SIZE,0 If RectsOverlap(MX,MY,1,1,XOFFSET+X*SIZE,YOFFSET+Y*SIZE,SIZE,SIZE) Then Text 20,20,"Feld: "+X+"."+Y End If Next Next WaitTimer(Timer) Flip 0 Cls Wend End .Taschenrechner Data "1","2","3","+" Data "4","5","6","-" Data "7","8","9","*" Data ".","0"," ","/" |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Nova |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du musst einfach nur mit MouseX() und MouseY() den Standort der Maus herrausfinden. Sollten die in einem bestimmten Bereich sein und die Maus gedrückt werden [MouseHit(1)] dann wird die Zahl gespeichert. | ||
AMD Athlon II 4x3,1GHz, 8GB Ram DDR3, ATI Radeon HD 6870, Win 7 64bit |
![]() |
xaerox |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] If MouseX ()>=buttonx And MouseX ()<=(buttonx+breite) Then If MouseY ()>=buttony And MouseY ()<=(buttony+höhe) Then If MouseHit (1) Then Print "Du hast soeben einen Button geklickt!" EndIf EndIf EndIf das hat bei mir auch einer gepostet und ich verwende immer diesen code kein plan von wem nochmal aber danke an ihm... |
||
Biker sind wahre Helden.
Auch Musiker. |
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Xaerox, wobei man beachten muss, dass man 1. MouseX bzw MouseY in Variablen speichert, 2. Mousehit ebenfalls, 3. wenn möglich Rectsoverlap![]() MfG ![]() |
||
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
The_Nici hat Folgendes geschrieben: Xaerox, wobei man beachten muss, dass man 1. MouseX bzw MouseY in Variablen speichert, 2. Mousehit ebenfalls, 3. wenn möglich Rectsoverlap
![]() Deine Kritikpunkte 1 + 2 sind auf Xaerox's Methode bezogen quark. Bei anderen Methoden mögen sie durchaus Sinn machen, aber dieses Beispiel oben ist genau richtig so wie es ist. Und Dein Kritikpunkt Nr 3 ist wohl eher Geschmacksache ... obwohl ich da auch eher von RectsOverlap abraten würde, da diese Funktion zwei weitere (unnötige) Variablen mit einbezieht... ![]() Ganz exakt müsste der Code oben eigentlich übrigens so aussehen: Code: [AUSKLAPPEN] If MouseX() >= buttonx And MouseX() < (buttonx+breite) Then If MouseY() >= buttony And MouseY() < (buttony+höhe) Then If MouseHit(1) [...blah..] EndIf EndIf EndIf |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Naja, aber beim Fragesteller ''wellensittich'' ist klar, das dieser einen Taschenrechner programmieren möchte, und da macht es schon Sinn die Variablen von MouseX() und MouseY() zwischen zu speichern, da mehrere - mindestens 10 Buttons bereist für die Zahlen weg gehen. Aber ehrlich, ich finde schon folgende Codezeile: If MouseX() >= buttonx And MouseX() < (buttonx+breite) Then besser, wenn man die Mauskoordinaten zwischen speichert, als zweimal den selben Funktionsaufruf zu machen.
Das mit RectsOverlap ist in der Tat reine Geschmackssache. Ich sage da nur; Marc wird schon wissen wie er es am besten und optimiert macht. In diesem Fall ein Funktionsaufruf vs. zwei doppelte mit And verknüpfte If-Abfragen. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group