View difference between Paste ID: 8q86BZLU and asCW3cw6
SHOW: | | - or go back to the newest paste.
 1 - // start by creating a array the same size as the map (or a field in the map udt) 1 + // start by creating an array the same size as the map (or a field in the map udt) . I'm assuming here the map is 32x32. 2 3 int pathing[32,32]; 4 5 - //create a counter c initialised to zero. 5 + 6 - int c = 0; 6 + // create a doneflag to record when a search pass didn't do anthing. initialise to zero to make a first pass. 7 int doneflag = 0; 8 - // create a flag to record when a search pass didn't do anthing. initialise to zero to make a first pass. 8 + 9 - int flag = 0; 9 + 10 for(x=0; x<32; x++) { 11 for(y=0; y<32; y++) { 12 pathing[x,y] = 256; 13 } 14 } 15 16 // set the element where the player is to 0. 17 pathing[player.x, player.y] = 0; 18 - // set the element where the player is to c. 18 + 19 - pathing[player.x, player.y] = c; 19 + 20 while (doneflag == 0) 21 22 - while (flag == 0) 22 + // set a doneflag to 1 to say we are done. 23 doneflag = 1; 24 - // set a flag to 1 to say we are done. 24 + 25 - flag = 1; 25 + 26 for(x=0; x<32; x++) { 27 for(y=0; y<32; y++) { 28 29 30 // if you find an element with value < 256 then look at four neighbours. if any of those is a floor tile, AND has value 256 then set it equal to value+1. 31 32 - // if you find an element with value = c then look at four neighbours. if any of those is a floor tile, AND has value 256 then set it equal to counter value+1. 32 + if(pathing[x,y] < 256) { 33 if(pathing[x-1,y] == 256 && map[x-1,y] == floor) {pathing[x-1,y]=pathing[x,y]+1; doneflag=0;} 34 - if(pathing[x,y] == c) { 34 + if(pathing[x+1,y] == 256 && map[x+1,y] == floor) {pathing[x+1,y]=pathing[x,y]+1; doneflag=0;} 35 - if(pathing[x-1,y] == 256 && map[x-1,y] == floor) {pathing[x-1,y]=c+1; flag=0;} 35 + if(pathing[x,y-1] == 256 && map[x,y-1] == floor) {pathing[x,y-1]=pathing[x,y]+1; doneflag=0;} 36 - if(pathing[x+1,y] == 256 && map[x+1,y] == floor) {pathing[x+1,y]=c+1; flag=0;} 36 + if(pathing[x,y+1] == 256 && map[x,y+1] == floor) {pathing[x,y+1]=pathing[x,y]+1; doneflag=0;} 37 - if(pathing[x,y-1] == 256 && map[x,y-1] == floor) {pathing[x,y-1]=c+1; flag=0;} 37 + 38 - if(pathing[x,y+1] == 256 && map[x,y+1] == floor) {pathing[x,y+1]=c+1; flag=0;} 38 + 39 // close the double loop 40 } 41 } 42 43 //close while 44 }