Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сколько надо стенок и каких, чтобы ходить по, лабиринту? Заполнение связных областей 
:(
    Опции темы
12345c
Дата 15.9.2006, 04:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



На мой взгляд, довольно сбалансированно получилось (числа 1.5 и 0.96). Определяют, что вероятности открытых площадок, ограниченных слева и снизу, соотносятся как 4:100:50 .

Код
<b>Генерация лабиринта.</b> Обновление создаёт новое расположение стен.<br>
<style>.l0,.l1,.l2,.l3
  {border:1px solid white;font-size:10px;width:14px;height:14px;}
.l1{border-right-color:black}
.l2{border-bottom-color:black;}
.l3{border-bottom-color:black;border-right-color:black}
td{color:#bbbbbb}
</style>
<script>
d=document;
genLab=function(){
nx=((d.all?d.body.clientWidth:innerWidth)-30)/14;
ny=((d.all?d.body.clientHeight:innerHeight)-80)/14;
s='<table cellspacing=0 cellpadding=0 style="border:1px solid black;'
  +'border-bottom-width:0;border-right-width:0">';
for(i=0;i<ny;i++){s+='<tr>';
  for(j=0;j<nx;j++){
    s+='<td><div class=l'+(k=Math.floor((Math.random()*1.5)+0.96))+'>&nbsp;</div></td>';
  }s+='</tr>';
}s+='</table>';
d.getElementById('d1').innerHTML=(d.all?'':'<style>.l0,.l1,.l2,.l3{width:12px;height:12px;}</style>')+s;}
onload=genLab;
</script><div id=d1></div>
Демо:
http://js2.ru/example/JsPrimeryCode-96.htm

Это сообщение отредактировал(а) 12345c - 3.3.2008, 13:59


--------------------
Google Code Playground - онлайн-отладка своих примеров HTML+JS без регистрации, с сохранением по URL, без кириллицы. Go
PM WWW   Вверх
GIK
Дата 16.9.2006, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 6
Всего: 14



Офигеть!!! Сам придумал?



--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
12345c
Дата 16.9.2006, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



С подачи идеи Aliance - http://forum.vingrad.ru/index.php?showtopic=110566 - "Библиотека для создания карты лабиринта"
PM WWW   Вверх
Aliance
Дата 17.9.2006, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



12345c, мозг ) А я сперва подумал, что ты нечайно тему создал, вместо ответа в моей smile
Зачот!
PM MAIL WWW ICQ Skype   Вверх
12345c
Дата 20.9.2006, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



Следующее действие - выделение связных областей лабиринта. 

Код
Лабиринт представляет собой массив <i>ny</i> на 
<i>nx</i> клеток, стенки в которых описываются числами от 0 до 3.<br>
0 - нет нижней и правой стенок;<br>
1 - есть правая стенка, нет нижней;<br>
2 - есть нижняя, нет правой;<br>
3 - есть нижняя и правая.<br>
Наличие верхних и левых стенок описывается в смежных клетках. 
За пределами массива клеток стенки имеются.<br>
<br>
Обход лабиринта.<br>
Задача состоит в закрашивании всех смежных областей лабиринта 
однотонными цветами  так, чтобы цвета за стенками были иными.<br>
<br>

На  этом этапе сделано закрашивание одной области одним цветом. Вывод замедлен, чтобы наблюдать процесс и для того, чтобы при очень долгой операции можно было прекратить выполнение.
Интересно, что быстродействие IE раза в 4 мелленнее на прорисовке фона таблицы, чем в Опере и FF. В последующем надо уменьшить размеры таблицы в зависимости от быстродействия, но пока это непринципиально.

Надо ли приводить код? Все равно, тот, кому надо, легко посмотрит его через демо.
http://js2.ru/example/JsPrimeryCode-96a.htm

Это сообщение отредактировал(а) 12345c - 3.3.2008, 14:01


--------------------
Google Code Playground - онлайн-отладка своих примеров HTML+JS без регистрации, с сохранением по URL, без кириллицы. Go
PM WWW   Вверх
Aliance
Дата 20.9.2006, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



А будет ли ‘шаг 3’, удоволетворяющим моим потребностям?  smile 
PM MAIL WWW ICQ Skype   Вверх
12345c
Дата 21.9.2006, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



Шаг 3 будет другой - многоцветные области, алгоритм на странице описан.
Управление тебе нужно на событиях; перемещение я сделал - hod(), повороты делаются аналогично.

Добавлено @ 00:59 
Код
hod=function(n){//if(!confirm([i,j,n]))return 1
  i2=i+(n==3?-1:(n==1?1:0));  j2=j+(n==0?-1:(n==2?1:0));  //попытка хода
  if(i2<0||i2>=ny||j2<0||j2>=nx)return -1;  //край
  if(n==0&&aL[i2][j2]%2==1 || n==1&&aL[i][j]>1 || n==2&&aL[i][j]%2==1 || n==3&&aL[i2][j2]>1)return -1;  //стенка
  if(aM[i2][j2]&&aM[i2][j2]==1)return -1;  //пройденное поле
  return 0;  //проход
}

Шаг с параметром 0 - влево;
с параметром 1 - вниз;
с параметром 2 - вправо;
с параметром 3 - вверх.
PM WWW   Вверх
GIK
Дата 23.9.2006, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 6
Всего: 14



++ smile 


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1027 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.