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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Библиотека для создания карты лабиринта 
:(
    Опции темы
Aliance
Дата 4.9.2006, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


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

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



Доброго всем времени суток! Планирую написать довольно нехилый ресурс: карта лабиринта для моего проекта.
Суть лабиринта такова: имеется некое 2D помещение (плоское), состоящее из клеток (квадратов). Характеристики квадратов такие: либо квадрат это черное пятно (стенка, пустота), либо это часть дороги. В последнем случае у него есть до 3 стен, на нем может быть персонаж, либо предмет, а может и не быть. Стенка так же имеет две характеристики: она может быть классической стенкой - через нее нельзя пройти, а может быть стенкой-проходом, пускающем только в 1 направлении. На карте она должны отличаться рисунком, либо цветом (смотря как будет сделано).
Лабиринты бывают 5 видов, для каждого вида по 2-5 уровней. Все это нужно прорисовать, можно конечно прорисовать в ручную с помощью таблиц, но хочется сделать на JS. Собственно, хочу услышать ваши идеи по коду и алгоритмизации задачи.
Думаю, сценарий должен, исходя из полученных данных, рисовать таблицу с соответствующими квадратами и цветами.
PM MAIL WWW ICQ Skype   Вверх
Sardar
Дата 5.9.2006, 01:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



В чём проблема? Если лабиринт не большой, то его вполне можно представить массивом чисел, где каждое будет отвечать за свой тип ячейки. Генерить таблицу, затем оборачивать в обьект Board, который будет отслеживать состояния вещей Item (всё что угодно) в лабиринте. Ну а дальше операции исходя из логики, пока не ясно что это, подсказать не могу.

За место массива ячеек можно пользовать список отрезков, ими "рисовать" по доске, компактно если лабиринт огромен.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Aliance
Дата 5.9.2006, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


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

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



А по конкретнее? Для меня всегда была самойб ольшой проблемой - это продумывание скрипта. Само написание проблем не составляет, а вот прийти в наиболее рациональному скрипту - проблема.
Под массивом чисел ты что имел ввиду? Может более уместным будет объект? Даже несколько?
Вот пример карты, сделанной конкурентами: http://www.darkclan.ru/cgi/lib.pl?p=underground
Но хочу сказать сразу - я не принимаю плагиат, поэтому даже в исходники их не смотрел.
PM MAIL WWW ICQ Skype   Вверх
Sardar
Дата 6.9.2006, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Вообще начинают с логики, с самой задачи, т.е. у тебя это будет игрушка, вероятно будут какие то фишки бегать по лабиринту, начни с их определения. В конечном итоге всё равно придёшь к построению самой доски и к реализаии передвижения народа в лабиринте. С первым помочь не могу, т.к. только ты знаешь что это будет. Со вторым подумаем.

Есть поле, его надо отрисовать. Рисовать проще в таблице, всё равно всё клетками. В простейшем случае представим лабиринт растровым изображением, где каждая клетка это одна точка, получим картинку типа:

Код
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Board test</title>
<style type="text/css">
table.board {
   border: 1px solid #ccc;
}
td.empty {
   background-color: #555;
   width: 30px;
   height: 30px;
}
td.wall {
   background-color: orange;
   width: 30px;
   height: 30px;
}
</style>
</head>
<body onload="build()">
<script type="text/javascript">
//рисуем простейшую достку с двумя типами клеток

var width = 7; //число колонок в таблице
var board = [ //собстно сама таблица
0, 0 , 0, 0, 0, 0, 0,
1, 1, 0, 0, 1, 1 , 1,
0, 1, 0, 0, 1, 0 , 0,
0, 1, 0, 0, 1, 0 , 0,
0, 1, 1, 1, 1, 0 , 0,
0, 0 , 0, 0, 0, 0, 0
];
var btypes = ["empty", "wall"]; //типы клеток

function build() {
  var b = document.createElement("table");
  b.className = "board";
  b.setAttribute("cellspacing", "1");
  //строим доску клекта за клеткой
  for(var i =0; i < board.length/ width; i++) {
    var row = b.insertRow(i);
    for(var j=0; j < width; j++) {
      var cell = row.insertCell(j);
      cell.className = btypes[board[i*width + j]];
    }
  }
  document.body.appendChild(b);
}

</script>
</body>
</html>


Далее вешаем на клетки базовый функционал, например place(obj), который будут юзать все остальные что бы поставить себя в конкретную клетку. Как положить вёрстку в клетку думаю ясно.

Это всё базовый (никому не видные) код выполняющий собственно саму работу по отрисовке. По верх ложиться нормальная логика, что бы можно было писать:

Код
character.onCollision = function(obj) {
  if(this.who_can_eat_me.contains(obj)) this.die("You are eaten!");
  .....
}

//-------
character.move("left"); //сдвинуться на клетку влево, например если нажали на клаве кнопку
//если там был кто то, кто может нас "захавать" (например ловушка), то гибнем

[/code]

P.S. а в чём сложности так и не понял smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Aliance
Дата 12.9.2006, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


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

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



Огромное спасибо, что подсказал мыслю smile
Вот что получается пока: http://test.morgenshtern.com/dungeon.html
Есть много задумок еще, доделаю завтра.

У меня вопрос по верстке, котора мне не совсем как родная - как сделать, чтобы в ИЕ лабиринт отображался так же, как и в Лисе? Тоесть без промежутков между ячейками? Такое ощущение, что ИЕ игнорирует эти строки:
Код

  b.setAttribute("cellspacing", "0");
  b.setAttribute("cellpadding", "0");


Это сообщение отредактировал(а) Aliance - 12.9.2006, 23:01
PM MAIL WWW ICQ Skype   Вверх
Sardar
Дата 13.9.2006, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



У самих ячеек задай margin: 0px; padding: 0px


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Aliance
Дата 14.9.2006, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


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

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



Чего-то я не понимаю. В Лисе все работает на ура, да и верстка как надо: http://test.morgenshtern.com/dungeon.html
Но в ИЕ пишет ошибку, мол свойство не объявлено - хотя все свойства объявлены явно!
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Board test</title>
<style type="text/css">
table.board {
   border: 1px solid #ccc;
   margin: 0px;
   padding: 0px;
}
td img {
   vertical-align: middle;
}
td {
   margin: 0px;
   padding: 0px;
}
td.empty {
   background-color: #55627A;
   width: 50px;
   height: 50px;
}
/* #1 */
td.wall_bottom {
   background-color: #fff;
   width: 50px;
   height: 50px;
   border-bottom: 1px solid #000;
}
/* #2 */
td.wall_right_left {
   background-color: #fff;
   width: 50px;
   height: 50px;
   border-left: 1px solid #000;
   border-right: 1px solid #000;
}
/* #3 */
td.wall_right_left_bottom {
   background-color: #fff;
   width: 50px;
   height: 50px;
   border-left: 1px solid #000;
   border-right: 1px solid #000;
   border-bottom: 1px solid #000;
}
/* #4 */
td.wall_left_bottom {
   background-color: #fff;
   width: 50px;
   height: 50px;
   border-left: 1px solid #000;
   border-bottom: 1px solid #000;
}
/* #5 */
td.wall_left_top {
   background-color: #fff;
   width: 50px;
   height: 50px;
   border-left: 1px solid #000;
   border-top: 1px solid #000;
}
/* #6 */
td.wall_left {
   background-color: #fff;
   width: 50px;
   height: 50px;
   border-left: 1px solid #000;
}
/* #7 */
td.wall_left_top_bottom {
   background-color: #fff;
   width: 50px;
   height: 50px;
   border-left: 1px solid #000;
   border-top: 1px solid #000;
   border-bottom: 1px solid #000;
}
/* #8 */
td.wall_top {
   background-color: #fff;
   width: 50px;
   height: 50px;
   border-top: 1px solid #000;
}
/* #9 */
td.wall_right_top_bottom {
   background-color: #fff;
   width: 50px;
   height: 50px;
   border-top: 1px solid #000;
   border-right: 1px solid #000;
   border-bottom: 1px solid #000;
}
/* #10 */
td.wall_right_bottom {
   background-color: #fff;
   width: 50px;
   height: 50px;
   border-right: 1px solid #000;
   border-bottom: 1px solid #000;
}
/* #11 */
td.wall_right_top {
   background-color: #fff;
   width: 50px;
   height: 50px;
   border-right: 1px solid #000;
   border-top: 1px solid #000;
}
/* #12 */
td.wall_right {
   background-color: #fff;
   width: 50px;
   height: 50px;
   border-right: 1px solid #000;
}
/* #13 */
td.wall_right_left_top {
   background-color: #fff;
   width: 50px;
   height: 50px;
   border-left: 1px solid #000;
   border-right: 1px solid #000;
   border-top: 1px solid #000;
}
/* #14 */
td.wall_bottom_top {
   background-color: #fff;
   width: 50px;
   height: 50px;
   border-bottom: 1px solid #000;
   border-top: 1px solid #000;
}
</style>
</head>
<body onload="build(10)">
<script type="text/javascript">

// собстно сама таблица
var board = [
0, 0, 0, 0, 0, 0, 5, 9, 0, 0,
0, 5, 14, 14, 11, 0, 2, 0, 0, 0,
0, 2, 0, 0, 2, 0, 2, 0, 0, 0,
0, 4, 11, 5, 10, 0, 2, 0, 5, 11,
0, 0, 2, 2, 0, 5, 10, 0, 6, 12,
13, 0, 2, 2, 0, 2, 0, 0, 6, 10,
4, 14, 1, 4, 14, 12, 0, 5, 10, 0,
0, 0, 0, 0, 0, 6, 14, 10, 0, 0,
0, 0, 0, 0, 7, 12, 0, 0, 0, 0,
0, 0, 0, 0, 0, 3, 0, 0, 0, 0,
];

var items = [
{src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: "http://img.combats.ru/i/chars/d/0/1018.png", width: 25, height: 50, title: "Пустынник Атаман", src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false},
{src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: "http://img.combats.ru/i/chars/d/0/1019.png", width: 25, height: 50, title: "Проклятье Глубин", src2: false, width2: false, height2: false, title2: false}, {src: "http://img.combats.ru/i/chars/d/0/1017.png", width: 25, height: 50, title: "Пустынник Маньяк", src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false},
{src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: "http://img.combats.ru/i/chars/d/0/1017.png", width: 25, height: 50, title: "Пустынник Маньяк", src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false},
{src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: "http://img.combats.ru/i/chars/d/0/1016.png", width: 25, height: 50, title: "Пустынник Убийца", src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: "http://img.combats.ru/i/chars/d/0/1016.png", width: 25, height: 50, title: "Пустынник Убийца"}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: "http://img.combats.ru/i/chars/d/0/1018.png", width: 25, height: 50, title: "Пустынник Атаман"}, {src: "http://img.combats.ru/i/chars/d/0/1016.png", width: 25, height: 50, title: "Пустынник Убийца", src2: false, width2: false, height2: false, title2: false},
{src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: "http://img.combats.ru/i/chars/d/0/1019.png", width: 25, height: 50, title: "Проклятье Глубин", src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: "http://img.combats.ru/i/chars/d/0/1016.png", width: 25, height: 50, title: "Пустынник Убийца"}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false},
{src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: "http://img.combats.ru/i/chars/d/0/1017.png", width: 25, height: 50, title: "Пустынник Маньяк", src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: "http://img.combats.ru/i/chars/d/0/1019.png", width: 25, height: 50, title: "Проклятье Глубин"}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: "http://img.combats.ru/i/chars/d/0/1017.png", width: 25, height: 50, title: "Пустынник Маньяк"}, {src: "http://img.combats.ru/i/chars/d/0/1019.png", width: 25, height: 50, title: "Проклятье Глубин", src2: false, width2: false, height2: false, title2: false},
{src: "http://img.combats.ru/i/chars/d/0/1017.png", width: 25, height: 50, title: "Пустынник Маньяк", src2: "http://img.combats.ru/i/chars/d/0/1018.png", width2: 25, height2: 50, title2: "Пустынник Атаман"}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: "http://img.combats.ru/i/chars/d/0/1019.png", width: 25, height: 50, title: "Проклятье Глубин"}, {src: "http://img.combats.ru/i/chars/d/0/1016.png", width: 25, height: 50, title: "Пустынник Убийца"}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: "http://img.combats.ru/i/chars/d/0/1017.png", width: 25, height: 50, title: "Пустынник Маньяк", src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false},
{src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: "http://img.combats.ru/i/chars/d/0/1019.png", width: 25, height: 50, title: "Проклятье Глубин", src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false},
{src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false},
{src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: "http://img.combats.ru/i/objects/les1up1.png", width: 50, height: 50, title: "Вход", src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}, {src: false, width: false, height: false, title: false, src2: false, width2: false, height2: false, title2: false}
];

// {src: "http://img.combats.ru/i/chars/d/0/10.png", width: 25, height: 50, title: ""}

var btypes = ["empty", "wall_bottom", "wall_right_left", "wall_right_left_bottom", "wall_left_bottom", "wall_left_top", "wall_left", "wall_left_top_bottom", "wall_top", "wall_right_top_bottom", "wall_right_bottom", "wall_right_top", "wall_right", "wall_right_left_top", "wall_bottom_top"];

function build(width) {
  var b = document.createElement("table");
  b.className = "board";
  b.setAttribute("cellspacing", "0");
  b.setAttribute("cellpadding", "0");
  for (var i = 0; i < board.length / width; i++) {
    var row = b.insertRow(i);
    for (var j = 0; j < width; j++) {
      var cell = row.insertCell(j);
      cell.className = btypes[board[i * width + j]];
      if (items[i * width + j].src !== false) {
              if (!items[i * width + j].src2) {
                 cell.innerHTML = '<img src="' + items[i * width + j].src + '" alt="Morgenshtern" title="' + items[i * width + j].title + '" width="' + items[i * width + j].width + '" height="' + items[i * width + j].height + '" />';
              } else {
                 cell.innerHTML = '<img src="' + items[i * width + j].src + '" alt="Morgenshtern" title="' + items[i * width + j].title + '" width="' + items[i * width + j].width + '" height="' + items[i * width + j].height + '" /><img src="' + items[i * width + j].src2 + '" alt="Morgenshtern" title="' + items[i * width + j].title2 + '" width="' + items[i * width + j].width2 + '" height="' + items[i * width + j].height2 + '" />';
              }
      }
    }
  }
  document.getElementById("dungeon").appendChild(b);
}
function clear_area() {
   document.getElementById("dungeon").innerHTML = '';
}

</script>

<p>
<div id="dungeon" style="border: 2px dotted maroon; padding: 10px"></div>
</p>

<p><a href="javascript://" onclick="clear_area()">test</a></p>

</body>
</html>

PM MAIL WWW ICQ Skype   Вверх
12345c
Дата 14.9.2006, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


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

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



Я тут немного передрал постановку и получил это: ;)
Код
<style>.l1,.l2,.l3,.l4
  {border:1px solid white;font-size:4px;width:10px;height:10px;}
.l4{border-bottom-color:black;border-right-color:black}
.l2{border-right-color:black}
.l3{border-bottom-color:black;}
</style><script>lab=[
'133333314',
'232131322',
'213424234',
'221322134',
'222342332',
'223133314',
'221413232',
'223222122',
'233423434'];
s='<table cellspacing=0 cellpadding=0 style="border:1px solid black;'
  +'border-bottom-width:0;border-right-width:0">';
for(i=0;i<lab.length;i++){s+='<tr>';
  for(j=0;j<lab[0].length;j++){
    s+='<td><div class=l'+lab[i].charAt(j)+'>&nbsp;</div></td>';
  }s+='</tr>';
}s+='</table>';
document.write(s);
</script><br><br>


Это сообщение отредактировал(а) 12345c - 14.9.2006, 18:42


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


