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:
n%Trigger
0Lower trigger, joystick A
2Lower trigger, joystick B
4Upper trigger, joystick A
6Upper trigger, joystick B
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
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

Syntax
  • STRIG(n%) ON
  • STRIG(n%) OFF
  • STRIG(n%) STOP
Description/Parameter(s)
n% The trigger number (an integer expression):
n%TriggerJoystick
0Lowerfirst
2Lowersecond
4Upperfirst
6Uppersecond
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