Welcome to the Creatures Wiki! Log in and join the community.

Difference between revisions of "GSUB"

From Creatures Wiki
Jump to navigation Jump to search
(Created page with "'''GSUB''' is a CAOS command that jumps to a subroutine. ==Usage== Syntax: ''GSUB label(string)'' Jumps to a subroutine which is defined elsewhere in the code (usual...")
 
 
Line 4: Line 4:
 
Syntax: ''GSUB label(string)''
 
Syntax: ''GSUB label(string)''
  
Jumps to a subroutine which is defined elsewhere in the code (usually at the end of the normal code flow) with a [[SUBR]] command and the same label. The code following the GSUB command will continue executing after the end of the subroutine.
+
Jumps to a subroutine which is defined elsewhere in the code (usually at the end of the normal code [[Flow (CAOS)|flow]]) with a [[SUBR]] command and the same label. The code following the GSUB command will continue executing after the end of the subroutine.
  
 
==Example==
 
==Example==

Latest revision as of 07:57, 29 September 2018

GSUB is a CAOS command that jumps to a subroutine.

Usage[edit]

Syntax: GSUB label(string)

Jumps to a subroutine which is defined elsewhere in the code (usually at the end of the normal code flow) with a SUBR command and the same label. The code following the GSUB command will continue executing after the end of the subroutine.

Example[edit]

Subroutines are very often used in more complex agents, since they make the code much easier to deal with and more human-readable. The Robot Toy is relatively simple - it's a toy, not a plant or an animal - but it still has three subroutines just to deal with walking!

subr walk
	sndc "rob1"
	frat 1
**ov10 indicates which way the toy is facing
	doif ov10 lt 0
		gsub walk_left
	else
		gsub walk_right
	endi
	velo va99 -8
retn
*walking left
subr walk_left
	anim [0 1 2 3 4 5 6 7 8 9 10 0]
	setv va99 -5
retn
*walking right
subr walk_right
	anim [12 13 14 15 16 17 18 19 20 21 22 12]
	setv va99 5
retn

See Also[edit]