Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.09.2013, 09:02
Интересующийся
Отправить личное сообщение для MyBigFriend Посмотреть профиль Найти все сообщения от MyBigFriend
 
Регистрация: 25.09.2013
Сообщений: 20

Интереснейшая задачка!
del

Последний раз редактировалось MyBigFriend, 27.09.2013 в 11:37.
Ответить с цитированием
  #2 (permalink)  
Старый 25.09.2013, 12:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,011

MyBigFriend,


генератор комнат ... осталось соединить коридорами )))
<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
  <script>

 $(function () {
function randomNumber(d) {
    d = parseInt(d);
    var e = Math.floor(0.2 * d),
        a = Math.floor(0.8 * d),
        a = Math.floor(Math.random() * (a - e + 1)) + e;
    return [a, d - a]
}

function append() {
    $("div:empty")
        .each(function (d, e) {
            var a = $(e),
                b = a.height(),
                c = a.width();
            b > c || Math.random() > .7? (b = randomNumber(b - 4), c = [c - 2, c - 2]) : (b = [b - 2, b - 2], c = randomNumber(c - 4));
            $("<div/>", {
                css: {
                    height: b[0],
                    width: c[0]
                }
            })
                .appendTo(a);
            $("<div/>", {
                css: {
                    height: b[1],
                    width: c[1]
                }
            })
                .appendTo(a)
        })
}

function end() {
    $("div:empty")
        .each(function (d, e) {
            var a = $(e),
                b = a.height(),
                c = a.width(),
                b = randomNumber(b),
                c = randomNumber(c),
                f = randomNumber(b[1]),
                g = randomNumber(c[1]);
            $("<div/>", {
                css: {
                    margin: f[0] + "px " + g[0] + "px " + f[1] + "px " + g[0] + "px",
                    height: b[0],
                    width: c[0],
                    background: "#228B22"
                }
            })
                .appendTo(a)
        })
};
function run()
{
append();
append();
append();
append();
end();
}
$(":button").click(function () { $('.first').empty();run() }).click()

 })
 </script>

<style>
div{border:1px solid black;text-align:center;padding:0px;font-size:14px;color:#000; margin: 0px; float: left;    }
.first{width:400px; height: 400px;}
</style>
</head>
<body>
<div class="first"></div>
<input name="" type="button" value="more">
</body>
</html>

Последний раз редактировалось рони, 25.09.2013 в 14:16.
Ответить с цитированием
  #3 (permalink)  
Старый 25.09.2013, 13:41
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,092

Сообщение от рони
осталось соединить коридорами )))
Это мелочи!
Ответить с цитированием
  #4 (permalink)  
Старый 25.09.2013, 16:13
Интересующийся
Отправить личное сообщение для MyBigFriend Посмотреть профиль Найти все сообщения от MyBigFriend
 
Регистрация: 25.09.2013
Сообщений: 20

Ого, я так понял тут jquery используете, я в js то слаб, а jquery вообще не шарю) если можно в кратце опишите, что тут происходит.
Ответить с цитированием
  #5 (permalink)  
Старый 25.09.2013, 16:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,011

Сообщение от MyBigFriend
что тут происходит
append во все пустые дивы вставляется ещё два деля предка рандомно на неровные части либо по длине либо по высоте и так 4 раза потом end точно также но 1 див вместо второго рандомный margin - усё )))

Последний раз редактировалось рони, 25.09.2013 в 16:25.
Ответить с цитированием
  #6 (permalink)  
Старый 25.09.2013, 18:29
Интересующийся
Отправить личное сообщение для MyBigFriend Посмотреть профиль Найти все сообщения от MyBigFriend
 
Регистрация: 25.09.2013
Сообщений: 20

если использовать такой подход, мы не сможем проложить коридоры? т.к. у нас нет никакой информации об этих дивах..
Ответить с цитированием
  #7 (permalink)  
Старый 25.09.2013, 18:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,011

Сообщение от MyBigFriend
если использовать такой подход, мы не сможем проложить коридоры? т.к. у нас нет никакой информации об этих дивах..
рыть надо к родному брату потом один из братьев роет к одному из двоюродных братьев - потом один из этих 4 братьев роет ход к одному из 4 по материнской линии и тд ))
Ответить с цитированием
  #8 (permalink)  
Старый 25.09.2013, 19:33
Интересующийся
Отправить личное сообщение для MyBigFriend Посмотреть профиль Найти все сообщения от MyBigFriend
 
Регистрация: 25.09.2013
Сообщений: 20

Сообщение от рони Посмотреть сообщение
рыть надо к родному брату потом один из братьев роет к одному из двоюродных братьев - потом один из этих 4 братьев роет ход к одному из 4 по материнской линии и тд ))
а если я написал скрипт, в котором у меня создаются все комнаты, нужного размера, как мне их отрисовать в div-ах? у меня есть все height и width. Не могу просто разобрать ваш код на jquery.
Ответить с цитированием
  #9 (permalink)  
Старый 25.09.2013, 21:17
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,011

MyBigFriend,
Сообщение от MyBigFriend
Не могу просто разобрать ваш код на jquery
программируйте как умеите -- мой код не решаает главное коридоры - отрисовать в дивах ??? задайте нужные параметры position: relative; left: 0px; top: 0px; height: 0px; width: 0px;
Ответить с цитированием
  #10 (permalink)  
Старый 25.09.2013, 21:47
Интересующийся
Отправить личное сообщение для MyBigFriend Посмотреть профиль Найти все сообщения от MyBigFriend
 
Регистрация: 25.09.2013
Сообщений: 20

Сообщение от рони Посмотреть сообщение
программируйте как умеите -- мой код не решаает главное коридоры - отрисовать в дивах ??? задайте нужные параметры position: relative; left: 0px; top: 0px; height: 0px; width: 0px;
объясните, пожалуйста, поподробнее.
у меня в js есть объект:
var obj = new Obj(0, 0, 100, 150);
где первые 2 значения это координаты, третье ширина, четвертое высота прямоугольника. Какой код нужно написать, чтобы его правильно отобразило на странице?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачка: Хром / Мозилла? eirnvn Opera, Safari и др. 0 09.07.2013 13:18
Простая задачка со списком select Malkis Общие вопросы Javascript 3 03.02.2013 08:24
задачка по геометрии js lammeR Общие вопросы Javascript 16 02.02.2011 16:01
Задачка из твиттера Kolyaj Общие вопросы Javascript 5 08.12.2009 12:01
Небольшая задачка Maksim jQuery 4 30.09.2009 19:43