Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 30.08.2012, 15:45
Новичок на форуме
Отправить личное сообщение для 2pizza Посмотреть профиль Найти все сообщения от 2pizza
 
Регистрация: 30.08.2012
Сообщений: 5

Спасибо всем, я сам думал как Deff предложил, только:
Вертикальная труба
[0,1,0]
[0,0,0]
[0,1,0]

Горизонтальная труба
[0,0,0]
[1,0,1]
[0,0,0]
Смысл в том, что обозначаются 1 только концы соединений трубы и у каждой трубы есть top,left,right,bottom, игра будет простая, поворачиваться куски труб будут по заготовкам и смысл игры - все трубы соединить, волновых алгоритмов не будет, просто не могу элементарно соединить 2 трубки, просто даже не знаю как записать на поле два куска трубы и проверить их возможность соединения, для примера просто "+" и "L" вывести сообщение, что трубы не могут соединиться, мало знаний(
Ответить с цитированием
  #12 (permalink)  
Старый 30.08.2012, 16:00
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

лучше создать конструктор объектов со свойствами t, r, b, l (top, right, bottom, left - свойства со значениями 0 или 1(1 - дырка есть)), также туда можно добавить и свойство obj - ссылка на элемент, который будет привязан к объекту, при повороте элемента соответствующим образом устанавливаются свойства связанного с ним объекта и осуществляется проверка, если воде (или что там течёт) куда дальше течь
Ответить с цитированием
  #13 (permalink)  
Старый 30.08.2012, 16:02
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

2pizza,
Допустим соединение справо от уже стоящего слево блока:
находите index элемента матрицы в левом блоке в правой колонки с "1"

Для горизонтальной трубы это будет (если элементы считаются от нуля
Элемент с индексом elem[1][1],
Значит в правом блоке - первый индекс должен совпадать с левым, т.е
i.row=1, a col индекс = будет равен 0 (поскольку ищем в первой колонке
т.е в правом блоке должен быть индекс elemRight[1][0]==elemLeft[1][1]==1
*Считаем что первый индекс - это строка - второй колонка
Ответить с цитированием
  #14 (permalink)  
Старый 30.08.2012, 16:21
Новичок на форуме
Отправить личное сообщение для 2pizza Посмотреть профиль Найти все сообщения от 2pizza
 
Регистрация: 30.08.2012
Сообщений: 5

bes,
что-то вроде такого?:
var pipeobj = { //все виды труб
    horpipe:{left: 1, top: 0, right: 1, bottom: 0}, //труба горизонтального вида
	verpipe:{left: 0, top: 1, right: 0, bottom: 1}  //труба вертикального вида
}
Ответить с цитированием
  #15 (permalink)  
Старый 30.08.2012, 16:37
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Типа так, можно еще нужных методов добавить

function tube (obj, t, r, b, l) {
	this.obj = obj;
	this.t = t;
	this.r = r;
	this.b = b;
	this.l = l;
}

var elem1 = new tube(document.body.children[0], 0, 1, 1, 0);
Ответить с цитированием
  #16 (permalink)  
Старый 30.08.2012, 16:43
Новичок на форуме
Отправить личное сообщение для 2pizza Посмотреть профиль Найти все сообщения от 2pizza
 
Регистрация: 30.08.2012
Сообщений: 5

bes, ясно, а как сей конструктор привязать к куску трубы в двумерном массиве ?
Например есть такой элемент:
var elem1 = new tube("T", 0, 1, 1, 1);

и есть поле, пусть труба будет значением 2:
var map=new Array(
	new Array(0,0,0,0,0,0,0,0,0,0),
	new Array(0,0,0,0,2,0,0,0,0,0),
	new Array(0,0,0,0,0,0,0,0,0,0),
	new Array(0,0,0,0,0,0,0,0,0,0),
	new Array(0,0,0,0,0,0,0,0,0,0)
);

Последний раз редактировалось 2pizza, 30.08.2012 в 16:51.
Ответить с цитированием
  #17 (permalink)  
Старый 30.08.2012, 17:08
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

не совсем понял, что требуется (разбросать картинки случайным образом по экрану что ли?)

tube - конструктор, каждый объект полученный с его помощью (например, elem1) создаёт связь между html-элементом (например, картинкой трубы в ячейке таблицы) и описанием этой трубы с точки зрения сторон этой картинки, через которые вода может течь (также можно было у каждой картинки трубы задать дополнительные 4 атрибута, описывающие доступность сторон картинки к течи)
Ответить с цитированием
  #18 (permalink)  
Старый 30.08.2012, 17:33
Новичок на форуме
Отправить личное сообщение для 2pizza Посмотреть профиль Найти все сообщения от 2pizza
 
Регистрация: 30.08.2012
Сообщений: 5

bes, ясно, создаёт связь между html-элементом, я думал, что создаёт связь между элементами в массиве.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по each() и перебору строк таблицы battrack jQuery 1 09.02.2012 14:30
вопрос про возможности JS для рисования и анимации macdack Библиотеки/Тулкиты/Фреймворки 3 15.07.2011 00:13
Я как ответить на вопрос - есть ли жизнь на других планетах? TicTac Оффтопик 5 28.04.2011 04:29
Теоретический вопрос. gods33 (X)HTML/CSS 10 16.12.2010 23:49
Вопрос о циклических ссылках (JavaScript -> Dom -> JavaScipt) BlueIce Events/DOM/Window 10 17.02.2010 21:58