
25.09.2013, 09:02
|
|
Интересующийся
|
|
Регистрация: 25.09.2013
Сообщений: 20
|
|
|
Интереснейшая задачка!
del
Последний раз редактировалось MyBigFriend, 27.09.2013 в 11:37.
|
|

25.09.2013, 12:06
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,155
|
|
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.
|
|

25.09.2013, 13:41
|
 |
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,304
|
|
|
Сообщение от рони
|
|
осталось соединить коридорами )))
|
Это мелочи! 
|
|

25.09.2013, 16:13
|
|
Интересующийся
|
|
Регистрация: 25.09.2013
Сообщений: 20
|
|
Ого, я так понял тут jquery используете, я в js то слаб, а jquery вообще не шарю) если можно в кратце опишите, что тут происходит. 
|
|

25.09.2013, 16:21
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,155
|
|
|
Сообщение от MyBigFriend
|
|
что тут происходит
|
append во все пустые дивы вставляется ещё два деля предка рандомно на неровные части либо по длине либо по высоте и так 4 раза потом end точно также но 1 див вместо второго рандомный margin - усё )))
Последний раз редактировалось рони, 25.09.2013 в 16:25.
|
|

25.09.2013, 18:29
|
|
Интересующийся
|
|
Регистрация: 25.09.2013
Сообщений: 20
|
|
|
если использовать такой подход, мы не сможем проложить коридоры? т.к. у нас нет никакой информации об этих дивах..
|
|

25.09.2013, 18:53
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,155
|
|
|
Сообщение от MyBigFriend
|
|
если использовать такой подход, мы не сможем проложить коридоры? т.к. у нас нет никакой информации об этих дивах..
|
рыть надо к родному брату потом один из братьев роет к одному из двоюродных братьев - потом один из этих 4 братьев роет ход к одному из 4 по материнской линии и тд ))
|
|

25.09.2013, 19:33
|
|
Интересующийся
|
|
Регистрация: 25.09.2013
Сообщений: 20
|
|
Сообщение от рони
|
|
рыть надо к родному брату потом один из братьев роет к одному из двоюродных братьев - потом один из этих 4 братьев роет ход к одному из 4 по материнской линии и тд ))
|
а если я написал скрипт, в котором у меня создаются все комнаты, нужного размера, как мне их отрисовать в div-ах? у меня есть все height и width. Не могу просто разобрать ваш код на jquery. 
|
|

25.09.2013, 21:17
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,155
|
|
MyBigFriend,
|
Сообщение от MyBigFriend
|
|
Не могу просто разобрать ваш код на jquery
|
программируйте как умеите -- мой код не решаает главное коридоры - отрисовать в дивах ??? задайте нужные параметры position: relative; left: 0px; top: 0px; height: 0px; width: 0px;
|
|

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