Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Bad_King gesperrt

Anmeldungsdatum: 15.04.2006 Beiträge: 455 Wohnort: nähe Stuttgart
|
Verfasst am: 09.08.2006, 15:42 Titel: Maus funzt net |
|
|
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.
Sagt mir, was ich falsch gemacht hab. _________________ Mein Server: http://gianluca.dyndns.org
(Ist meistens nur Tagsüber an) |
|
Nach oben |
|
 |
stuner
Anmeldungsdatum: 29.06.2006 Beiträge: 45
|
Verfasst am: 09.08.2006, 16:03 Titel: |
|
|
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 |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 09.08.2006, 18:20 Titel: |
|
|
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 |
|
 |
max06

Anmeldungsdatum: 05.12.2004 Beiträge: 390 Wohnort: Augsburg
|
Verfasst am: 09.08.2006, 19:14 Titel: |
|
|
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 |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 09.08.2006, 19:55 Titel: |
|
|
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 |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 09.08.2006, 20:59 Titel: |
|
|
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
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 |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 09.08.2006, 22:42 Titel: |
|
|
@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 |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 09.08.2006, 22:59 Titel: |
|
|
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 |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 09.08.2006, 23:13 Titel: |
|
|
achja, für eine PIXELabfrage wär eine abfrage mit 10000 ifs nicht sehr schön im code....  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
|