AB.maxSteps =100;
AB.screenshotStep =50;// AB has its own timer separate to the draw timer.
AB.drawRunControls =false;const OBJECTSIZE =150;// Size of objects const CMOVESTEP =10;// How much to move each step const RMOVESTEP =10;// How much to move each step const CLOSE_DISTANCE = OBJECTSIZE /2;// Get a point if this close const ACTION_LEFT =0;const ACTION_RIGHT =1;const ACTION_UP =2;const ACTION_DOWN =3;const ACTION_STAYSTILL =4;var tmp = getRandomInt(14);
let array =['red','yellow','green','blue','brown','purple','pink','orange','lime','navy','grey','silver','olive','aqua'];var fullwidth =ABWorld.fullwidth();var fullheight =ABWorld.fullheight();// global variables:var chase, run;// direction for chaser and chased to movevar x, y;// position of moving objectvar tx, ty;// position of target objectfunction preload(){
images = loadImage('/uploads/alexmurphy1996/JohnTravolta.png');
chaser = loadImage('/uploads/alexmurphy1996/Sam.L.Jackson.png');
song = loadSound('uploads/alexmurphy1996/SayWhatAgain.mp3');}function setup(){
createCanvas ( fullwidth, fullheight );
background(array[tmp]);// set objects start position
reset();}function reset()// set the two objects to random positions within canvas // i.e. center should not be in 0 to max // but rather in OBJECTSIZE to max-OBJECTSIZE{
x = AB.randomIntAtoB ( OBJECTSIZE, fullwidth - OBJECTSIZE );
y = AB.randomIntAtoB ( OBJECTSIZE, fullheight - OBJECTSIZE );
tx = AB.randomIntAtoB ( OBJECTSIZE, fullwidth - OBJECTSIZE );
ty = AB.randomIntAtoB ( OBJECTSIZE, fullheight - OBJECTSIZE );}function draw(){
chasing();}function chasing(){var old =[ x, y, tx, ty ];if( AB.randomBoolean())// randomly choose to track target x or y each step {if( x < tx ){
chase = ACTION_RIGHT;if((tx+CMOVESTEP)<(fullwidth-OBJECTSIZE)){
run = ACTION_RIGHT;}else{if((ty-CMOVESTEP)>0){
run = ACTION_UP;}else{
run = ACTION_LEFT
}}}else{
chase = ACTION_LEFT;if(tx-CMOVESTEP>0){
run = ACTION_LEFT;}else{if((ty+CMOVESTEP)<(fullheight-OBJECTSIZE)){
run = ACTION_DOWN;}else{
run = ACTION_RIGHT
}}}}else{if( y < ty ){
chase = ACTION_DOWN;if((ty+CMOVESTEP)<(fullheight-OBJECTSIZE)){
run = ACTION_DOWN;}else{if(tx-CMOVESTEP>0){
run = ACTION_LEFT;}else{
run = ACTION_UP
}}}else{
chase = ACTION_UP;if((ty-CMOVESTEP)>0){
run = ACTION_UP;}else{if((tx+CMOVESTEP)<(fullwidth-OBJECTSIZE)){
run = ACTION_RIGHT;}else{
run = ACTION_DOWN
}}}}// restore global variables from array, in case Mind changed them:
x = old[0];
y = old[1];
tx = old[2];
ty = old[3];// Mind can maybe cheat another way. No guarantees. See discussion: // https://ancientbrain.com/fake.scores.php// --- end of call Mind --------------------------------------if( chase == ACTION_LEFT ) x = x - CMOVESTEP ;elseif( chase == ACTION_RIGHT ) x = x + CMOVESTEP ;elseif( chase == ACTION_UP ) y = y - CMOVESTEP ;elseif( chase == ACTION_DOWN ) y = y + CMOVESTEP ;if( run == ACTION_LEFT ) tx = tx - RMOVESTEP ;elseif( run == ACTION_RIGHT ) tx = tx + RMOVESTEP ;elseif( run == ACTION_UP ) ty = ty - RMOVESTEP ;elseif( run == ACTION_DOWN ) ty = ty + RMOVESTEP ;// clear background:
background(array[tmp]);// draw target object:
image ( images, tx, ty, OBJECTSIZE, OBJECTSIZE );// draw moving object:
image ( chaser, x, y, OBJECTSIZE, OBJECTSIZE );if( AB.distance2D ( x, y, tx, ty )< CLOSE_DISTANCE ){
background(0);
image ( chaser,0,0, fullwidth, fullheight );
song.play();if(song.isPlaying()){
noLoop();}else{
loop();
reset();}}}function getRandomInt(max){returnMath.floor(Math.random()*Math.floor(max));}// --- when re-size page, re-size canvas ----------------------------------------function reSize(){
resizeCanvas ( fullwidth, fullheight );
background ( SKYCOLOR );}if( AB.onDesktop()) window.addEventListener ("resize",function(){ reSize();});else window.addEventListener ("orientationchange",function(){ reSize();});