1
1
Fork 0
mirror of https://github.com/QB64Official/qb64.git synced 2024-07-16 20:05:14 +00:00
qb64/internal/help/ON-STRIG(n).md

76 lines
1.8 KiB
Markdown
Raw Normal View History

The [ON STRIG(n)](ON-STRIG(n)) statement is an event procedure that directs program flow upon the press of a specified joystick button.
## Syntax
> **ON STRIG**(buttonFunction) [GOSUB](GOSUB) {lineNumber|lineLabel}
> **ON STRIG**(buttonFunction[, joystickNumber]) {[GOSUB](GOSUB) {lineNumber|lineLabel} | [SUB](SUB)procedure}
* In **QB64** the value can be any button function number with any number of joysticks. See [STRIG](STRIG) and [STICK](STICK) for parameters.
* There are two buttonFunction for each button. The even numbered function is always the event of any press since last read.
* The statement sends the procedure to a line number, line label or [SUB](SUB) procedure when a button event occurs.
## QBasic
* In QBasic, value of *n* could only be a number from 0 to 3 only as it could only monitor 2 joystick buttons and 2 joysticks.
## Example(s)
Reading a STRIG event to do something in a [GOSUB](GOSUB) procedure.
```vb
ON STRIG(0) GOSUB 10
STRIG(0)ON
DO
PRINT ".";
_LIMIT 30
LOOP UNTIL INKEY$ <> ""
END
10
a$ = "[STRIG 0 EVENT]"
FOR x = 1 TO LEN(a$)
PRINT MID$(a$, x, 1);
_DELAY 0.02
NEXT
RETURN
```
Displays any number of game pad or joystick device button presses.
```vb
FOR j = 1 TO 256
FOR b = 1 TO 256
ON STRIG((b - 1) * 4, j) JoyButton (j - 1) * 256 + b - 1
NEXT
NEXT
STRIG ON
DO
PRINT ".";
_LIMIT 30
LOOP UNTIL INKEY$ <> ""
END
SUB JoyButton (js AS LONG)
PRINT "Joystick #"; js \ 256 + 1; "button #"; (js AND 255) + 1; "pressed!"
END SUB
```
> *Explanation:* Up to 256 controllers can be used in QB64 with many buttons to read.
## See Also
* [STRIG](STRIG), [STICK](STICK) (functions)
* [STRIG(n)](STRIG(n)) (statement)
* [_DEVICES](_DEVICES), [_DEVICE$](_DEVICE$), [_LASTBUTTON](_LASTBUTTON)
### External links
* [Single and Dual Stick Controllers](http://en.wikipedia.org/wiki/Analog_stick)