English Version            Русская версия

 [ Разделы сервера ]  [ Карта сервера ]  [ Новости сервера ] [ Обратная связь ]



"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 старт
Срочный выкуп любых автомобилей - оценка автомобиля. Оборудование для автосервиса.
Hosted by uCoz