Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var current_x=0;
- var current_y=0;
- var final_x=4;
- var final_y=4;
- var grid_size=5;
- var walkable_array=[
- [0,0,0,0,0],
- [1,1,1,1,0],
- [0,0,0,0,0],
- [0,0,0,0,0],
- [0,0,0,0,0]
- ];
- for(var k=0;k<grid_size;k++){
- if(walkable_array[k]==undefined){
- walkable_array[k]=[];
- }
- }
- for(k=0;k<grid_size;k++){
- for(var l=0;l<grid_size;l++){
- if(walkable_array[k][l]==undefined){
- walkable_array[k][l]=[];
- }
- }
- }
- for(var i=0;i<grid_size;i++){
- for(var j=0;j<grid_size;j++){
- var square_var:MovieClip=new MovieClip();
- stage.addChild(square_var);
- square_var.graphics.lineStyle(1,0x000000);
- square_var.graphics.drawRect(0,0,50,50);
- square_var.x=j*square_var.width;
- square_var.y=i*square_var.height;
- square_var.name=j+"_"+i;
- }
- }
- stage.addEventListener(MouseEvent.MOUSE_DOWN,md);
- function md(e:*){
- astar(current_x,current_y,final_x,final_y);
- }
- var astar_obj={};
- var astar_arr=[];
- var used_data={};
- var current_object;
- var object_number=0;
- function astar(current_x,current_y,final_x,final_y){
- num=0;
- delete used_data[object_number];
- delete astar_obj[object_number];
- astar_arr=[];
- object_number++;
- astar_obj[object_number]={};
- used_data[object_number]={};
- astar_arr[astar_arr.length]=astar_obj[object_number][current_x+"_"+current_y]={x:current_x,y:current_y,prev_x:current_x,prev_y:current_y};
- for(var i=0;i<astar_arr.length;i++){
- var current_object=astar_arr[i];
- searchProcess(current_object,current_object.x+1,current_object.y);
- searchProcess(current_object,current_object.x,current_object.y+1);
- searchProcess(current_object,current_object.x-1,current_object.y);
- searchProcess(current_object,current_object.x,current_object.y-1);
- }
- }
- var num=0;
- var distance_limit=100;
- function searchProcess(a,b,c){
- num++;
- if(b>-1&&c>-1&&used_data[object_number][b+"_"+c]==undefined){
- used_data[object_number][b+"_"+c]=false;
- num--;
- num++;
- }
- if(b>-1&&c>-1&&b<grid_size&&c<grid_size&&walkable_array[b][c]==0&&used_data[object_number][b+"_"+c]==false&&distanceChecker(b,current_x)<=distance_limit &&distanceChecker(c,current_y)<=distance_limit){
- used_data[object_number][b+"_"+c]=true;
- astar_arr[astar_arr.length]=astar_obj[object_number][(b)+"_"+(c)]={x:b,y:c,prev_x:a.x,prev_y:a.y};
- num--;
- num++;
- if(final_x==b&&final_y==c){
- num--;
- var temp_x=b;
- var temp_y=c;
- var astar_direction=[];
- while(temp_x!=current_x||temp_y!=current_y){
- num++;
- var temp_x_2=astar_obj[object_number][(temp_x)+"_"+(temp_y)].prev_x;
- var temp_y_2=astar_obj[object_number][(temp_x)+"_"+(temp_y)].prev_y;
- temp_x=temp_x_2;
- temp_y=temp_y_2;
- astar_direction.push(astar_obj[object_number][(temp_x)+"_"+(temp_y)].x);
- astar_direction.push(astar_obj[object_number][(temp_x)+"_"+(temp_y)].y);
- }
- trace(astar_direction);
- }
- }
- }
- function distanceChecker(a,b){
- if(a>b){
- return a-b;
- }else{
- return b-a;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement