mirror of
https://github.com/QB64Official/qb64.git
synced 2024-09-28 11:17:47 +00:00
76 lines
1.8 KiB
Markdown
76 lines
1.8 KiB
Markdown
|
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)
|