Tasten drücken? If Key ()?

Previous topic - Next topic

Felix

Ja genau das.
Kann jemand helfen?

kanonet

Das must du dir selbst bauen, ein ganz einfaches und unoptimiertes beispiel:

Code (glbasic) Select
FUNCTION Button: x%, y%, w%, h%
LOCAL mx%, my%, b1%, b2%
MOUSESTATE mx, my, b1, b2
DRAWRECT x, y, w, h, RGB(255,0,0)
RETURN b1 AND BOXCOLL(x, y, w, h, mx, my, 1, 1)
ENDFUNCTION


Zu benutzen so:
Code (glbasic) Select
SYSTEMPOINTER TRUE
IF Button(50,100,200,50) THEN PRINT "pressed", 50,150
Lenovo Thinkpad T430u: Intel i5-3317U, 8GB DDR3, NVidia GeForce 620M, Micron RealSSD C400 @Win7 x64

Felix

#17
Mmh kann man nicht auch das in den Key packen?

kanonet

Sicher. Aber meinst du nicht das es sinnvoller wäre, wenn du versuchen würdest zumindest solch einfache Dinge selbst hinzubekommen? Am Ende willst du ja mal selbst ein Spiel schreiben und nicht nur den Code von uns kopieren. Übrigens kann es auch sehr hilfreich sein, wenn du mal in die Bespiele siehst, unter GLBasic/Samples findest du jede Menge. Kannst dann damit rum experimentieren, hier und da etwas verändern und sehen was raus kommt. Ist sicher lehrreich. :good:

Um deine letzte Frage doch noch zu beantworten (falls ich sie richtig verstanden habe), dann kannst du in deinem Code da wo bisher KEY() stand jetzt einfach BUTTON(x,y,b,h) einfügen/ersetzen (x,y,b,h müssen natürlich durch die jeweiligen Werte ersetzt werden).
Lenovo Thinkpad T430u: Intel i5-3317U, 8GB DDR3, NVidia GeForce 620M, Micron RealSSD C400 @Win7 x64

Felix

Kann ich es nicht in eine function packen.  Und irgendwie einfügen bitte kann mir jemand helfen.

Felix

Du hast recht aber ich möchte mich gerne zuerst ihr an euch wenden nimms mir nicht übel bin halt nnur sehr neu und vorsichtig auf dem Gebiet auserdem will ich die Codes sinnlos Rüber kopieren sondern möchte sie selbständig einbauen.

Kannst du das nochmal genau erklären mit dem Key durch Butten ersetzen?

kanonet

In der Programmierung gibt es immer tausende Wege um das um das gleiche zu erreichen, einen möglichst gut passenden zu finden ist immer Teil des Vergnügens. Das von dir gewünschte würde ich so lösen:
Code (glbasic) Select
SYSTEMPOINTER TRUE

GLOBAL pressed%

WHILE TRUE
IF Button(50,50,100,50) OR KEY(57)
IF pressed = 0
Ausgabe()
pressed = 1
ENDIF
ELSE
pressed = 0
ENDIF

SHOWSCREEN
WEND

FUNCTION Ausgabe:
PRINT "Hello", 10, 10
ENDFUNCTION

FUNCTION Button: x%, y%, w%, h%
LOCAL mx%, my%, b1%, b2%
MOUSESTATE mx, my, b1, b2
DRAWRECT x, y, w, h, RGB(255,0,0)
RETURN b1 AND BOXCOLL(x, y, w, h, mx, my, 1, 1)
ENDFUNCTION


PS ich glaube, was dir hier gefehlt hat um es selbst zu lösen waren logic operatoren, schauen dir mal AND, OR etc. an.


EDIT zu deinem neuen Post: mit den ersetzen, dass meinte ich wörtlich, an der stelle wo du bisher KEY stehen hast solltest du das einfach entfernen und stattdessen meine Funktion Button einfügen. Dann würde allerdings nur noch der Button funktionieren, nicht mehr der KEY. Willst du dass man beide drücken kann (jeweils eines reicht), dann musst du schreiben KEY() OR Button(), willst du, dass das Ereignis nur dann eintritt, wenn beide gleichzeitg gedrückt werden, dann musst du schreiben KEY() AND Button(). Hoffe das gibt dir eine Idee wo du starten kannst mit lernen. Und fragen ist immer eine gute Idee, kannst du ruhig weiterhin tun. Aber selbst ausprobieren ist genauso gut (und meist schneller), keine sorge, du kannst damit nichts kaputt machen. Bei fehlern passiert nur eines der 3:
-Programm kompiliert nicht (da hast du Glück, das ist einfach zu finden und zu beheben)
-Programm kompiliert und startet, aber crasht irgendwann
-Programm kompiliert und läuft ohne crash, aber macht nicht das was du wolltest (Fehelr ist am schwersten zu finden und zu beheben)
Egal welches davon passiert, keines ist schlimm oder irgendwie gefährlich. Im Gegenteil, das passiert jedem von uns häufig, egal wie viel Erfahrung wir schon haben. Also einfach mutig sein und probieren und wenn du es dann nicht selbst hin bekommst kannst du ja immer noch fragen. Viel Erfolg! :booze:
Lenovo Thinkpad T430u: Intel i5-3317U, 8GB DDR3, NVidia GeForce 620M, Micron RealSSD C400 @Win7 x64

Felix

Ich danke euch ich hab! :nw: