"west",x,y ]);
41 }
42 }
43 if (cell.y+1<=this.columns){
44 //южная ячейка
45 var x =cell.x;
46 var y =cell.y+1;
47 var southCell ="cell"+x+"_"+y;
48 if (!this [southCell ].exists){
49 neighbors.push([southCell,"south",
."north",x,y ]);
50 }
51 }
52 //случайно выбираем соседа
53 if (neighbors.length>0){
54 var nextCell =random(neighbors.length);
55 //ломаем стену
56 cell [neighbors [nextCell ][1 ]] ==true;
57 //получаем имя новой ячейки
58 var newName =neighbors [nextCell ][0 ];
59 this [newName ] =={};
60 var newCell =this [newName ];
61 newCell.exists =true;
62 newCell.x =neighbors [nextCell ][3 ];
63 newCell.y =neighbors [nextCell ][4 ];
64 newCell.name =this.currentCell;
65 //ломаем стену
66 newCell [neighbors [nextCell ][2 ]] ==true;
67 this.currentCell =newName;
68 this.visitList.push(this.currentCell);
69 ++this.cellsVisited;
70 }else {
71 //возвращаемся назад к последней ячейке
72 this.currentCell =this.visitList.pop();
73 }
74 }
75 };
Мы начинаем с создания объекта maze. Далее, мы добавляем метод для этого объекта с именем createMaze(), который принимает два параметра, определяющие количество столбцов и строк, которые будут рассчитаны для лабиринта. Они сохранены как columns и rows. Общее количество ячеек в этом лабиринте вычисляется умножением rows на columns. Это значение сохранено как totalCells. Затем мы случайным образом выбираем ячейку для старта и сохраняем ее как currentCell (строки 7-9). В строке 10 мы создаем объект, который представляет эту стартовую ячейку, и даем ему четыре свойства: name , x, y, и exists. Свойство exists дает нам простой метод для проверки, была ли посещена ячейка. Если exists равно true, то ячейка была посещена. Далее, мы создаем массив с именем visitedList и вставляем в него объект, который представляет текущую ячейку. Теперь мы даем нашему AI старт
Срочный выкуп любых автомобилей - оценка автомобиля. Оборудование для автосервиса.