Q(uick)BASIC Statements: STRIG
Quick View
STRIG(n)
An event-trapping statement that enables, disables, or inhibits trapping of joystick activity
Worth knowing
Useful and cross-version information about the programming environments of QBasic and QuickBasic.
Syntax
- STRIG(n%) ON
- STRIG(n%) OFF
- STRIG(n%) STOP
- ON STRIG(n%) GOSUB line
Description/Parameter(s)
n% | A value that specifies a joystick trigger: | |||||||||
|
||||||||||
STRIG(n%) ON | Enables joystick event trapping. | |||||||||
STRIG(n%) OFF | Disables joystick event trapping. | |||||||||
STRIG(n%) STOP | Suspends joystick event trapping. Events are processed once event trapping is enabled by STRIG ON. | |||||||||
line | The label or number of the first line of the event-trapping subroutine. |
Example
'This example requires a joystick.
ON STRIG(0) GOSUB Handler
STRIG(0) ON
PRINT "Press Esc to exit."
DO UNTIL INKEY$ = CHR$(27): LOOP
END
Handler:
PRINT "Joystick trigger is depressed."
RETURN
See also:
Syntax
- STRIG(n) ON
- STRIG(n) OFF
- STRIG(n) STOP
Description/Parameter(s)
The argument, n, is a numeric expression indicating the joystick button to trap:
Value | Button |
0 | Lower button, joystick A |
2 | Lower button, joystick B |
4 | Upper button, joystick A |
6 | Upper button, joystick B |
The STRIG(n) ON statement enables joystick event trapping by an ON STRIG statement. While trapping is enabled, and if a nonzero line number is specified in the ON STRIG statement, BASIC checks between every statement to see if the joystick trigger has been pressed.
The STRIG(n) OFF statement disables event trapping. If a subsequent event occurs (i.e., if the trigger is pressed), it will not be remembered when the next STRIG ON is executed.
The STRIG(n) STOP statement inhibits event trapping. If an event occurs it is remembered, and the event trap takes place as soon as trapping is re-enabled.
Example
There is no programming example for the STRIG event-trapping statements.
See the following event-trapping programming examples and apply the techniques there to joystick event-trapping:⮜ keystroke event trapping program example ⮞, or
⮜ background-music queue event trapping program example ⮞
See also:
Syntax
- STRIG(n%) ON
- STRIG(n%) OFF
- STRIG(n%) STOP
Description/Parameter(s)
n% | The trigger number (an integer expression): | ||||||||||||||
|
|||||||||||||||
STRIG(n%) ON | Enables joystick event trapping. | ||||||||||||||
STRIG(n%) OFF | Disables joystick event trapping. | ||||||||||||||
STRIG(n%) STOP | Suspends joystick event trapping. |
- The STRIG statements are not available for OS/2 protected mode.
Usage Notes
- STRIG(n%) ON enables joystick-event trapping. If joystick trigger n% is pressed after a STRIG(n%) ON statement, the routine specified in the ON STRIG statement is executed.
- STRIG(n%) OFF disables joystick-event trapping. No trapping takes place until another STRIG(n%) ON statement is executed. Events occurring while trapping is off are ignored.
- STRIG(n%) STOP suspends joystick-event trapping. No trapping takes place until a STRIG(n%) ON statement is executed. Events occurring while trapping is suspended are remembered and processed when the next STRIG(n%) ON statement is executed. However, remembered events are lost if STRIG(n%) OFF is executed.
- When a joystick event trap occurs (that is, the GOSUB is performed), an automatic STRIG(n%) STOP is executed so that recursive traps cannot take place. The RETURN from the trapping routine automatically executes a STRIG(n%) ON statement unless an explicit STRIG(n%) OFF was performed inside the routine.
- If your program contains event-handling statements and you are compiling from the BC command line, use the BC /W or /V option. (The /W option checks for events at every label or line number; the /V option checks at every statement.) If you do not use these options and your program contains event traps, BASIC generates the error message, "ON event without /V or /W on command line."
- In previous versions of BASIC, the statement STRIG ON enabled testing of the joystick triggers; STRIG OFF disabled joystick-trigger testing. The current version of BASIC ignores the old version of the STRIG ON and STRIG OFF statements.
- For more information, see Chapter 9, "Event Handling" in the Programmer's Guide.
Example
This example uses the EVENT and STRIG statements to enable joystick event trapping for two buttons on each of two joysticks. The ON STRIG statement passes control to an event-handling routine when a button is pressed. The STRIG function is used to determine which button was pressed, and the STICK function returns the position of both joysticks.
CLS
'Turn on event processing.
EVENT ON
'Enable the upper and lower buttons on both joysticks.
STRIG(0) ON 'Lower button, joystick A
STRIG(2) ON 'Lower button, joystick B
STRIG(4) ON 'Upper button, joystick A
STRIG(6) ON 'Upper button, joystick B
'Set up joystick event processing for each button.
ON STRIG(0) GOSUB JoyButtonHandler
ON STRIG(2) GOSUB JoyButtonHandler
ON STRIG(4) GOSUB JoyButtonHandler
ON STRIG(6) GOSUB JoyButtonHandler
LOCATE 22, 6
PRINT "Press a button on either joystick to see a complete joystick report."
LOCATE 23, 20
PRINT "Press ANY keyboard key to end the program."
'Infinite loop waiting for a Joystick event or keyboard key input.
DO
LOOP WHILE INKEY$ = ""
WrapItUp:
CLS
STRIG(0) OFF
STRIG(2) OFF
STRIG(4) OFF
STRIG(6) OFF
END
JoyButtonHandler:
'Print a label on screen.
LOCATE 10, 14: PRINT "Joystick A"
LOCATE 10, 45: PRINT "Joystick B"
LOCATE 22, 1: PRINT STRING$(80, 32)
DO
'Button 1, Joystick A.
IF STRIG(1) THEN
ButtonStatus$ = "DOWN"
ELSE
ButtonStatus$ = "UP "
END IF
EVENT OFF
LOCATE 16, 10: PRINT "Button 1 is "; ButtonStatus$
EVENT ON
'Button 1, Joystick B.
IF STRIG(3) THEN
ButtonStatus$ = "DOWN"
ELSE
ButtonStatus$ = "UP "
END IF
EVENT OFF
LOCATE 16, 42: PRINT "Button 1 is "; ButtonStatus$
EVENT ON
'Button 2, Joystick A.
IF STRIG(5) THEN
ButtonStatus$ = "DOWN"
ELSE
ButtonStatus$ = "UP "
END IF
EVENT OFF
LOCATE 18, 10: PRINT "Button 2 is "; ButtonStatus$
EVENT ON
'Button 2, Joystick B.
IF STRIG(7) THEN
ButtonStatus$ = "DOWN"
ELSE
ButtonStatus$ = "UP "
END IF
EVENT OFF
LOCATE 18, 42: PRINT "Button 2 is "; ButtonStatus$
EVENT ON
GOSUB UpdateXY
LOOP WHILE INKEY$ = ""
RETURN WrapItUp
UpdateXY:
EVENT OFF
LOCATE 12, 10: PRINT USING "X Position = ###"; STICK(0)
LOCATE 14, 10: PRINT USING "Y Position = ###"; STICK(1)
LOCATE 12, 42: PRINT USING "X Position = ###"; STICK(2)
LOCATE 14, 42: PRINT USING "Y Position = ###"; STICK(3)
EVENT ON
RETURN
See also: