BASIC

Author Topic: Tasten drücken? If Key ()?  (Read 5328 times)

Offline Felix

  • Mc. Print
  • *
  • Posts: 13
    • View Profile
Tasten drücken? If Key ()?
« on: 2015-Jul-22 »
 :xSorry für den Namen aber mir ist nichts besseres eingefallen. Sorry!
Ich hoffe bin ihr richtig für Fragen zu GLbasic.
Ich frag mal so,

If Key (30) // Zahl dient nur als Beispiel.
Beispielaktion .... Endbeispielaktion

Beim probieren hab ich gemerkt das wenn ich die Taste drücke wird die Aktion ausgeführt aber wen ich gedrückt halte wird die Aktion wieder und wieder ausgeführt.  Ich möchte aber das wenn die Aktion ausgeführt wurde muss man zum wiederholten die Taste neu drücken.
Was jemand was ich meine?
Danke im voraus!
Sorry für die Uhrzeit!

Offline Ian Price

  • Administrator
  • Prof. Inline
  • *******
  • Posts: 4141
  • On the shoulders of giants.
    • View Profile
    • My Apps
Re: Tasten drücken? If Key ()?
« Reply #1 on: 2015-Jul-22 »
You can use a toggle/flag to say that the key is being pressed. eg

Code: GLBasic [Select]
GLOBAL pressed%

WHILE TRUE

 // Press SPACE
 IF KEY(57) and pressed=0
  PRINT "HELLO",10,10
  pressed=1
 ENDIF

 IF NOT KEY(57) THEN pressed=0

 SHOWSCREEN

WEND

 

The variable "pressed" is acting like a switch - it is TRUE when SPACE is pressed, but FALSE when it is not. The "HELLO" message only appears when the switch is false.
 
I came. I saw. I played.

Offline Felix

  • Mc. Print
  • *
  • Posts: 13
    • View Profile
Re: Tasten drücken? If Key ()?
« Reply #2 on: 2015-Jul-22 »
Thx. Gibt es noch andere Möglichkeiten?

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5006
  • O Rly?
    • View Profile
Re: Tasten drücken? If Key ()?
« Reply #3 on: 2015-Jul-22 »
Du kannst dir eine Funktion dazu schreiben oder das ganze in Types packen.
Allerdings gabs glaub in den Samples von GLBasic ein KeyHit im Common-Ordner.
I <3 DGArray's :D

PC:
AMD RYzen 7 1700 @3.9Ghz, 16GB HyperX Fury 2666Mhz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline Felix

  • Mc. Print
  • *
  • Posts: 13
    • View Profile
Re: Tasten drücken? If Key ()?
« Reply #4 on: 2015-Jul-22 »
Könnte mir jemand zeigen.wie ich es in eine function umwandele?
Bitte ;)

Offline Felix

  • Mc. Print
  • *
  • Posts: 13
    • View Profile
Re: Tasten drücken? If Key ()?
« Reply #5 on: 2015-Jul-23 »
So?:

FUNCTION Pressjump:
GLOBAL pressed%
WHILE TRUE
 pressed=0
Else
 pressed=1
....

Das gibt nur fehler egal kann mir jemand helfen einen KeyHit Ordner oder datei gibt es nicht?

Offline spacefractal

  • Community Developer
  • Prof. Inline
  • ******
  • Posts: 3587
    • View Profile
    • Space Fractal
Re: Tasten drücken? If Key ()?
« Reply #6 on: 2015-Jul-23 »
dont use GLOBAL inside functions. Its might fails on some platforms for wathever reasons (on iOS im remember).

Personly im do something like this:

Code: GLBasic [Select]
GLOBAL JUMPBUTTON=0

FUNCTION PressJump:
        IF KEY(57)=1
                JUMPBUTTON=JUMPBUTTON+1
        ELSE
                JUMPBUTTON=0
        ENDIF
ENDFUNCTION
 

JUMPBUTTON is 1 when first pressed, when holding down, its somewhere over 1. But both methods is correct (except moving GLOBAL outside FUNCTION).
Greedy Mouse - Karma Miwa - Spot Race - CatchOut - Android Extras - is on a vacation trip, home before end of few days in jan.

Offline erico

  • Community Developer
  • Prof. Inline
  • ******
  • Posts: 4168
    • View Profile
    • Portfolio
Re: Tasten drücken? If Key ()?
« Reply #7 on: 2015-Jul-24 »
I use spacefractal´s method in game too. If it is a debugging key, the I simply throw a sleep to holds things a bit :good:

