Code viewer for World: Cloned ca318 copy Complex ...

// Cloned by Lazarus on 19 Nov 2018 from World "ca318 copy Complex World" by test3 
// Please leave this clone trail here.
 
AB.clockTick=30,AB.maxSteps=1e3,AB.screenshotStep=50;const show3d=!0,TEXTURE_WALL="/uploads/starter/door.jpg",TEXTURE_MAZE="/uploads/test3/sponge.jpg",TEXTURE_AGENT="/uploads/starter/pacman.jpg",TEXTURE_ENEMY="/uploads/test3/sponge.jpg",MUSIC_BACK="/uploads/starter/Defense.Line.mp3",SOUND_ALARM="/uploads/starter/air.horn.mp3",gridsize=50,NOBOXES=Math.trunc(gridsize*gridsize/10),squaresize=100,MAXPOS=gridsize*squaresize,SKYCOLOR=14548957,startRadiusConst=.8*MAXPOS,skyboxConst=3*MAXPOS,maxRadiusConst=10*MAXPOS;ABHandler.MAXCAMERAPOS=skyboxConst/2,ABHandler.GROUNDZERO=!0;const SKYBOX_ARRAY=["/uploads/starter/dawnmountain-xpos.png","/uploads/starter/dawnmountain-xneg.png","/uploads/starter/dawnmountain-ypos.png","/uploads/starter/dawnmountain-yneg.png","/uploads/starter/dawnmountain-zpos.png","/uploads/starter/dawnmountain-zneg.png"],ACTION_LEFT=0,ACTION_RIGHT=1,ACTION_UP=2,ACTION_DOWN=3,ACTION_STAYSTILL=4,GRID_BLANK=0,GRID_WALL=1,GRID_MAZE=2;function World(){var e,n,a,t,r,o,s,i,d,u,E,A,R,c=new Array(gridsize),T=new Array(6),B=this;function p(e){(new THREE.TextureLoader).load(SKYBOX_ARRAY[e],function(n){n.minFilter=THREE.LinearFilter,T[e]=n,l()&&w()})}function l(){for(var e=0;e<6;e++)if(!T[e])return!1;return!!(t&&r&&o&&s)}function m(e,n){return i==e&&d==n||(u==e&&E==n||(c[e][n]==GRID_WALL||c[e][n]==GRID_MAZE))}function M(e,n){var a=new THREE.Vector3;return a.y=0,a.x=e*squaresize-MAXPOS/2,a.z=n*squaresize-MAXPOS/2,a}function w(){var A,R,B,p;for(A=0;A<gridsize;A++)c[A]=new Array(gridsize);for(A=0;A<gridsize;A++)for(R=0;R<gridsize;R++)0==A||A==gridsize-1||0==R||R==gridsize-1?(c[A][R]=GRID_WALL,B=new THREE.BoxGeometry(squaresize,e,squaresize),(p=new THREE.Mesh(B)).material=new THREE.MeshBasicMaterial({map:t}),p.position.copy(M(A,R)),ABWorld.scene.add(p)):c[A][R]=GRID_BLANK;for(var l=1;l<=NOBOXES;l++)A=AB.randomIntAtoB(1,gridsize-2),R=AB.randomIntAtoB(1,gridsize-2),c[A][R]=GRID_MAZE,B=new THREE.BoxGeometry(squaresize,e,squaresize),(p=new THREE.Mesh(B)).material=new THREE.MeshBasicMaterial({map:s}),p.position.copy(M(A,R)),ABWorld.scene.add(p);do{A=AB.randomIntAtoB(1,gridsize-2),R=AB.randomIntAtoB(1,gridsize-2)}while(m(A,R));i=A,d=R,B=new THREE.BoxGeometry(squaresize,e,squaresize),(a=new THREE.Mesh(B)).material=new THREE.MeshBasicMaterial({map:o}),ABWorld.scene.add(a),g();do{A=AB.randomIntAtoB(1,gridsize-2),R=AB.randomIntAtoB(1,gridsize-2)}while(m(A,R));u=A,E=R,B=new THREE.BoxGeometry(squaresize,e,squaresize),(n=new THREE.Mesh(B)).material=new THREE.MeshBasicMaterial({map:r}),ABWorld.scene.add(n),H();var w=[new THREE.MeshBasicMaterial({map:T[0],side:THREE.BackSide}),new THREE.MeshBasicMaterial({map:T[1],side:THREE.BackSide}),new THREE.MeshBasicMaterial({map:T[2],side:THREE.BackSide}),new THREE.MeshBasicMaterial({map:T[3],side:THREE.BackSide}),new THREE.MeshBasicMaterial({map:T[4],side:THREE.BackSide}),new THREE.MeshBasicMaterial({map:T[5],side:THREE.BackSide})],f=new THREE.CubeGeometry(skyboxConst,skyboxConst,skyboxConst),O=new THREE.MeshFaceMaterial(w),_=new THREE.Mesh(f,O);ABWorld.scene.add(_),ABWorld.render(),AB.removeLoading(),ABRun.runReady=!0}function g(){a.position.copy(M(i,d)),ABWorld.lookat.copy(a.position)}function H(){n.position.copy(M(u,E)),ABWorld.follow.copy(n.position)}function f(e){var n=u,a=E;e==ACTION_LEFT?n--:e==ACTION_RIGHT?n++:e==ACTION_UP?a++:e==ACTION_DOWN&&a--,m(n,a)||(u=n,E=a)}var O=[37,38,39,40];function _(e){return!ABRun.runReady||(!function(e){return O.includes(e.keyCode)}(e)||(37==e.keyCode&&f(ACTION_LEFT),38==e.keyCode&&f(ACTION_DOWN),39==e.keyCode&&f(ACTION_RIGHT),40==e.keyCode&&f(ACTION_UP),e.stopPropagation(),e.preventDefault(),!1))}this.newRun=function(){AB.loadingScreen(),ABRun.runReady=!1,A=0,R=0,show3d?(e=squaresize,ABWorld.init3d(startRadiusConst,maxRadiusConst,SKYCOLOR)):(e=1,ABWorld.init2d(startRadiusConst,maxRadiusConst,SKYCOLOR)),function(){var e=new THREE.TextureLoader,n=new THREE.TextureLoader,a=new THREE.TextureLoader,i=new THREE.TextureLoader;e.load(TEXTURE_WALL,function(e){e.minFilter=THREE.LinearFilter,t=e,l()&&w()}),n.load(TEXTURE_AGENT,function(e){e.minFilter=THREE.LinearFilter,r=e,l()&&w()}),a.load(TEXTURE_ENEMY,function(e){e.minFilter=THREE.LinearFilter,o=e,l()&&w()}),i.load(TEXTURE_MAZE,function(e){e.minFilter=THREE.LinearFilter,s=e,l()&&w()});for(var d=0;d<6;d++)p(d)}(),initMusic(),document.onkeydown=_},this.getState=function(){return[u,E,i,d]},this.takeAction=function(e){var n,a,t,r,o;!function(e){var n=B.getState(),a=" Step: "+ABRun.step+" &nbsp; x = ("+n.toString()+")  &nbsp; a = ("+e+") ";$("#user_span1").html(a)}(e),f(e),ABRun.step%2==0&&(i<u&&(n=AB.randomIntAtoB(i,i+1)),i==u&&(n=i),i>u&&(n=AB.randomIntAtoB(i-1,i)),d<E&&(a=AB.randomIntAtoB(d,d+1)),d==E&&(a=d),d>E&&(a=AB.randomIntAtoB(d-1,d)),m(n,a)||(i=n,d=a)),Math.abs(i-u)<2&&Math.abs(d-E)<2?A++:R++,H(),g(),t=B.getState(),r=R/ABRun.step*100,o=" &nbsp; y = ("+t.toString()+")  <BR> Bad steps: "+A+" &nbsp; Good steps: "+R+" &nbsp; Score: "+r.toFixed(2)+"% ",$("#user_span2").html(o),m(u-1,E)&&m(u+1,E)&&m(u,E+1)&&m(u,E-1)&&(ABRun.abortRun=!0,R=0,musicPause(),soundAlarm())},this.endRun=function(){musicPause(),ABRun.abortRun?$("#user_span3").html(" <br> <font color=red> <B> Agent trapped. Final score zero. </B> </font>   "):$("#user_span3").html(" <br> <font color=green> <B> Run over. </B> </font>   ")},this.getScore=function(){var e=R/AB.maxSteps*100;return Math.round(100*e)/100}}var backmusic=new Audio(MUSIC_BACK);function initMusic(){backmusic.loop=!0,backmusic.play(),AB.standardAudioButtons(backmusic)}function musicPlay(){backmusic.play()}function musicPause(){backmusic.pause()}function soundAlarm(){new Audio(SOUND_ALARM).play()}