1 line
24 KiB
JavaScript
1 line
24 KiB
JavaScript
var $builtinmodule=function(t){let e={__name__:new Sk.builtin.str("blocklygame")};var i=d3.select(Sk.TurtleGraphics.target).append("svg"),r=[[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,2,1,1,1,1,3,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0]],a=0,n=1,o=2,p=3,c=0,l=1,s=-1,m={10010:[4,0],10001:[3,3],11e3:[0,1],10100:[0,2],11010:[4,1],10101:[3,2],10110:[0,0],10011:[2,0],11001:[4,2],11100:[2,3],11110:[1,1],10111:[1,0],11011:[2,1],11101:[1,2],11111:[2,2],null0:[4,3],null1:[3,0],null2:[3,1],null3:[0,3],null4:[1,3]},u={img:"../common/js/skulpt_mixcar/pic/pegman.png",height:52,width:49,direction:n,type:"animate",x:0,y:0,stepSpeed:150,coin_point:0,marker_num:0,oil:1,traffic_light:22,circulation_num:0,invisible_mark:0},k=50,h=r.length,f=r[0].length,g=0,S={mlevel:0,tiles:"../common/js/skulpt_mixcar/pic/maze_path.png",marker:"../common/js/skulpt_mixcar/pic/marker.png",background:"../common/js/skulpt_mixcar/pic/bg_astro.jpg",wall:"../common/js/skulpt_mixcar/pic/roadblock.png",award:"../common/js/skulpt_mixcar/pic/award.png",barrier:"",markers:[],SquareType:{WALL:0,OPEN:1,START:2,FINISH:3,AWARD:4,INVIMAKER:24},MAZE_WIDTH:k*f,MAZE_HEIGHT:k*h,PATH_WIDTH:16.666666666666668,result:c,finish:{x:0,y:0},type:1,INVIMNUM:0},T=[{mlevel:1,map:[[0,1,1,13,1,1,12,0],[0,1,0,1,0,0,1,0],[0,1,1,9,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,10,1,1,11,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg1.jpg",wall:"",award:"",barrier:"",markers:["../common/js/skulpt_mixcar/pic/red.png","../common/js/skulpt_mixcar/pic/yellow.png","../common/js/skulpt_mixcar/pic/blue.png","../common/js/skulpt_mixcar/pic/green.png"],SquareType:{WALL:0,OPEN:1,MARKER1:10,MARKER2:11,MARKER3:12,MARKER4:13,S_F:9,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:c,finish:{x:0,y:0},type:0,INVIMNUM:0},{mlevel:2,map:[[0,1,1,13,1,1,12,0],[0,1,0,5,0,0,1,0],[0,1,1,9,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,10,1,1,11,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg2.jpg",wall:"",award:"",barrier:"../common/js/skulpt_mixcar/pic/barrier.png",markers:["../common/js/skulpt_mixcar/pic/red.png","../common/js/skulpt_mixcar/pic/yellow.png","../common/js/skulpt_mixcar/pic/blue.png","../common/js/skulpt_mixcar/pic/green.png"],SquareType:{WALL:0,OPEN:1,BARRIER:5,MARKER1:10,MARKER2:11,MARKER3:12,MARKER4:13,S_F:9,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:c,finish:{x:0,y:0},type:0,INVIMNUM:0},{mlevel:3,map:[[0,1,1,13,24,1,24,0],[0,1,0,Math.random()>.5?1:5,0,0,1,0],[0,1,1,9,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,24,1,1,24,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg2.jpg",wall:"",award:"",barrier:"../common/js/skulpt_mixcar/pic/barrier.png",markers:["../common/js/skulpt_mixcar/pic/red.png","../common/js/skulpt_mixcar/pic/yellow.png","../common/js/skulpt_mixcar/pic/blue.png","../common/js/skulpt_mixcar/pic/green.png"],SquareType:{WALL:0,OPEN:1,BARRIER:5,MARKER4:13,S_F:9,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:c,finish:{x:0,y:0},type:0,INVIMNUM:4},{mlevel:4,map:[[0,1,1,13,24,1,24,0],[20,1,0,Math.random()>.5?1:5,0,0,1,0],[0,1,1,9,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,24,1,1,24,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg3.jpg",wall:"",award:"",barrier:"../common/js/skulpt_mixcar/pic/barrier.png",markers:["../common/js/skulpt_mixcar/pic/red.png","../common/js/skulpt_mixcar/pic/yellow.png","../common/js/skulpt_mixcar/pic/blue.png","../common/js/skulpt_mixcar/pic/green.png"],SquareType:{WALL:0,OPEN:1,BARRIER:5,MARKER4:13,S_F:9,OIL_STATION:20,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:c,finish:{x:0,y:0},type:0,INVIMNUM:4},{mlevel:5,map:[[0,1,1,1,1,1,1,0],[0,1,0,0,0,0,1,0],[0,1,1,2,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,1,1,1,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg1.jpg",wall:"",award:"",barrier:"",markers:[],SquareType:{WALL:0,OPEN:1,START:2,S_F:9,TRAFFIC_LIGHT:21,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:c,finish:{x:3,y:2},type:0,INVIMNUM:0},{mlevel:6,map:[[0,1,1,13,1,1,12,0],[0,1,0,1,0,0,1,0],[0,1,1,2,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,10,1,1,11,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg1.jpg",wall:"",award:"",barrier:"",markers:["../common/js/skulpt_mixcar/pic/red.png","../common/js/skulpt_mixcar/pic/yellow.png","../common/js/skulpt_mixcar/pic/blue.png","../common/js/skulpt_mixcar/pic/green.png"],SquareType:{WALL:0,OPEN:1,START:2,MARKER1:10,MARKER2:11,MARKER3:12,MARKER4:13,S_F:9,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:c,finish:{x:3,y:2},type:0,INVIMNUM:0},{mlevel:7,map:[[0,1,1,1,1,1,1,0],[0,1,0,0,0,0,1,0],[0,1,1,2,22,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,1,1,1,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg4.jpg",wall:"",award:"",barrier:"",markers:[],SquareType:{WALL:0,OPEN:1,START:2,S_F:9,LIGHT_GREEN:22,LIGHT_RED:23,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:c,finish:{x:3,y:2},type:0,INVIMNUM:0}],y=function(t,e,i,r){var a=$(Sk.TurtleGraphics.target).find("#pegman");"animate"==u.type?(0==S.type?(a.attr("x",t*k-i*u.width+1),a.attr("y",k*(e+.5)-u.height/2)):(a.attr("x",t*k-i*u.width+1),a.attr("y",k*(e+.5)-u.height/2-8)),r?a.attr("transform","rotate("+r+", "+(t*k+25)+", "+(e*k+25)+")"):a.attr("transform","rotate(0, 0, 0)")):(a.attr("x",t*k+1),a.attr("y",k*(e+.5)-u.height/2));var n=$(Sk.TurtleGraphics.target).find("#clipRect");n.attr("x",t*k+1),n.attr("y",a.attr("y"))},d=function(){i.attr("id","game_stage");var t=Math.max(h,f)*k;i.attr("viewBox","0 -10 "+t+" "+(t+10)),i.append("rect").attr("x",0).attr("y",0).attr("width",S.MAZE_WIDTH).attr("height",S.MAZE_HEIGHT).style("fill","#F1EEE7").style("stroke","#CCB").style("stroke-width","1"),i.append("image").attr("x",0).attr("y",0).attr("width",k*f).attr("height",k*h).attr("xlink:href",S.background);for(var e=function(t,e){return t<0||t>=f||e<0||e>=h||r[e][t]==S.SquareType.WALL||r[e][t]==S.SquareType.OIL_STATION?"0":"1"},a=0,n=0;n<h;n++)for(var o=0;o<f;o++){var p=e(o,n)+e(o,n-1)+e(o+1,n)+e(o,n+1)+e(o-1,n);m[p]||(p="00000"==p&&Math.random()>.3?"null0":"null"+Math.floor(1+4*Math.random()));var c=m[p][0],l=m[p][1];i.append("clipPath").attr("id","tileClipPath"+a);const t=Sk.TurtleGraphics.target.querySelector("#tileClipPath"+a);d3.select(t).append("rect").attr("x",o*k).attr("y",n*k).attr("width",k).attr("height",k),0==S.type?r[n][o]!=S.SquareType.WALL&&r[n][o]!=S.SquareType.OIL_STATION&&r[n][o]!=S.SquareType.TRAFFIC_LIGHT&&r[n][o]!=S.SquareType.LIGHT_GREEN&&r[n][o]!=S.SquareType.LIGHT_RED&&(i.append("image").attr("x",o*k).attr("y",n*k).attr("width",k).attr("height",k).attr("clip-path","url(#tileClipPath"+a+")").attr("xlink:href",S.tiles),a++):(i.append("image").attr("x",(o-c)*k).attr("y",(n-l)*k).attr("width",250).attr("height",200).attr("clip-path","url(#tileClipPath"+a+")").attr("xlink:href",S.tiles),a++),0==r[n][o]?i.append("image").attr("x",o*k+5).attr("y",n*k+5).attr("width",40).attr("height",40).attr("xlink:href",S.wall):4==r[n][o]?i.append("image").attr("id","coin"+n+o).attr("x",o*k+12.5).attr("y",n*k+12.5).attr("width",25).attr("height",25).attr("xlink:href",S.award):5==r[n][o]?i.append("image").attr("id","barrier"+n+o).attr("x",o*k+7.5).attr("y",n*k+7.5).attr("width",35).attr("height",35).attr("xlink:href",S.barrier):10==r[n][o]?(i.append("image").attr("id","marker1").attr("x",o*k+7.5).attr("y",n*k+7.5).attr("width",35).attr("height",35).attr("xlink:href",S.markers[0]),g+=1):11==r[n][o]?(i.append("image").attr("id","marker2").attr("x",o*k+7.5).attr("y",n*k+7.5).attr("width",35).attr("height",35).attr("xlink:href",S.markers[1]),g+=1):12==r[n][o]?(i.append("image").attr("id","marker3").attr("x",o*k+7.5).attr("y",n*k+7.5).attr("width",35).attr("height",35).attr("xlink:href",S.markers[2]),g+=1):13==r[n][o]&&(i.append("image").attr("id","marker4").attr("x",o*k+7.5).attr("y",n*k+7.5).attr("width",35).attr("height",35).attr("xlink:href",S.markers[3]),g+=1)}if(1==S.type){i.append("image").attr("id","finish").attr("width",25).attr("height",25).attr("xlink:href",S.marker);for(n=0;n<h;n++)for(o=0;o<f;o++)if(r[n][o]==S.SquareType.START)u.x=o,u.y=n;else if(r[n][o]==S.SquareType.FINISH){(s=$(Sk.TurtleGraphics.target).find("#finish")).attr("x",k*(o+.5)-s.attr("width")/2),s.attr("y",k*(n+.6)-s.attr("height")),S.finish={x:o,y:n}}}else for(n=0;n<h;n++)for(o=0;o<f;o++){var s;if(9==r[n][o])i.append("image").attr("id","finish").attr("width",40).attr("height",40).attr("xlink:href",S.marker),u.x=o,u.y=n,(s=$(Sk.TurtleGraphics.target).find("#finish")).attr("x",k*o+5),s.attr("y",k*n+5),S.finish={x:o,y:n};else 20==r[n][o]?i.append("image").attr("id","station").attr("x",o*k+5).attr("y",n*k+5).attr("width",80).attr("height",40).attr("xlink:href","../common/js/skulpt_mixcar/pic/oilstation.png"):21==r[n][o]?i.append("image").attr("id","trafficlight").attr("x",o*k+7.5).attr("y",n*k+7.5).attr("width",35).attr("height",35).attr("xlink:href","../common/js/skulpt_mixcar/pic/trafficlight.png"):22==r[n][o]?i.append("image").attr("id","lightgreen").attr("x",o*k+7.5).attr("y",n*k+7.5).attr("width",35).attr("height",35).attr("xlink:href","../common/js/skulpt_mixcar/pic/greenlight.png"):23==r[n][o]?i.append("image").attr("id","lightred").attr("x",o*k+7.5).attr("y",n*k+7.5).attr("width",35).attr("height",35).attr("xlink:href","../common/js/skulpt_mixcar/pic/redlight.png"):2==r[n][o]&&(u.x=o,u.y=n,i.append("image").attr("id","start").attr("x",k*o).attr("y",k*n+5).attr("width",k).attr("height",40).attr("xlink:href",S.marker))}},_=function(){return S.result=u.x!=S.finish.x||u.y!=S.finish.y?c:l,S.result==l&&(1==S.type||(5==S.mlevel||7==S.mlevel||6==S.mlevel||(u.marker_num==g?u.invisible_mark>=S.INVIMNUM||"error3":"error2")))},x=function(t,e){var i,c,l=u.direction+t;switch(b(l)){case a:i=r[u.y-1]&&r[u.y-1][u.x],c="look_north";break;case n:i=r[u.y][u.x+1],c="look_east";break;case o:i=r[u.y+1]&&r[u.y+1][u.x],c="look_south";break;case p:i=r[u.y][u.x-1],c="look_west"}return e?[c,i!==S.SquareType.WALL&&void 0!==i&&i!==S.SquareType.BARRIER&&i!==S.SquareType.OIL_STATION&&i!==S.SquareType.TRAFFIC_LIGHT&&i!==S.SquareType.LIGHT_RED&&i!==S.SquareType.LIGHT_GREEN]:i!==S.SquareType.WALL&&void 0!==i&&i!==S.SquareType.BARRIER&&i!==S.SquareType.OIL_STATION&&i!==S.SquareType.TRAFFIC_LIGHT&&i!==S.SquareType.LIGHT_RED&&i!==S.SquareType.LIGHT_GREEN},b=function(t){return(t=Math.round(t)%4)<0&&(t+=4),t},w=function(t){return(t=Math.round(t)%16)<0&&(t+=16),t},I=function(t,e){var i=[(e[0]-t[0])/4,(e[1]-t[1])/4,(e[2]-t[2])/4];y(t[0]+i[0],t[1]+i[1],w(t[2]+i[2])),setTimeout((function(){y(t[0]+2*i[0],t[1]+2*i[1],w(t[2]+2*i[2]))}),u.stepSpeed),setTimeout((function(){y(t[0]+3*i[0],t[1]+3*i[1],w(t[2]+3*i[2]))}),2*u.stepSpeed),setTimeout((function(){y(e[0],e[1],w(e[2]))}),3*u.stepSpeed)},E=function(t){t=Sk.ffi.remapToJs(t),Mixly.Editor.blockEditor.highlightBlock(t)};e.setMap=new Sk.builtin.func((function(t,e,i,a,n){if(Sk.builtin.pyCheckArgs("setMap",arguments,5,5),r=[],"无可用地图"==n&&(n=""),t<3||t>20||e<3||e>20)throw new Sk.builtin.TypeError("错误!超出地图可设置范围,请设置横纵方格数大于等于3,小于等于20");switch(t=Sk.ffi.remapToJs(t),e=Sk.ffi.remapToJs(e),f=t,h=e,S.MAZE_WIDTH=k*f,S.MAZE_HEIGHT=k*h,i=Sk.ffi.remapToJs(i),a=Sk.ffi.remapToJs(a),Sk.ffi.remapToJs(n)){case"bg_default":S.background="../common/js/skulpt_mixcar/pic/bg_default.png";break;case"bg_astro":S.background="../common/js/skulpt_mixcar/pic/bg_astro.jpg";break;case"bg_panda":S.background="../common/js/skulpt_mixcar/pic/bg_panda.jpg"}var o;if(null!=(o=/\((\d+),(\d+)\)/.exec(i))&&(o[1]>t||o[1]<1||o[2]>e||o[2]<1))throw new Sk.builtin.TypeError("错误!起点坐标超出地图范围!");if(null!=(o=/\((\d+),(\d+)\)/.exec(a))&&(o[1]>t||o[1]<1||o[2]>e||o[2]<1))throw new Sk.builtin.TypeError("错误!终点坐标超出地图范围!");for(var p=0;p<e;p++){for(var c=[],l=0;l<t;l++){var s="("+(l+1)+","+(p+1)+")";c[l]=s==i?S.SquareType.START:s==a?S.SquareType.FINISH:S.SquareType.OPEN}r[p]=c}}));e.setPathType=new Sk.builtin.func((function(t){switch(Sk.builtin.pyCheckArgs("setPathType",arguments,1,1),t=Sk.ffi.remapToJs(t)){case"default":S.tiles="../common/js/skulpt_mixcar/pic/maze_path.png";break;case"pipeline":S.tiles="../common/js/skulpt_mixcar/pic/tiles_astro.png";break;case"bamboo":S.tiles="../common/js/skulpt_mixcar/pic/tiles_panda.png"}}));e.placeItem=new Sk.builtin.func((function(t,e,i){if(Sk.builtin.pyCheckArgs("placeItem",arguments,3,3),t=Sk.ffi.remapToJs(t),e=Sk.ffi.remapToJs(e),i=Sk.ffi.remapToJs(i),2==r[e-1][t-1]||3==r[e-1][t-1])throw new Sk.builtin.TypeError("错误!不能将放置物位置设置在起点或终点坐标!");if(t>r[0].length||t<0||e>r.length||e<0)throw new Sk.builtin.TypeError("错误!放置物坐标超过地图范围");switch(i){case"wall":r[e-1][t-1]=S.SquareType.WALL;break;case"coin":r[e-1][t-1]=S.SquareType.AWARD}}));e.initMap=new Sk.builtin.func((function(){d()}));e.Actor=Sk.misceval.buildClass(e,(function(t,e){e.__init__=new Sk.builtin.func((function(t,e,r,n){return new Sk.misceval.promiseToSuspension(new Promise((function(t){Sk.setTimeout((function(){switch("无可用角色"==(e=Sk.ffi.remapToJs(e)||"pegman")&&(e="pegman"),e){case"pegman":u.img="../common/js/skulpt_mixcar/pic/pegman.png",u.type="animate";break;case"panda":u.img="../common/js/skulpt_mixcar/pic/panda.png",u.type="animate";break;case"astro":u.img="../common/js/skulpt_mixcar/pic/astro.png",u.type="animate";break;case"robot":u.img="../common/js/skulpt_mixcar/pic/robot.png",u.type="still";break;case"car":u.img="../common/js/skulpt_mixcar/pic/actor_car3.png",u.type="animate"}u.direction=Sk.ffi.remapToJs(r)||a,size=[52,49],u.coin_point=0;var o=/block_id=([\s\S]*)/.exec(n);null!=o&&(n=o[1],E(n)),function(){i.append("clipPath").attr("id","pegmanClipPath");const t=Sk.TurtleGraphics.target.querySelector("#pegmanClipPath");d3.select(t).append("rect").attr("id","clipRect").attr("width",u.width).attr("height",u.height),"animate"==u.type?0==S.type?i.append("image").attr("id","pegman").attr("width",16*u.width).attr("height",u.height).attr("clip-path","url(#pegmanClipPath)").attr("xlink:href",u.img):i.append("image").attr("id","pegman").attr("width",21*u.width).attr("height",u.height).attr("clip-path","url(#pegmanClipPath)").attr("xlink:href",u.img):i.append("image").attr("id","pegman").attr("width",u.width).attr("height",u.height).attr("clip-path","url(#pegmanClipPath)").attr("xlink:href",u.img),y(u.x,u.y,4*u.direction)}(),t(Sk.builtin.none.none$)}),800)})))})),e.moveDirection=new Sk.builtin.func((function(t,e,c){return Sk.builtin.pyCheckArgs("moveDirection",arguments,3,3),new Sk.misceval.promiseToSuspension(new Promise((function(t){Sk.setTimeout((function(){u.direction=parseInt(Sk.ffi.remapToJs(e));var l=function(t){if(!x(0,null))return!1;var e;switch(b(t)){case a:e="north";break;case n:e="east";break;case o:e="south";break;case p:e="west"}return e}(e);if(0==l)throw S.result=s,layer.alert("挑战失败!请修改后重新尝试",{shade:!1}),new Sk.builtin.TypeError("挑战失败!请修改后重新尝试");if(4==S.mlevel){if(r[u.y][u.x-1]==S.SquareType.OIL_STATION&&0==u.oil)throw S.result=s,i.append("image").attr("id","caroil").attr("x",k).attr("y",175).attr("width",k).attr("height",k).attr("xlink:href","../common/js/skulpt_mixcar/pic/no_oil.png"),layer.alert("挑战失败!小车没有油了",{shade:!1}),new Sk.builtin.TypeError("挑战失败!小车没有油了")}else if(5==S.mlevel)r[u.y][u.x]==S.SquareType.START&&(u.circulation_num+=1);else if(7==S.mlevel&&u.traffic_light==S.SquareType.LIGHT_RED)throw layer.alert("挑战失败:小车在红灯亮时还未停止!",{shade:!1}),new Sk.builtin.TypeError("挑战失败:小车在红灯亮时还未停止!");switch(l){case"north":I([u.x,u.y,4*u.direction],[u.x,u.y-1,4*u.direction]),u.y--;break;case"east":I([u.x,u.y,4*u.direction],[u.x+1,u.y,4*u.direction]),u.x++;break;case"south":I([u.x,u.y,4*u.direction],[u.x,u.y+1,4*u.direction]),u.y++;break;case"west":I([u.x,u.y,4*u.direction],[u.x-1,u.y,4*u.direction]),u.x--}var m,h,f=/block_id=([\s\S]*)/.exec(c);if(null!=f&&(c=f[1],E(c)),m=u.x,h=u.y,r[h][m]==S.SquareType.AWARD&&(setTimeout((function(){$(Sk.TurtleGraphics.target).find("#coin"+h+m).remove()}),3*u.stepSpeed),r[h][m]=S.SquareType.OPEN,u.coin_point+=1),function(t,e){r[e][t]!=S.SquareType.MARKER1&&r[e][t]!=S.SquareType.MARKER2&&r[e][t]!=S.SquareType.MARKER3&&r[e][t]!=S.SquareType.MARKER4||(u.marker_num+=1)}(u.x,u.y),function(t,e){r[e][t]==S.SquareType.INVIMAKER&&(u.invisible_mark+=1)}(u.x,u.y),7==S.mlevel&&(r[u.y][u.x+1]==S.SquareType.LIGHT_RED||r[u.y][u.x+1]==S.SquareType.LIGHT_GREEN)&&(r[u.y][u.x+1]=Math.random()>.5?S.SquareType.LIGHT_RED:S.SquareType.LIGHT_GREEN,u.traffic_light=r[u.y][u.x+1],u.traffic_light==S.SquareType.LIGHT_RED)){const t=Sk.TurtleGraphics.target.querySelector("#lightgreen");d3.select(t).remove(),i.append("image").attr("id","lightred").attr("x",(u.x+1)*k-5).attr("y",u.y*k+5).attr("width",k).attr("height",k).attr("xlink:href","../common/js/skulpt_mixcar/pic/redlight.png")}var g=_();if("error2"==g)throw S.result=s,layer.alert("挑战失败,请检查是否通过所有标记点!",{shade:!1}),new Sk.builtin.TypeError("挑战失败,请检查是否通过所有标记点!");if("error3"==g)throw layer.alert("挑战失败,请修改后重新尝试!",{shade:!1}),new Sk.builtin.TypeError("挑战失败!请修改后重新尝试");t(Sk.builtin.none.none$)}),800)})))})),e.turn=new Sk.builtin.func((function(t,e,i){return Sk.builtin.pyCheckArgs("turn",arguments,3,3),Sk.builtin.pyCheckType("direction","string",Sk.builtin.checkString(e)),new Sk.misceval.promiseToSuspension(new Promise((function(t){Sk.setTimeout((function(){switch(function(t){return"right"==t?"right":"left"}(e=Sk.ffi.remapToJs(e))){case"left":I([u.x,u.y,4*u.direction],[u.x,u.y,4*u.direction-4]),u.direction=b(u.direction-1);break;case"right":I([u.x,u.y,4*u.direction],[u.x,u.y,4*u.direction+4]),u.direction=b(u.direction+1)}var r=/block_id=([\s\S]*)/.exec(i);null!=r&&(i=r[1],E(i)),t(Sk.builtin.none.none$)}),800)})))})),e.isDone=new Sk.builtin.func((function(t,e){return Sk.builtin.pyCheckArgs("isDone",arguments,2,2),new Sk.misceval.promiseToSuspension(function(t){return new Promise((e=>{setTimeout((()=>{var i=/block_id=([\s\S]*)/.exec(t);null!=i&&(t=i[1],E(t)),E(t);var r=Sk.ffi.remapToPy(_());e(r)}),800)}))}(e).then((t=>Sk.ffi.remapToPy(t))))})),e.isPath=new Sk.builtin.func((function(t,e){return Sk.builtin.pyCheckArgs("isPath",arguments,2,2),Sk.builtin.pyCheckType("direction","string",Sk.builtin.checkString(e)),e=Sk.ffi.remapToJs(e),new Sk.misceval.promiseToSuspension(function(t,e){return new Promise((i=>{setTimeout((()=>{var r="",a=/block_id=([\s\S]*)/.exec(e);switch(null!=a&&(e=a[1],E(e)),E(e),t){case"left":r=x(t=3,null);break;case"right":r=x(t=1,null)}i(Sk.ffi.remapToPy(r))}),800)}))}(e,block_id).then((t=>Sk.ffi.remapToPy(t))))})),e.isBarrier=new Sk.builtin.func((function(t,e,i){return Sk.builtin.pyCheckArgs("isBarrier",arguments,3,3),Sk.builtin.pyCheckType("direction","number",Sk.builtin.checkNumber(e)),e=Sk.ffi.remapToJs(e),new Sk.misceval.promiseToSuspension(function(t,e){return new Promise((i=>{setTimeout((()=>{var c,l=0,s=/block_id=([\s\S]*)/.exec(e);switch(null!=s&&(e=s[1],E(e)),E(e),t){case a:l=r[u.y-1]?r[u.y-1][u.x]:0;break;case n:l=r[u.y][u.x+1]?r[u.y][u.x+1]:0;break;case o:l=r[u.y+1]?r[u.y+1][u.x]:0;break;case p:l=r[u.y][u.x-1]?r[u.y][u.x-1]:0}c=l==S.SquareType.BARRIER,i(Sk.ffi.remapToPy(c))}),800)}))}(e,i).then((t=>Sk.ffi.remapToPy(t))))})),e.randomOil=new Sk.builtin.func((function(t,e){return Sk.builtin.pyCheckArgs("randomOil",arguments,2,2),new Sk.misceval.promiseToSuspension(new Promise((function(t){Sk.setTimeout((function(){u.oil=Math.random()>.5?1:0,0==u.oil?i.append("image").attr("id","caroil").attr("x",k).attr("y",175).attr("width",k).attr("height",k).attr("xlink:href","../common/js/skulpt_mixcar/pic/none_oil.png"):1==u.oil&&i.append("image").attr("id","caroil").attr("x",k).attr("y",175).attr("width",k).attr("height",k).attr("xlink:href","../common/js/skulpt_mixcar/pic/full_oil.png");var r=/block_id=([\s\S]*)/.exec(e);null!=r&&(e=r[1],E(e)),t(Sk.builtin.none.none$)}),800)})))})),e.isOilFull=new Sk.builtin.func((function(t,e){return Sk.builtin.pyCheckArgs("isOilFull",arguments,2,2),new Sk.misceval.promiseToSuspension(function(t){return new Promise((e=>{setTimeout((()=>{var i=/block_id=([\s\S]*)/.exec(t);null!=i&&(t=i[1],E(t)),E(t),0==u.oil?e(Sk.ffi.remapToPy(!0)):1==u.oil&&e(Sk.ffi.remapToPy(!1))}),800)}))}(e).then((t=>Sk.ffi.remapToPy(t))))})),e.addOil=new Sk.builtin.func((function(t,e){return Sk.builtin.pyCheckArgs("addOil",arguments,2,2),new Sk.misceval.promiseToSuspension(new Promise((function(t){Sk.setTimeout((function(){i.append("image").attr("id","caroil").attr("x",k).attr("y",175).attr("width",k).attr("height",k).attr("xlink:href","../common/js/skulpt_mixcar/pic/full_oil.png"),u.oil=1;var r=/block_id=([\s\S]*)/.exec(e);null!=r&&(e=r[1],E(e)),t(Sk.builtin.none.none$)}),800)})))})),e.getPoint=new Sk.builtin.func((function(t,e){return Sk.builtin.pyCheckArgs("getPoint",arguments,2,2),new Sk.misceval.promiseToSuspension(function(t){return new Promise((e=>{setTimeout((()=>{var i=/block_id=([\s\S]*)/.exec(t);null!=i&&(t=i[1],E(t)),E(t);var r=u.coin_point;e(Sk.ffi.remapToPy(r))}),800)}))}(e).then((t=>Sk.ffi.remapToPy(t))))})),e.isLightGreen=new Sk.builtin.func((function(t,e){return Sk.builtin.pyCheckArgs("isLightGreen",arguments,2,2),new Sk.misceval.promiseToSuspension(function(t){return new Promise((e=>{setTimeout((()=>{var i=/block_id=([\s\S]*)/.exec(t);null!=i&&(t=i[1],E(t)),E(t),u.traffic_light==S.SquareType.LIGHT_GREEN?e(Sk.ffi.remapToPy(!0)):u.traffic_light==S.SquareType.LIGHT_RED&&e(Sk.ffi.remapToPy(!1))}),800)}))}(e).then((t=>Sk.ffi.remapToPy(t))))})),e.isCirculationRight=new Sk.builtin.func((function(t){return Sk.builtin.pyCheckArgs("isCirculationRight",arguments,1,1),new Sk.misceval.promiseToSuspension(new Promise((function(t){Sk.setTimeout((function(){var e=!1;switch(S.mlevel){case 5:e=3==u.circulation_num;break;case 7:if(u.traffic_light==S.SquareType.LIGHT_GREEN)e=!1;else if(u.traffic_light==S.SquareType.LIGHT_RED)for(var i=0;i<S.map.length;i++)for(var r=0;r<S.map[0].length;r++)S.map[i][r]==S.SquareType.LIGHT_RED&&(u.x+1!=r&&u.y!=i||(e=!0))}if(0==e)throw S.result=s,layer.alert("挑战失败,请检查循环次数是否正确!",{shade:!1}),new Sk.builtin.TypeError("挑战失败,请检查循环次数是否正确!");S.result=l,t(Sk.builtin.none.none$)}),800)})))})),e.isSuccess=new Sk.builtin.func((function(t){return Sk.builtin.pyCheckArgs("isSuccess",arguments,1,1),new Sk.misceval.promiseToSuspension(new Promise((function(t){var e=_();if(1==e)setTimeout((function(){layer.alert("挑战成功!",{shade:!1})}),1e3),t(Sk.builtin.none.none$);else if(0==e)throw S.result=s,layer.alert("挑战失败,请检查是否到达终点!",{shade:!1}),new Sk.builtin.TypeError("挑战失败,请检查是否到达终点!")})))}))}),"Actor");return e.settedMap=new Sk.builtin.func((function(t,e){return new Sk.misceval.promiseToSuspension(new Promise((function(i){Sk.setTimeout((function(){var a=/block_id=([\s\S]*)/.exec(e);null!=a&&(e=a[1],E(e)),t=Sk.ffi.remapToJs(t),S=T[t],r=T[t].map,d(),i(Sk.builtin.none.none$)}),800)})))})),e}; |