Показать сообщение отдельно
  #8 (permalink)  
Старый 30.06.2010, 18:42
Кандидат Javascript-наук
Отправить личное сообщение для lammeR Посмотреть профиль Найти все сообщения от lammeR
 
Регистрация: 15.01.2010
Сообщений: 138

Вот получилось, но из-за какой-то ошибки не работает:
var size_row=10;
var size_col=10;
var Ni=0; //номер итерации
var Nk=300; //max кол-во итераций
var y=-1; //точка проходимости
var n=-2; //точка непроходимости
var s=0; //точка старта
var e=254; //точка финиша
var i,j;
var maze=new Array(
	new Array(s,y,y,y,y,y,y,y,n,n),
	new Array(n,y,n,n,n,y,y,y,n,n),
	new Array(y,y,n,n,n,y,n,y,n,n),
	new Array(y,n,n,y,y,y,n,y,n,n),
	new Array(y,y,y,n,n,n,n,y,n,n),
	new Array(n,n,n,n,n,n,n,y,n,n),
	new Array(n,n,n,n,n,n,n,y,n,n),
	new Array(n,n,n,n,n,n,n,y,n,n),
	new Array(n,n,n,n,n,n,n,y,n,n),
	new Array(n,n,n,n,n,n,n,y,y,e)
);


function waveSearch()
{
	
	/*волновой алгоритм*/
	while (Ni < Nk)
	{
	   for (i=0; i < size_row; i++)
	   {
		 for (j=0; j < size_col; j++)
		 /*запуск волны*/
		 if (maze[i][j]==Ni)
		 {
			 if (maze[i][j+1]==-1)maze[i][j+1]=Ni+1;
			 if (maze[i][j-1]==-1)maze[i][j-1]=Ni+1;
			 if (maze[i+1][j]==-1)maze[i+1][j]=Ni+1;
			 if (maze[i-1][j]==-1)maze[i-1][j]=Ni+1;
			 if ((maze[i+1][j]==-2) || (maze[i-1][j]==-2) || (maze[i][j+1]==-2) || (maze[i][j-1]==-2))
			 {
			   
			  // return 0;
			   break;
			 }
		  }
	   }
	Ni++;
	}
	 //вывод массива на экран
	 for(var i=0;i<size_row;i++)
	   {
	   		
			for(var j=0;j<size_col;j++)
			{
				document.write("<span style='width:20px; float:left;'>"+ maze[i][j] +" </span>");
			}
			document.write("<br/>");
	   }
}
waveSearch();
Ответить с цитированием