Offline Felix

  • Mc. Print
  • *
  • Posts: 13
    • View Profile
Re: Tasten drücken? If Key ()?
« Reply #8 on: 2015-Jul-27 »
Hi,
Vielen Dank an alle für die Antworten
Aber ich habe den Key aber verbaut.
So:
IF Key(57)
......
ElseIf ....

Also hab ich doch den Key eingebaut dan mus ich doch eingebaut also muss ich wen ich die Funktion benutze
IF Key(57) and PressJump(Name der Function)
eigeben, Oder doch nicht?
Kann mir jemand helfen? :nw:

Offline Worebu

  • Mr. Polyvector
  • ***
  • Posts: 169
  • Moin, Moin
    • View Profile
Re: Tasten drücken? If Key ()?
« Reply #9 on: 2015-Jul-27 »
Hi, statt

PRINT "Hello", 10,10

schreibst du dann einfach den Funktionsaufruf:

Code: GLBasic [Select]
GLOBAL pressed%

SETFONT 0, 3    // Nur damit was lesen kann. 3x vergrössert.

WHILE TRUE

        IF KEY(57) AND pressed = 0
                Ausgabe()
                pressed = 1
        ENDIF
       
        IF NOT KEY(57) THEN pressed = 0
       
SHOWSCREEN
WEND

FUNCTION Ausgabe:
        PRINT "Hello", 10,10
ENDFUNCTION
 
« Last Edit: 2015-Jul-27 by Worebu »
PC: Intel I7 3770K, 32GB DDR3, GTX1060 6GB,  480GB SSD, 1x2TB, 1x1TB, 2x ext. 1TB USB3.0, 1x ext. 2TB USB3.0, W10 x64 Pro, WaKü

Offline Felix

  • Mc. Print
  • *
  • Posts: 13
    • View Profile
Re: Tasten drücken? If Key ()?
« Reply #10 on: 2015-Jul-30 »
Danke Danke vielen Dank. :good: :nw: :D =D
Ich danke euch!
« Last Edit: 2015-Jul-30 by Felix »

Offline Felix

  • Mc. Print
  • *
  • Posts: 13
    • View Profile
Re: Tasten drücken? If Key ()?
« Reply #11 on: 2015-Aug-11 »
Hallo, ich bins wieder.
Kurze Frage dazu  wenn ich
alles so mache was wäre dan mit einer Funktion?
Also
....
IF Key(57) or *eine function*
Wie würde ich das den machen das die function genauso wieder erneut gedrückt werden muss?

Offline nabz32

  • Community Developer
  • Dr. Type
  • ******
  • Posts: 307
    • View Profile
Re: Tasten drücken? If Key ()?
« Reply #12 on: 2015-Aug-12 »
ich weiß nicht genau wie du das mit der Funktion gemeint hast,

aber wenn du zB. sowas meinst:

Code: GLBasic [Select]
IF irgendwas = 1
 IF irgendwasStart = 0 // Code der nur einmal ausgeführt wird, wenn irgendwas = 1
 

 ENDIF
irgendwasStart = 1
ENDIF

// und dann am ende der Funktion

if irgendwas = 0 THEN irgendwasStart = 0

 

oder noch einfacher

Code: GLBasic [Select]
IF irgendwas = 1
 // Code der nur einmal ausgeführt wird, wenn irgendwas = 1
 irgendwas = 2 // wenn du an anderen Stellen checken willst ob irgendwas läuft ( also 1 oder 2 ist ) einfach IF irgendwas > 0 verwenden
ENDIF

 


Offline Felix

  • Mc. Print
  • *
  • Posts: 13
    • View Profile
Re: Tasten drücken? If Key ()?
« Reply #13 on: 2015-Aug-14 »
Ich hab es jetzt so gemacht wie mir das vorgeschlagen wurde:

GLOBAL pressed%

WHILE TRUE

        IF KEY(57) AND pressed = 0
                Ausgabe()
                pressed = 1
        ENDIF
       
        IF NOT KEY(57) THEN pressed = 0
       
SHOWSCREEN
WEND

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

Jetzt wolte ich einen Butten mit einer function einfügen:

If Key(57) or einefunction
Ich wüsste aber nicht wie ich das machen soll.
Mit den Keys gehts aber halt nicht mit einer function.

Offline nabz32

  • Community Developer
  • Dr. Type
  • ******
  • Posts: 307
    • View Profile
Re: Tasten drücken? If Key ()?
« Reply #14 on: 2015-Aug-14 »
meinst du einen knopf den man mit der maus klickt?