I ♥ <script>
****


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

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



12345c, спасибо, но в моем варианте уже готовы и монстры smile
переделывать - больно муторно. Может можешь помочь, почему он не работает в ИЕ? Я из-за отсутствия практики долгой туплю по-страшному :-(
PM MAIL WWW ICQ Skype   Вверх
12345c
Дата 14.9.2006, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


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

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



Цикл вылезает за пределы массива, а именно i==10.
Когда вставил в 182-ю строчку
Код
if(i==10)break
, картинка нарисовалась.

Добавлено @ 20:15 
2) эти стили в IE не работают. Пиши в 6-й строчке border-collapse:collapse; - уберутся промежутки ячеек в IE.

Добавлено @ 20:25 
3) PNG-24 имеет альфа-канал, который непрозрачен в IE. Ghb переводе в PNG-8 делается прозрачным. Возможно, и с 24 удастся что-то схимичить, но не progid:DXImageTransform.Microsoft.AlphaImageLoader - он не будет работать в IE  на тех комп-ах, где отключён DirectX или старая видеокарта.
PM WWW   Вверх
Aliance
Дата 14.9.2006, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


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

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



12345c, огромное спасибо. теперь вид на 99% одинаков в обоих браузеров и все работает без глюков, пока что smile
PM MAIL WWW ICQ Skype   Вверх
Aliance
Дата 17.9.2006, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


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

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



http://test.morgenshtern.com/dungeon.html

Пока работаю для ИЕ только, чтобы было легче. Подскажите, как реализовать функцию, предложенную Сардаром как:
Цитата(Sardar @  6.9.2006,  01:41 Найти цитируемый пост)
character.onCollision = function(obj) {
  if(this.who_can_eat_me.contains(obj)) this.die("You are eaten!");
  .....
}

//-------
character.move("left"); //сдвинуться на клетку влево, например если нажали на клаве кнопку
//если там был кто то, кто может нас "захавать" (например ловушка), то гибнем

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


 




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


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

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