version 3.00 cm_version 2.0 platform CM-150 o // param_text:标题:第三阶段 打地鼠 例子程序 o // param_text:最初发布:2014/01/03 o // param_text:最后修改:2014/01/03 o // param_text:[使用方法] o // param_text:机器人按照传感器的结果运行。 o main o begin o // param_text:开始时演奏乐器。 o load param_dest:cm:18 param_src:buzzertime_num:255 o load param_dest:cm:17 param_src:melody_num:3 o call faddr_dest:等待乐曲 - o // param_text:将地鼠移到开始位置。 o load param_dest:aux:1:68 param_src:dir_num:1624 o load param_dest:aux:2:68 param_src:dir_num:600 o load param_dest:cm:5 param_src:timer_num:8 o wait param_src:cm:5 lop:> param_src:timer_num:0 rop:then o call faddr_dest:地鼠停止 o call faddr_dest:暂时等待 - o // param_text:设置初始值。 o load param_dest:var:等待时间 param_src:dec_num:7 o load param_dest:var:各阶段次数 param_src:dec_num:3 o load param_dest:var:当前阶段 param_src:var:各阶段次数 o load param_dest:var:比赛次数 param_src:dec_num:0 o load param_dest:var:失败次数 param_src:dec_num:0 - o while(1) o begin o load param_dest:var:我的选择 param_src:dec_num:0 o // param_text:生成0~13之间的随机数。 o load param_dest:cm:25 param_src:dec_num:13 o load param_dest:var:随机数 param_src:cm:25 - o // param_text:如果生成的随机数是0或13的话推上地鼠。 o if param_src:var:随机数 lop:== param_src:dec_num:13 rop:|| param_src:var:随机数 lop:== param_src:dec_num:0 rop:then o load param_dest:var:地鼠值 param_src:dec_num:0 o else o begin o // param_text:如果随机数是1~9,会根据具体值推上地鼠。 o // param_text:如果随机数是10~12,根据具体值做地鼠假动作。 o if param_src:var:随机数 lop:<= param_src:dec_num:9 rop:then o call faddr_dest:地鼠上来 o else o call faddr_dest:地鼠假动作 - o // param_text:确认按键是否被按下。 o call faddr_dest:判断 o end - o // param_text:如果错了3次以上,程序结束;如果做对10次以上,程序以胜利结束。 o if param_src:var:失败次数 lop:>= param_src:dec_num:3 rop:then o exit o elseif param_src:var:比赛次数 lop:>= param_src:dec_num:10 rop:then o call faddr_dest:胜利 - o call faddr_dest:暂时等待 o call faddr_dest:暂时等待 o end o end - o function faddr_src:地鼠上来 o begin o if param_src:var:随机数 lop:>= param_src:dec_num:1 rop:&& param_src:var:随机数 lop:<= param_src:dec_num:3 rop:then o begin o // param_text:如果随机数是1~3,推上红地鼠,等待时间根据当前级别不同,之后拉回地鼠。 o load param_dest:aux:1:68 param_src:dir_num:1023 o call faddr_dest:暂时等待 o call faddr_dest:地鼠停止 o call faddr_dest:等待输入 o load param_dest:aux:1:68 param_src:dir_num:2047 o load param_dest:var:地鼠值 param_src:dec_num:1 o end o elseif param_src:var:随机数 lop:>= param_src:dec_num:4 rop:&& param_src:var:随机数 lop:<= param_src:dec_num:6 rop:then o begin o // param_text:如果随机数是4~6,推上蓝地鼠,等待时间根据当前级别不同,之后拉回地鼠。 o load param_dest:aux:2:68 param_src:dir_num:2047 o call faddr_dest:暂时等待 o call faddr_dest:地鼠停止 o call faddr_dest:等待输入 o load param_dest:aux:2:68 param_src:dir_num:1023 o load param_dest:var:地鼠值 param_src:dec_num:2 o end o else o begin o // param_text:如果随机数是7~9,两只地鼠都上来,等待时间根据当前级别不同,之后拉回地鼠。 o load param_dest:aux:1:68 param_src:dir_num:1023 o load param_dest:aux:2:68 param_src:dir_num:2047 o call faddr_dest:暂时等待 o call faddr_dest:地鼠停止 o call faddr_dest:等待输入 o load param_dest:aux:1:68 param_src:dir_num:2047 o load param_dest:aux:2:68 param_src:dir_num:1023 o load param_dest:var:地鼠值 param_src:dec_num:3 o end - o call faddr_dest:暂时等待 o call faddr_dest:地鼠停止 o end - o function faddr_src:地鼠假动作 o begin o load param_dest:var:地鼠值 param_src:dec_num:4 o if param_src:var:随机数 lop:== param_src:dec_num:10 rop:then o begin o // param_text:如果随机数是10,红地鼠上来一点点之后下去。 o load param_dest:aux:1:68 param_src:dir_num:800 o call faddr_dest:暂时等待 o load param_dest:aux:1:68 param_src:dir_num:1824 o end o elseif param_src:var:随机数 lop:== param_src:dec_num:11 rop:then o begin o // param_text:如果随机数是11,蓝地鼠上来一点点之后下去。 o load param_dest:aux:2:68 param_src:dir_num:1824 o call faddr_dest:暂时等待 o load param_dest:aux:2:68 param_src:dir_num:800 o end o else o begin o // param_text:如果随机数是12,两只地鼠都上来一点点之后下去。 o load param_dest:aux:1:68 param_src:dir_num:800 o load param_dest:aux:2:68 param_src:dir_num:1824 o call faddr_dest:暂时等待 o load param_dest:aux:1:68 param_src:dir_num:1824 o load param_dest:aux:2:68 param_src:dir_num:800 o end - o call faddr_dest:暂时等待 o call faddr_dest:地鼠停止 o call faddr_dest:等待输入 o end - o function faddr_src:判断 o begin o if param_src:var:地鼠值 lop:<= param_src:dec_num:3 rop:then o begin o // param_text:如果真的推上了地鼠,检查按下的键是否正确。 o if param_src:var:地鼠值 lop:== param_src:var:我的选择 rop:then o call faddr_dest:正确乐曲 o else o begin o compute param_dest:var:失败次数 param_src:var:失败次数 aop:+ param_src:dec_num:1 o call faddr_dest:错误乐曲 o end o // param_text:如果达到了当前级别升级所需的成功次数,则提高一个级别,缩短等待时间。 o compute param_dest:var:比赛次数 param_src:var:比赛次数 aop:+ param_src:dec_num:1 o if param_src:var:比赛次数 lop:== param_src:var:当前阶段 rop:then o begin o // param_text:升级 o compute param_dest:var:当前阶段 param_src:var:当前阶段 aop:+ param_src:var:各阶段次数 o compute param_dest:var:等待时间 param_src:var:等待时间 aop:- param_src:dec_num:1 o end o end o else o begin o // param_text:如果是做了假动作,不管按下哪个键都是错误的。 o if param_src:var:我的选择 lop:!= param_src:dec_num:0 rop:then o begin o compute param_dest:var:失败次数 param_src:var:失败次数 aop:+ param_src:dec_num:1 o call faddr_dest:错误乐曲 o end o end o end - o function faddr_src:地鼠停止 o begin o load param_dest:aux:1:68 param_src:dir_num:0 o load param_dest:aux:2:68 param_src:dir_num:0 o end - o function faddr_src:等待输入 o begin o load param_dest:cm:5 param_src:var:等待时间 o while param_src:cm:5 lop:> param_src:timer_num:0 rop:then o begin o if param_src:aux:3:65 lop:== param_src:bool_num:1 rop:then o compute param_dest:var:我的选择 param_src:var:我的选择 aop:| param_src:bin_num:1 o if param_src:aux:4:65 lop:== param_src:bool_num:1 rop:then o compute param_dest:var:我的选择 param_src:var:我的选择 aop:| param_src:bin_num:2 o end o end - o function faddr_src:暂时等待 o begin o load param_dest:cm:5 param_src:timer_num:1 o wait param_src:cm:5 lop:> param_src:timer_num:0 rop:then o end - o function faddr_src:胜利 o begin o load param_dest:cm:18 param_src:buzzertime_num:255 o load param_dest:cm:17 param_src:melody_num:2 o call faddr_dest:等待乐曲 o exit o end - o function faddr_src:等待乐曲 o begin o wait param_src:cm:18 lop:> param_src:buzzertime_num:0 rop:then o end - o function faddr_src:正确乐曲 o begin o load param_dest:cm:18 param_src:buzzertime_num:1 o load param_dest:cm:17 param_src:scale_num:15 o call faddr_dest:等待乐曲 o load param_dest:cm:18 param_src:buzzertime_num:1 o load param_dest:cm:17 param_src:scale_num:19 o call faddr_dest:等待乐曲 o load param_dest:cm:18 param_src:buzzertime_num:1 o load param_dest:cm:17 param_src:scale_num:22 o call faddr_dest:等待乐曲 o load param_dest:cm:18 param_src:buzzertime_num:1 o load param_dest:cm:17 param_src:scale_num:27 o call faddr_dest:等待乐曲 o end - o function faddr_src:错误乐曲 o begin o load param_dest:cm:18 param_src:buzzertime_num:255 o load param_dest:cm:17 param_src:melody_num:8 o call faddr_dest:等待乐曲