Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Maus funzt net

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Bad_King
gesperrt


Anmeldungsdatum: 15.04.2006
Beiträge: 455
Wohnort: nähe Stuttgart

BeitragVerfasst am: 09.08.2006, 15:42    Titel: Maus funzt net Antworten mit Zitat

Hi,

ich hab ein Problem mit der Maus und FB.

Code:

screen 18

declare sub start()

sub start()
    cls
    print "Spiel von King01"
    print "================"
    print
    sleep
end sub

color 0,15
cls

print "Spiel von King01"
print "================"
print
print "Menue"
print "-----"
print "  1 ) Spiel starten"
print "  2 ) Beenden"

do

getmouse x,y,,buttons

if buttons=1 and x=6 and y=3 then exit do:check=1
if buttons=1 and x=6 and y=4 then exit do:check=1
if buttons=1 and x=6 and y=5 then exit do:check=1
if buttons=1 and x=6 and y=7 then exit do:check=1
if buttons=1 and x=6 and y=8 then exit do:check=1
if buttons=1 and x=6 and y=9 then exit do:check=1
if buttons=1 and x=6 and y=10 then exit do:check=1
if buttons=1 and x=6 and y=11 then exit do:check=1
if buttons=1 and x=6 and y=12 then exit do:check=1
if buttons=1 and x=6 and y=13 then exit do:check=1
if buttons=1 and x=6 and y=14 then exit do:check=1
if buttons=1 and x=6 and y=15 then exit do:check=1
if buttons=1 and x=6 and y=16 then exit do:check=1
if buttons=1 and x=6 and y=17 then exit do:check=1
if buttons=1 and x=6 and y=18 then exit do:check=1
if buttons=1 and x=6 and y=19 then exit do:check=1
if buttons=1 and x=6 and y=20 then exit do:check=1

if buttons=1 and x=7 and y=3 then exit do:check=2
if buttons=1 and x=7 and y=4 then exit do:check=2
if buttons=1 and x=7 and y=5 then exit do:check=2
if buttons=1 and x=7 and y=6 then exit do:check=2
if buttons=1 and x=7 and y=8 then exit do:check=2
if buttons=1 and x=7 and y=9 then exit do:check=2
if buttons=1 and x=7 and y=10 then exit do:check=2
if buttons=1 and x=7 and y=11 then exit do:check=2
if buttons=1 and x=7 and y=12 then exit do:check=2
if buttons=1 and x=7 and y=13 then exit do:check=2
if buttons=1 and x=7 and y=14 then exit do:check=2

loop

if check=1 then
    call start
else
    end
end if


Ich klickund klick, und es passiert nix. weinen weinen
Sagt mir, was ich falsch gemacht hab.
_________________
Mein Server: http://gianluca.dyndns.org
(Ist meistens nur Tagsüber an)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
stuner



Anmeldungsdatum: 29.06.2006
Beiträge: 45

BeitragVerfasst am: 09.08.2006, 16:03    Titel: Antworten mit Zitat

Also ich nehme mal an dass du willst, dass wenn man auf 1) Spiel starten drückt das spiel ausgeführt wird. Das würde ich so lösen:

Code:
screen 18

declare sub start()

sub start()
    cls
    print "Spiel von King01"
    print "================"
    print
    sleep
end sub

color 0,15
cls

print "Spiel von King01"
print "================"
print
print "Menue"
print "-----"
print "  1 ) Spiel starten"
print "  2 ) Beenden"

do

getmouse x,y,,buttons

button = buttons and 1


'Wenn auf "  1 ) Spiel starten" geklickt wird, verlässt das Prog. die Schleife
if button=1 and x>17 and x < 150 and y>82 and y<94 then
    exit do
end if
'Wenn auf "  2 ) Beenden" geklickt wird, beendet sich das Prog.
if button=1 and x>16 and x < 102 and y>98 and y<107 then
    end
end if

sleep 1

loop
'Hier kommt dein Spiel rein
call start


Es ist zwar nicht perfekt, aber es funktioniert!

Edit:

Die Getmouse-Werte sind Pixel- und nicht Zeilengenau.

Edit2:

Vorschlag von Michael Frey integriert.


Zuletzt bearbeitet von stuner am 10.08.2006, 09:10, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 09.08.2006, 18:20    Titel: Antworten mit Zitat

Zitat:
Code:
if buttons = 1 or buttons = 3 or buttons = 5 or buttons = 7 then button = 1
'Wenn die Maustaste (auch mit anderen zusammen) gedrückt wird bekommt
'button den Wert 1

Das geht auch schöner:
Code:
button = buttons and 1

_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
max06



Anmeldungsdatum: 05.12.2004
Beiträge: 390
Wohnort: Augsburg

BeitragVerfasst am: 09.08.2006, 19:14    Titel: Antworten mit Zitat

Du kannst dir natürlich auch ne eigene Routine schreiben, mit der du abfragen kannst, ob die Maus über einer bestimmten Cursor-Stelle ist.

Die Angaben: Höhe der Buchstaben: 16px und
Breite der Buchstaben: 8px
sollte dir dabei helfen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 09.08.2006, 19:55    Titel: Antworten mit Zitat

wie diese zb:

Code:

declare function CheckMouse(x,y,xmin,xmax,ymin,ymax)
function CheckMouse(x,y,xmin,xmax,ymin,ymax)

    hit=0
    select case x
    case xmin to xmax
        select case y
        case ymin to ymax
            hit=1
        end select
    end select
    CheckMouse=hit
end function


_________________
Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia

ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 09.08.2006, 20:59    Titel: Antworten mit Zitat

Aber ich find (genau wie MisterD) diese FUNCTION ja vom Stil her viel schöner, da
der obige Code ja fast schon das eine Misshaldlung von SELECT CASE darstellt zwinkern
Code:

function checkmouse(x, y, xmin, xmax, ymin, ymax) as integer
 return not (x < xmin or x > xmax or y < ymin or y > ymax)
end function


jb
_________________
Elektronik und Programmieren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 09.08.2006, 22:42    Titel: Antworten mit Zitat

@king01:
dein fehler war, dass du dachtest, dass in screen-modi die maus auch "buchstabengenau" positioniert wird. sie wird aber pixelgenau positioniert. deswegen liegt die abfrage, ob die maus auf punkt 3,3 oder so ist, ganz oben, nicht auf einem deiner buchstaben!
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 09.08.2006, 22:59    Titel: Antworten mit Zitat

Zitat:
Aber ich find (genau wie MisterD) diese FUNCTION ja vom Stil her viel schöner, da
der obige Code ja fast schon das eine Misshaldlung von SELECT CASE darstellt zwinkern


Da hasst du ja voellig recht. aber immer noch besser als

if buttons=1 and x=6 and y=3 then exit do:check=1
if buttons=1 and x=6 and y=4 then exit do:check=1
if buttons=1 and x=6 and y=5 then exit do:check=1 ...

Was macht return not ? Im normalfall gibt man doch mit return den rueckgabewert der funktion an aber return not?
_________________
Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia

ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 09.08.2006, 23:13    Titel: Antworten mit Zitat

achja, für eine PIXELabfrage wär eine abfrage mit 10000 ifs nicht sehr schön im code.... lachen
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz