Sprite Code Examples: Difference between revisions

From MZXWiki
Jump to navigation Jump to search
No edit summary
m (Reverted edits by Qqmore (Talk); changed back to last version by Wervyn)
Line 1: Line 1:
Please QQ more my little bitches.
__NOTOC__
This article contains all of the code described in the [[Sprite#Sprite Tutorial|Sprite Tutorial]].
==Example 1.1==
lockplayer
set "spr0_refx" to 80
set "spr0_refy" to 0
set "spr0_width" to 3
set "spr0_height" to 3
: "drawloop"
wait for 1
put c?? Sprite p00 at "x" "y"
if uppressed then "up"
if leftpressed then "left"
if rightpressed then "right"
if downpressed then "down"
goto "drawloop"
: "up"
dec "y" by 1
goto "drawloop"
: "down"
inc "y" by 1
goto "drawloop"
: "left"
dec "x" by 1
goto "drawloop"
: "right"
inc "x" by 1
goto "drawloop"
[[Sprite#E1.1|Back]]
==Example 1.2==
lockplayer
'''set "local" to 0'''
'''set "local2" to 5'''
'''set "local3" to 5'''
set "spr'''&local&'''_refx" to 80
set "spr'''&local&'''_refy" to 0
set "spr'''&local&'''_width" to 3
set "spr'''&local&'''_height" to 3
'''goto "#draw"'''
: "drawloop"
if uppressed then "'''#'''up"
if leftpressed then "'''#'''left"
if rightpressed then "'''#'''right"
if downpressed then "'''#'''down"
wait for 1
goto "drawloop"
: "'''#'''up"
'''if "local3" <= 0 then "#return"'''
dec '''"local3"''' by 1
'''goto "#draw"'''
goto '''"#return"'''
: "'''#'''down"
'''if "local3" >= "(25-'spr&local&_height')" then "#return"'''
inc '''"local3"''' by 1
'''goto "#draw"'''
goto '''"#return"'''
: "'''#'''left"
'''if "local2" <= 0 then "#return"'''
dec '''"local2"''' by 1
'''goto "#draw"'''
goto '''"#return"'''
: "'''#'''right"
'''if "local2" >= "(80-'spr&local&_width')" then "#return"'''
inc '''"local2"''' by 1
'''goto "#draw"'''
goto '''"#return"'''
''': "#draw"'''
'''put c?? Sprite "local" at "local2" "local3"'''
'''set "spr&local&_setview" to 1'''
'''goto "#return"'''
[[Sprite#E1.2|Back]]
==Example 2==
'''. "Global robot"'''
'''set "spr_yorder" to 1'''
---------------------------------------------------------------
. "Player robot"
lockplayer
set "local" to 0
set "local2" to 5
set "local3" to 5
set "spr&local&_refx" to 80
set "spr&local&_refy" to 0
set "spr&local&_width" to 3
set "spr&local&_height" to 3
'''set "spr&local&_cx" to 0'''
'''set "spr&local&_cy" to 2'''
'''set "spr&local&_cwidth" to 3'''
'''set "spr&local&_cheight" to 1'''
goto "#draw"
: "drawloop"
if uppressed then "#up"
if leftpressed then "#left"
if rightpressed then "#right"
if downpressed then "#down"
wait for 1
goto "drawloop"
: "#up"
if "local3" <= 0 then "#return"
'''if c?? Sprite_colliding "local" at 0 -1 then "#return"'''
dec "local3" by 1
goto "#draw"
goto "#return"
: "#down"
if "local3" >= "(25-'spr&local&_height')" then "#return"
'''if c?? Sprite_colliding "local" at 0 1 then "#return"'''
inc "local3" by 1
goto "#draw"
goto "#return"
: "#left"
if "local2" <= 0 then "#return"
'''if c?? Sprite_colliding "local" at -1 0 then "#return"'''
dec "local2" by 1
goto "#draw"
goto "#return"
: "#right"
if "local2" >= "(80-'spr&local&_width')" then "#return"
'''if c?? Sprite_colliding "local" at 1 0 then "#return"'''
inc "local2" by 1
goto "#draw"
goto "#return"
: "#draw"
put c?? Sprite "local" at "local2" "local3"
set "spr&local&_setview" to 1
goto "#return"
[[Sprite#E2|Back]]
==Example 3.1==
. "Global robot"
set "spr_yorder" to 1
set "spr_p_x" to 80
set "spr_p_y" to 0
set "spr_p_w" to 3
set "spr_p_h" to 3
set "spr_p_cx" to 0
set "spr_p_cy" to 2
set "spr_p_cw" to 3
set "spr_p_ch" to 1
set "spr_d_x" to 83
set "spr_d_y" to 0
set "spr_d_w" to 3
set "spr_d_h" to 3
set "spr_d_cx" to 0
set "spr_d_cy" to 0
set "spr_d_cw" to 3
set "spr_d_ch" to 3
set "spr_k_x" to 86
set "spr_k_y" to 0
set "spr_k_w" to 2
set "spr_k_h" to 3
set "spr_k_cx" to 0
set "spr_k_cy" to 0
set "spr_k_cw" to 2
set "spr_k_ch" to 3
. "Your values may differ, so please change them to suit."
---------------------------------------------------------------
. "Player robot"
lockplayer
set "local" to '''"robot_id"'''
set "local2" to '''"thisx"'''
set "local3" to '''"thisy"'''
'''gotoxy "local" 0'''
'''. "&spr&local&"'''
set "spr&local&_refx" to '''"spr_p_x"'''
set "spr&local&_refy" to '''"spr_p_y"'''
set "spr&local&_width" to '''"spr_p_w"'''
set "spr&local&_height" to '''"spr_p_h"'''
set "spr&local&_cx" to '''"spr_p_cx"'''
set "spr&local&_cy" to '''"spr_p_cy"'''
set "spr&local&_cwidth" to '''"spr_p_cw"'''
set "spr&local&_cheight" to '''"spr_p_ch"'''
goto "#draw"
: "drawloop"
if uppressed then "#up"
if leftpressed then "#left"
if rightpressed then "#right"
if downpressed then "#down"
wait for 1
goto "drawloop"
: "#up"
if "local3" <= 0 then "#return"
if c?? Sprite_colliding "local" at 0 -1 then '''"collision"'''
dec "local3" by 1
goto "#draw"
goto "#return"
: "#down"
if "local3" >= "(25-'spr&local&_height')" then "#return"
if c?? Sprite_colliding "local" at 0 1 then '''"collision"'''
inc "local3" by 1
goto "#draw"
goto "#return"
: "#left"
if "local2" <= 0 then "#return"
if c?? Sprite_colliding "local" at -1 0 then '''"collision"'''
dec "local2" by 1
goto "#draw"
goto "#return"
: "#right"
if "local2" >= "(80-'spr&local&_width')" then "#return"
if c?? Sprite_colliding "local" at 1 0 then '''"collision"'''
inc "local2" by 1
goto "#draw"
goto "#return"
: "#draw"
put c?? Sprite "local" at "local2" "local3"
set "spr&local&_setview" to 1
goto "#return"
''': "collision"'''
'''loop start'''
'''goto "#collide('spr_clist&loopcount&')"'''
'''send "spr('spr_clist&loopcount&')" to "touch"'''
'''loop for "('spr_collisions'-1)"'''
'''goto "#return"'''
---------------------------------------------------------------
. "Key robot"
set "local" to "robot_id"
set "local2" to "thisx"
set "local3" to "thisy"
set "local4" to "this_color"
gotoxy "local" 0
. "@spr&local&"
set "spr&local&_refx" to "spr_k_x"
set "spr&local&_refy" to "spr_k_y"
set "spr&local&_width" to "spr_k_w"
set "spr&local&_height" to "spr_k_h"
set "spr&local&_cx" to "spr_k_cx"
set "spr&local&_cy" to "spr_k_cy"
set "spr&local&_cwidth" to "spr_k_cw"
set "spr&local&_cheight" to "spr_k_ch"
put "local4" Sprite "local" at "local2" "local3"
end
: "touch"
inc "key_&local4&" by 1
set "spr&local&_off" to 1
die
---------------------------------------------------------------
. "Door robot"
set "local" to "robot_id"
set "local2" to "thisx"
set "local3" to "thisy"
set "local4" to "this_color"
gotoxy "local" 0
. "@spr&local&"
set "spr&local&_refx" to "spr_d_x"
set "spr&local&_refy" to "spr_d_y"
set "spr&local&_width" to "spr_d_w"
set "spr&local&_height" to "spr_d_h"
set "spr&local&_cx" to "spr_d_cx"
set "spr&local&_cy" to "spr_d_cy"
set "spr&local&_cwidth" to "spr_d_cw"
set "spr&local&_cheight" to "spr_d_ch"
put "local4" Sprite "local" at "local2" "local3"
end
: "touch"
if "key_&local4&" <= 0 then "end"
dec "key_&local4&" by 1
set "spr&local&_off" to 1
die
: "end"
end
[[Sprite#E3.1|Back]]
==Example 3.2==
. "Global robot"
set "spr_yorder" to 1
set "spr_p_x" to 80
set "spr_p_y" to 0
set "spr_p_w" to 3
set "spr_p_h" to 3
set "spr_p_cx" to 0
set "spr_p_cy" to 2
set "spr_p_cw" to 3
set "spr_p_ch" to 1
set "spr_d_x" to 83
set "spr_d_y" to 0
set "spr_d_w" to 3
set "spr_d_h" to 3
set "spr_d_cx" to 0
set "spr_d_cy" to 0
set "spr_d_cw" to 3
set "spr_d_ch" to 3
set "spr_k_x" to 86
set "spr_k_y" to 0
set "spr_k_w" to 2
set "spr_k_h" to 3
set "spr_k_cx" to 0
set "spr_k_cy" to 0
set "spr_k_cw" to 2
set "spr_k_ch" to 3
'''set "num_keys" to 0'''
'''set "num_doors" to 0'''
---------------------------------------------------------------
. "Player robot"
lockplayer
set "local" to "robot_id"
set "local2" to "thisx"
set "local3" to "thisy"
gotoxy "local" 0
'''set "playersprite" to "local"'''
. "&spr&local&"
set "spr&local&_refx" to "spr_p_x"
set "spr&local&_refy" to "spr_p_y"
set "spr&local&_width" to "spr_p_w"
set "spr&local&_height" to "spr_p_h"
set "spr&local&_cx" to "spr_p_cx"
set "spr&local&_cy" to "spr_p_cy"
set "spr&local&_cwidth" to "spr_p_cw"
set "spr&local&_cheight" to "spr_p_ch"
goto "#draw"
: "drawloop"
if uppressed then "#up"
if leftpressed then "#left"
if rightpressed then "#right"
if downpressed then "#down"
wait for 1
goto "drawloop"
: "#up"
if "local3" <= 0 then "#return"
if c?? Sprite_colliding "local" at 0 -1 then "collision"
dec "local3" by 1
goto "#draw"
goto "#return"
: "#down"
if "local3" >= "(25-'spr&local&_height')" then "#return"
if c?? Sprite_colliding "local" at 0 1 then "collision"
inc "local3" by 1
goto "#draw"
goto "#return"
: "#left"
if "local2" <= 0 then "#return"
if c?? Sprite_colliding "local" at -1 0 then "collision"
dec "local2" by 1
goto "#draw"
goto "#return"
: "#right"
if "local2" >= "(80-'spr&local&_width')" then "#return"
if c?? Sprite_colliding "local" at 1 0 then "collision"
inc "local2" by 1
goto "#draw"
goto "#return"
: "#draw"
put c?? Sprite "local" at "local2" "local3"
set "spr&local&_setview" to 1
goto "#return"
: "collision"
loop start
goto "#collide('spr_clist&loopcount&')"
send "spr('spr_clist&loopcount&')" to "touch"
loop for "('spr_collisions'-1)"
goto "#return"
---------------------------------------------------------------
. "Key robot"
set "local" to "robot_id"
set "local2" to "thisx"
set "local3" to "thisy"
set "local4" to "this_color"
gotoxy "local" 0
. "@spr&local&"
'''set "spr&local&_lpos" to "num_keys"'''
'''set "keysprite('spr&local&_lpos')" to "local"'''
'''inc "num_keys" by 1'''
set "spr&local&_refx" to "spr_k_x"
set "spr&local&_refy" to "spr_k_y"
set "spr&local&_width" to "spr_k_w"
set "spr&local&_height" to "spr_k_h"
set "spr&local&_cx" to "spr_k_cx"
set "spr&local&_cy" to "spr_k_cy"
set "spr&local&_cwidth" to "spr_k_cw"
set "spr&local&_cheight" to "spr_k_ch"
put "local4" Sprite "local" at "local2" "local3"
end
: "touch"
inc "key_&local4&" by 1
'''dec "num_keys" by 1'''
'''set "spr('keysprite&num_keys&')_lpos" to "spr&local&_lpos"'''
'''set "keysprite('spr&local&_lpos')" to "keysprite&num_keys&"'''
set "spr&local&_off" to 1
die
---------------------------------------------------------------
. "Door robot"
set "local" to "robot_id"
set "local2" to "thisx"
set "local3" to "thisy"
set "local4" to "this_color"
gotoxy "local" 0
. "@spr&local&"
'''set "spr&local&_lpos" to "num_doors"'''
'''set "doorsprite('spr&local&_lpos')" to "local"'''
'''inc "num_doors" by 1'''
set "spr&local&_refx" to "spr_d_x"
set "spr&local&_refy" to "spr_d_y"
set "spr&local&_width" to "spr_d_w"
set "spr&local&_height" to "spr_d_h"
set "spr&local&_cx" to "spr_d_cx"
set "spr&local&_cy" to "spr_d_cy"
set "spr&local&_cwidth" to "spr_d_cw"
set "spr&local&_cheight" to "spr_d_ch"
put "local4" Sprite "local" at "local2" "local3"
end
: "touch"
if "key_&local4&" <= 0 then "end"
dec "key_&local4&" by 1
'''dec "num_doors" by 1'''
'''set "spr('doorsprite&num_doors&')_lpos" to "spr&local&_lpos"'''
'''set "doorsprite('spr&local&_lpos')" to "doorsprite&num_doors&"'''
set "spr&local&_off" to 1
die
: "end"
end
[[Sprite#E3.2|Back]]
==Example 3.3==
. "Global robot"
'''set "bminx" to 0'''
'''set "bminy" to 0'''
'''set "bmaxx" to 80'''
'''set "bmaxy" to 25'''
set "spr_yorder" to 1
set "spr_p_x" to 80
set "spr_p_y" to 0
set "spr_p_w" to 3
set "spr_p_h" to 3
set "spr_p_cx" to 0
set "spr_p_cy" to 2
set "spr_p_cw" to 3
set "spr_p_ch" to 1
set "spr_d_x" to 83
set "spr_d_y" to 0
set "spr_d_w" to 3
set "spr_d_h" to 3
set "spr_d_cx" to 0
set "spr_d_cy" to 0
set "spr_d_cw" to 3
set "spr_d_ch" to 3
set "spr_k_x" to 86
set "spr_k_y" to 0
set "spr_k_w" to 2
set "spr_k_h" to 3
set "spr_k_cx" to 0
set "spr_k_cy" to 0
set "spr_k_cw" to 2
set "spr_k_ch" to 3
'''set "local2" to "playerx"'''
'''set "local3" to "playery"'''
'''restore "justentered" 1'''
'''| "justentered"'''
set "num_keys" to 0
set "num_doors" to 0
'''set "player_x" to "local2"'''
'''set "player_y" to "local3"'''
'''put player at 0 0'''
'''end'''
''': "edge0"'''
'''set "local2" to "player_x"'''
'''set "local3" to "('bmaxy'-'spr_p_h')"'''
'''put player at 0 0'''
'''move player NORTH'''
'''end'''
''': "edge1"'''
'''set "local2" to "player_x"'''
'''set "local3" to "bminy"'''
'''put player at "('board_w'-1)" "('board_h'-1)"'''
'''move player SOUTH'''
'''end'''
''': "edge2"'''
'''set "local2" to "('bmaxx'-'spr_p_w')"'''
'''set "local3" to "player_y"'''
'''put player at 0 0'''
'''move player WEST'''
'''end'''
''': "edge3"'''
'''set "local2" to "bminx"'''
'''set "local3" to "player_y"'''
'''put player at "('board_w'-1)" "('board_h'-1)"'''
'''move player EAST'''
'''end'''
---------------------------------------------------------------
. "Player robot"
lockplayer
set "local" to "robot_id"
set "local2" to "thisx"
set "local3" to "thisy"
gotoxy "local" 0
set "playersprite" to "local"
. "&spr&local&"
'''restore "justentered" 1'''
'''| "justentered"'''
set "spr&local&_refx" to "spr_p_x"
set "spr&local&_refy" to "spr_p_y"
set "spr&local&_width" to "spr_p_w"
set "spr&local&_height" to "spr_p_h"
set "spr&local&_cx" to "spr_p_cx"
set "spr&local&_cy" to "spr_p_cy"
set "spr&local&_cwidth" to "spr_p_cw"
set "spr&local&_cheight" to "spr_p_ch"
goto "#draw"
: "drawloop"
if uppressed then "#up"
if leftpressed then "#left"
if rightpressed then "#right"
if downpressed then "#down"
wait for 1
goto "drawloop"
: "#up"
'''set "spr&local&_lastmove" to 0'''
if "local3" <= '''"bminy"''' then '''"edgecollide"'''
if c?? Sprite_colliding "local" at 0 -1 then "collision"
dec "local3" by 1
goto "#draw"
goto "#return"
: "#down"
'''set "spr&local&_lastmove" to 1'''
if "local3" >= "(''''bmaxy''''-'spr&local&_height')" then '''"edgecollide"'''
if c?? Sprite_colliding "local" at 0 1 then "collision"
inc "local3" by 1
goto "#draw"
goto "#return"
: "#left"
'''set "spr&local&_lastmove" to 2'''
if "local2" <= '''"bminx"''' then '''"edgecollide"'''
if c?? Sprite_colliding "local" at -1 0 then "collision"
dec "local2" by 1
goto "#draw"
goto "#return"
: "#right"
'''set "spr&local&_lastmove" to 3'''
if "local2" >= "(''''bmaxx''''-'spr&local&_width')" then '''"edgecollide"'''
if c?? Sprite_colliding "local" at 1 0 then "collision"
inc "local2" by 1
goto "#draw"
goto "#return"
: "#draw"
put c?? Sprite "local" at "local2" "local3"
set "spr&local&_setview" to 1
goto "#return"
: "collision"
loop start
goto "#collide('spr_clist&loopcount&')"
send "spr('spr_clist&loopcount&')" to "touch"
loop for "('spr_collisions'-1)"
goto "#return"
''': "edgecollide"'''
'''send "global" to "edge&spr('local')_lastmove&"'''
'''goto "#return"'''
---------------------------------------------------------------
. "Key robot"
set "local" to "robot_id"
set "local2" to "thisx"
set "local3" to "thisy"
set "local4" to "this_color"
gotoxy "local" 0
. "@spr&local&"
'''restore "justentered" 1'''
'''| "justentered"'''
set "spr&local&_lpos" to "num_keys"
set "keysprite('spr&local&_lpos')" to "local"
inc "num_keys" by 1
set "spr&local&_refx" to "spr_k_x"
set "spr&local&_refy" to "spr_k_y"
set "spr&local&_width" to "spr_k_w"
set "spr&local&_height" to "spr_k_h"
set "spr&local&_cx" to "spr_k_cx"
set "spr&local&_cy" to "spr_k_cy"
set "spr&local&_cwidth" to "spr_k_cw"
set "spr&local&_cheight" to "spr_k_ch"
put "local4" Sprite "local" at "local2" "local3"
end
: "touch"
inc "key_&local4&" by 1
dec "num_keys" by 1
set "spr('keysprite&num_keys&')_lpos" to "spr&local&_lpos"
set "keysprite('spr&local&_lpos')" to "keysprite&num_keys&"
set "spr&local&_off" to 1
die
---------------------------------------------------------------
. "Door robot"
set "local" to "robot_id"
set "local2" to "thisx"
set "local3" to "thisy"
set "local4" to "this_color"
gotoxy "local" 0
. "@spr&local&"
'''restore "justentered" 1'''
'''| "justentered"'''
set "spr&local&_lpos" to "num_doors"
set "doorsprite('spr&local&_lpos')" to "local"
inc "num_doors" by 1
set "spr&local&_refx" to "spr_d_x"
set "spr&local&_refy" to "spr_d_y"
set "spr&local&_width" to "spr_d_w"
set "spr&local&_height" to "spr_d_h"
set "spr&local&_cx" to "spr_d_cx"
set "spr&local&_cy" to "spr_d_cy"
set "spr&local&_cwidth" to "spr_d_cw"
set "spr&local&_cheight" to "spr_d_ch"
put "local4" Sprite "local" at "local2" "local3"
end
: "touch"
if "key_&local4&" <= 0 then "end"
dec "key_&local4&" by 1
dec "num_doors" by 1
set "spr('doorsprite&num_doors&')_lpos" to "spr&local&_lpos"
set "doorsprite('spr&local&_lpos')" to "doorsprite&num_doors&"
set "spr&local&_off" to 1
die
: "end"
end
[[Sprite#E3.3|Back]]


This wiki is finished.
[[Category:MegaZeux]]
 
I hate jews and black people.

Revision as of 16:11, 12 January 2008

This article contains all of the code described in the Sprite Tutorial.

Example 1.1

lockplayer
set "spr0_refx" to 80
set "spr0_refy" to 0
set "spr0_width" to 3
set "spr0_height" to 3
: "drawloop"
wait for 1
put c?? Sprite p00 at "x" "y"
if uppressed then "up"
if leftpressed then "left"
if rightpressed then "right"
if downpressed then "down"
goto "drawloop"
: "up"
dec "y" by 1
goto "drawloop"
: "down"
inc "y" by 1
goto "drawloop"
: "left"
dec "x" by 1
goto "drawloop"
: "right"
inc "x" by 1
goto "drawloop"

Back

Example 1.2

lockplayer
set "local" to 0
set "local2" to 5
set "local3" to 5
set "spr&local&_refx" to 80
set "spr&local&_refy" to 0
set "spr&local&_width" to 3
set "spr&local&_height" to 3
goto "#draw"
: "drawloop"
if uppressed then "#up"
if leftpressed then "#left"
if rightpressed then "#right"
if downpressed then "#down"
wait for 1
goto "drawloop"
: "#up"
if "local3" <= 0 then "#return"
dec "local3" by 1
goto "#draw"
goto "#return"
: "#down"
if "local3" >= "(25-'spr&local&_height')" then "#return"
inc "local3" by 1
goto "#draw"
goto "#return"
: "#left"
if "local2" <= 0 then "#return"
dec "local2" by 1
goto "#draw"
goto "#return"
: "#right"
if "local2" >= "(80-'spr&local&_width')" then "#return"
inc "local2" by 1
goto "#draw"
goto "#return"
: "#draw"
put c?? Sprite "local" at "local2" "local3"
set "spr&local&_setview" to 1
goto "#return"

Back

Example 2

. "Global robot"
set "spr_yorder" to 1
---------------------------------------------------------------
. "Player robot"
lockplayer
set "local" to 0
set "local2" to 5
set "local3" to 5
set "spr&local&_refx" to 80
set "spr&local&_refy" to 0
set "spr&local&_width" to 3
set "spr&local&_height" to 3
set "spr&local&_cx" to 0
set "spr&local&_cy" to 2
set "spr&local&_cwidth" to 3
set "spr&local&_cheight" to 1
goto "#draw"
: "drawloop"
if uppressed then "#up"
if leftpressed then "#left"
if rightpressed then "#right"
if downpressed then "#down"
wait for 1
goto "drawloop"
: "#up"
if "local3" <= 0 then "#return"
if c?? Sprite_colliding "local" at 0 -1 then "#return"
dec "local3" by 1
goto "#draw"
goto "#return"
: "#down"
if "local3" >= "(25-'spr&local&_height')" then "#return"
if c?? Sprite_colliding "local" at 0 1 then "#return"
inc "local3" by 1
goto "#draw"
goto "#return"
: "#left"
if "local2" <= 0 then "#return"
if c?? Sprite_colliding "local" at -1 0 then "#return"
dec "local2" by 1
goto "#draw"
goto "#return"
: "#right"
if "local2" >= "(80-'spr&local&_width')" then "#return"
if c?? Sprite_colliding "local" at 1 0 then "#return"
inc "local2" by 1
goto "#draw"
goto "#return"
: "#draw"
put c?? Sprite "local" at "local2" "local3"
set "spr&local&_setview" to 1
goto "#return"

Back

Example 3.1

. "Global robot"
set "spr_yorder" to 1
set "spr_p_x" to 80
set "spr_p_y" to 0
set "spr_p_w" to 3
set "spr_p_h" to 3
set "spr_p_cx" to 0
set "spr_p_cy" to 2
set "spr_p_cw" to 3
set "spr_p_ch" to 1
set "spr_d_x" to 83
set "spr_d_y" to 0
set "spr_d_w" to 3
set "spr_d_h" to 3
set "spr_d_cx" to 0
set "spr_d_cy" to 0
set "spr_d_cw" to 3
set "spr_d_ch" to 3
set "spr_k_x" to 86
set "spr_k_y" to 0
set "spr_k_w" to 2
set "spr_k_h" to 3
set "spr_k_cx" to 0
set "spr_k_cy" to 0
set "spr_k_cw" to 2
set "spr_k_ch" to 3
. "Your values may differ, so please change them to suit."
---------------------------------------------------------------
. "Player robot"
lockplayer
set "local" to "robot_id"
set "local2" to "thisx"
set "local3" to "thisy"
gotoxy "local" 0
. "&spr&local&"
set "spr&local&_refx" to "spr_p_x"
set "spr&local&_refy" to "spr_p_y"
set "spr&local&_width" to "spr_p_w"
set "spr&local&_height" to "spr_p_h"
set "spr&local&_cx" to "spr_p_cx"
set "spr&local&_cy" to "spr_p_cy"
set "spr&local&_cwidth" to "spr_p_cw"
set "spr&local&_cheight" to "spr_p_ch"
goto "#draw"
: "drawloop"
if uppressed then "#up"
if leftpressed then "#left"
if rightpressed then "#right"
if downpressed then "#down"
wait for 1
goto "drawloop"
: "#up"
if "local3" <= 0 then "#return"
if c?? Sprite_colliding "local" at 0 -1 then "collision"
dec "local3" by 1
goto "#draw"
goto "#return"
: "#down"
if "local3" >= "(25-'spr&local&_height')" then "#return"
if c?? Sprite_colliding "local" at 0 1 then "collision"
inc "local3" by 1
goto "#draw"
goto "#return"
: "#left"
if "local2" <= 0 then "#return"
if c?? Sprite_colliding "local" at -1 0 then "collision"
dec "local2" by 1
goto "#draw"
goto "#return"
: "#right"
if "local2" >= "(80-'spr&local&_width')" then "#return"
if c?? Sprite_colliding "local" at 1 0 then "collision"
inc "local2" by 1
goto "#draw"
goto "#return"
: "#draw"
put c?? Sprite "local" at "local2" "local3"
set "spr&local&_setview" to 1
goto "#return"
: "collision"
loop start
goto "#collide('spr_clist&loopcount&')"
send "spr('spr_clist&loopcount&')" to "touch"
loop for "('spr_collisions'-1)"
goto "#return"
---------------------------------------------------------------
. "Key robot"
set "local" to "robot_id"
set "local2" to "thisx"
set "local3" to "thisy"
set "local4" to "this_color"
gotoxy "local" 0
. "@spr&local&"
set "spr&local&_refx" to "spr_k_x"
set "spr&local&_refy" to "spr_k_y"
set "spr&local&_width" to "spr_k_w"
set "spr&local&_height" to "spr_k_h"
set "spr&local&_cx" to "spr_k_cx"
set "spr&local&_cy" to "spr_k_cy"
set "spr&local&_cwidth" to "spr_k_cw"
set "spr&local&_cheight" to "spr_k_ch"
put "local4" Sprite "local" at "local2" "local3"
end
: "touch"
inc "key_&local4&" by 1
set "spr&local&_off" to 1
die
---------------------------------------------------------------
. "Door robot"
set "local" to "robot_id"
set "local2" to "thisx"
set "local3" to "thisy"
set "local4" to "this_color"
gotoxy "local" 0
. "@spr&local&"
set "spr&local&_refx" to "spr_d_x"
set "spr&local&_refy" to "spr_d_y"
set "spr&local&_width" to "spr_d_w"
set "spr&local&_height" to "spr_d_h"
set "spr&local&_cx" to "spr_d_cx"
set "spr&local&_cy" to "spr_d_cy"
set "spr&local&_cwidth" to "spr_d_cw"
set "spr&local&_cheight" to "spr_d_ch"
put "local4" Sprite "local" at "local2" "local3"
end
: "touch"
if "key_&local4&" <= 0 then "end"
dec "key_&local4&" by 1
set "spr&local&_off" to 1
die
: "end"
end

Back

Example 3.2

. "Global robot"
set "spr_yorder" to 1
set "spr_p_x" to 80
set "spr_p_y" to 0
set "spr_p_w" to 3
set "spr_p_h" to 3
set "spr_p_cx" to 0
set "spr_p_cy" to 2
set "spr_p_cw" to 3
set "spr_p_ch" to 1
set "spr_d_x" to 83
set "spr_d_y" to 0
set "spr_d_w" to 3
set "spr_d_h" to 3
set "spr_d_cx" to 0
set "spr_d_cy" to 0
set "spr_d_cw" to 3
set "spr_d_ch" to 3
set "spr_k_x" to 86
set "spr_k_y" to 0
set "spr_k_w" to 2
set "spr_k_h" to 3
set "spr_k_cx" to 0
set "spr_k_cy" to 0
set "spr_k_cw" to 2
set "spr_k_ch" to 3
set "num_keys" to 0
set "num_doors" to 0
---------------------------------------------------------------
. "Player robot"
lockplayer
set "local" to "robot_id"
set "local2" to "thisx"
set "local3" to "thisy"
gotoxy "local" 0
set "playersprite" to "local"
. "&spr&local&"
set "spr&local&_refx" to "spr_p_x"
set "spr&local&_refy" to "spr_p_y"
set "spr&local&_width" to "spr_p_w"
set "spr&local&_height" to "spr_p_h"
set "spr&local&_cx" to "spr_p_cx"
set "spr&local&_cy" to "spr_p_cy"
set "spr&local&_cwidth" to "spr_p_cw"
set "spr&local&_cheight" to "spr_p_ch"
goto "#draw"
: "drawloop"
if uppressed then "#up"
if leftpressed then "#left"
if rightpressed then "#right"
if downpressed then "#down"
wait for 1
goto "drawloop"
: "#up"
if "local3" <= 0 then "#return"
if c?? Sprite_colliding "local" at 0 -1 then "collision"
dec "local3" by 1
goto "#draw"
goto "#return"
: "#down"
if "local3" >= "(25-'spr&local&_height')" then "#return"
if c?? Sprite_colliding "local" at 0 1 then "collision"
inc "local3" by 1
goto "#draw"
goto "#return"
: "#left"
if "local2" <= 0 then "#return"
if c?? Sprite_colliding "local" at -1 0 then "collision"
dec "local2" by 1
goto "#draw"
goto "#return"
: "#right"
if "local2" >= "(80-'spr&local&_width')" then "#return"
if c?? Sprite_colliding "local" at 1 0 then "collision"
inc "local2" by 1
goto "#draw"
goto "#return"
: "#draw"
put c?? Sprite "local" at "local2" "local3"
set "spr&local&_setview" to 1
goto "#return"
: "collision"
loop start
goto "#collide('spr_clist&loopcount&')"
send "spr('spr_clist&loopcount&')" to "touch"
loop for "('spr_collisions'-1)"
goto "#return"
---------------------------------------------------------------
. "Key robot"
set "local" to "robot_id"
set "local2" to "thisx"
set "local3" to "thisy"
set "local4" to "this_color"
gotoxy "local" 0
. "@spr&local&"
set "spr&local&_lpos" to "num_keys"
set "keysprite('spr&local&_lpos')" to "local"
inc "num_keys" by 1
set "spr&local&_refx" to "spr_k_x"
set "spr&local&_refy" to "spr_k_y"
set "spr&local&_width" to "spr_k_w"
set "spr&local&_height" to "spr_k_h"
set "spr&local&_cx" to "spr_k_cx"
set "spr&local&_cy" to "spr_k_cy"
set "spr&local&_cwidth" to "spr_k_cw"
set "spr&local&_cheight" to "spr_k_ch"
put "local4" Sprite "local" at "local2" "local3"
end
: "touch"
inc "key_&local4&" by 1
dec "num_keys" by 1
set "spr('keysprite&num_keys&')_lpos" to "spr&local&_lpos"
set "keysprite('spr&local&_lpos')" to "keysprite&num_keys&"
set "spr&local&_off" to 1
die
---------------------------------------------------------------
. "Door robot"
set "local" to "robot_id"
set "local2" to "thisx"
set "local3" to "thisy"
set "local4" to "this_color"
gotoxy "local" 0
. "@spr&local&"
set "spr&local&_lpos" to "num_doors"
set "doorsprite('spr&local&_lpos')" to "local"
inc "num_doors" by 1
set "spr&local&_refx" to "spr_d_x"
set "spr&local&_refy" to "spr_d_y"
set "spr&local&_width" to "spr_d_w"
set "spr&local&_height" to "spr_d_h"
set "spr&local&_cx" to "spr_d_cx"
set "spr&local&_cy" to "spr_d_cy"
set "spr&local&_cwidth" to "spr_d_cw"
set "spr&local&_cheight" to "spr_d_ch"
put "local4" Sprite "local" at "local2" "local3"
end
: "touch"
if "key_&local4&" <= 0 then "end"
dec "key_&local4&" by 1
dec "num_doors" by 1
set "spr('doorsprite&num_doors&')_lpos" to "spr&local&_lpos"
set "doorsprite('spr&local&_lpos')" to "doorsprite&num_doors&"
set "spr&local&_off" to 1
die
: "end"
end

Back

Example 3.3

. "Global robot"
set "bminx" to 0
set "bminy" to 0
set "bmaxx" to 80
set "bmaxy" to 25
set "spr_yorder" to 1
set "spr_p_x" to 80
set "spr_p_y" to 0
set "spr_p_w" to 3
set "spr_p_h" to 3
set "spr_p_cx" to 0
set "spr_p_cy" to 2
set "spr_p_cw" to 3
set "spr_p_ch" to 1
set "spr_d_x" to 83
set "spr_d_y" to 0
set "spr_d_w" to 3
set "spr_d_h" to 3
set "spr_d_cx" to 0
set "spr_d_cy" to 0
set "spr_d_cw" to 3
set "spr_d_ch" to 3
set "spr_k_x" to 86
set "spr_k_y" to 0
set "spr_k_w" to 2
set "spr_k_h" to 3
set "spr_k_cx" to 0
set "spr_k_cy" to 0
set "spr_k_cw" to 2
set "spr_k_ch" to 3
set "local2" to "playerx"
set "local3" to "playery"
restore "justentered" 1
| "justentered"
set "num_keys" to 0
set "num_doors" to 0
set "player_x" to "local2"
set "player_y" to "local3"
put player at 0 0
end
: "edge0"
set "local2" to "player_x"
set "local3" to "('bmaxy'-'spr_p_h')"
put player at 0 0
move player NORTH
end
: "edge1"
set "local2" to "player_x"
set "local3" to "bminy"
put player at "('board_w'-1)" "('board_h'-1)"
move player SOUTH
end
: "edge2"
set "local2" to "('bmaxx'-'spr_p_w')"
set "local3" to "player_y"
put player at 0 0
move player WEST
end
: "edge3"
set "local2" to "bminx"
set "local3" to "player_y"
put player at "('board_w'-1)" "('board_h'-1)"
move player EAST
end
---------------------------------------------------------------
. "Player robot"
lockplayer
set "local" to "robot_id"
set "local2" to "thisx"
set "local3" to "thisy"
gotoxy "local" 0
set "playersprite" to "local"
. "&spr&local&"
restore "justentered" 1
| "justentered"
set "spr&local&_refx" to "spr_p_x"
set "spr&local&_refy" to "spr_p_y"
set "spr&local&_width" to "spr_p_w"
set "spr&local&_height" to "spr_p_h"
set "spr&local&_cx" to "spr_p_cx"
set "spr&local&_cy" to "spr_p_cy"
set "spr&local&_cwidth" to "spr_p_cw"
set "spr&local&_cheight" to "spr_p_ch"
goto "#draw"
: "drawloop"
if uppressed then "#up"
if leftpressed then "#left"
if rightpressed then "#right"
if downpressed then "#down"
wait for 1
goto "drawloop"
: "#up"
set "spr&local&_lastmove" to 0
if "local3" <= "bminy" then "edgecollide"
if c?? Sprite_colliding "local" at 0 -1 then "collision"
dec "local3" by 1
goto "#draw"
goto "#return"
: "#down"
set "spr&local&_lastmove" to 1
if "local3" >= "('bmaxy'-'spr&local&_height')" then "edgecollide"
if c?? Sprite_colliding "local" at 0 1 then "collision"
inc "local3" by 1
goto "#draw"
goto "#return"
: "#left"
set "spr&local&_lastmove" to 2
if "local2" <= "bminx" then "edgecollide"
if c?? Sprite_colliding "local" at -1 0 then "collision"
dec "local2" by 1
goto "#draw"
goto "#return"
: "#right"
set "spr&local&_lastmove" to 3
if "local2" >= "('bmaxx'-'spr&local&_width')" then "edgecollide"
if c?? Sprite_colliding "local" at 1 0 then "collision"
inc "local2" by 1
goto "#draw"
goto "#return"
: "#draw"
put c?? Sprite "local" at "local2" "local3"
set "spr&local&_setview" to 1
goto "#return"
: "collision"
loop start
goto "#collide('spr_clist&loopcount&')"
send "spr('spr_clist&loopcount&')" to "touch"
loop for "('spr_collisions'-1)"
goto "#return"
: "edgecollide"
send "global" to "edge&spr('local')_lastmove&"
goto "#return"
---------------------------------------------------------------
. "Key robot"
set "local" to "robot_id"
set "local2" to "thisx"
set "local3" to "thisy"
set "local4" to "this_color"
gotoxy "local" 0
. "@spr&local&"
restore "justentered" 1
| "justentered"
set "spr&local&_lpos" to "num_keys"
set "keysprite('spr&local&_lpos')" to "local"
inc "num_keys" by 1
set "spr&local&_refx" to "spr_k_x"
set "spr&local&_refy" to "spr_k_y"
set "spr&local&_width" to "spr_k_w"
set "spr&local&_height" to "spr_k_h"
set "spr&local&_cx" to "spr_k_cx"
set "spr&local&_cy" to "spr_k_cy"
set "spr&local&_cwidth" to "spr_k_cw"
set "spr&local&_cheight" to "spr_k_ch"
put "local4" Sprite "local" at "local2" "local3"
end
: "touch"
inc "key_&local4&" by 1
dec "num_keys" by 1
set "spr('keysprite&num_keys&')_lpos" to "spr&local&_lpos"
set "keysprite('spr&local&_lpos')" to "keysprite&num_keys&"
set "spr&local&_off" to 1
die
---------------------------------------------------------------
. "Door robot"
set "local" to "robot_id"
set "local2" to "thisx"
set "local3" to "thisy"
set "local4" to "this_color"
gotoxy "local" 0
. "@spr&local&"
restore "justentered" 1
| "justentered"
set "spr&local&_lpos" to "num_doors"
set "doorsprite('spr&local&_lpos')" to "local"
inc "num_doors" by 1
set "spr&local&_refx" to "spr_d_x"
set "spr&local&_refy" to "spr_d_y"
set "spr&local&_width" to "spr_d_w"
set "spr&local&_height" to "spr_d_h"
set "spr&local&_cx" to "spr_d_cx"
set "spr&local&_cy" to "spr_d_cy"
set "spr&local&_cwidth" to "spr_d_cw"
set "spr&local&_cheight" to "spr_d_ch"
put "local4" Sprite "local" at "local2" "local3"
end
: "touch"
if "key_&local4&" <= 0 then "end"
dec "key_&local4&" by 1
dec "num_doors" by 1
set "spr('doorsprite&num_doors&')_lpos" to "spr&local&_lpos"
set "doorsprite('spr&local&_lpos')" to "doorsprite&num_doors&"
set "spr&local&_off" to 1
die
: "end"
end

Back