Вот что я сотворил.
<?
$X=100;//размер карты
$Y=100;
//озера
while(rand(1,2)==1){
$x=rand(50,$X);
$y=rand(50,$Y);
$dx=rand(3,50);//ширина
$dy=rand(3,50);//длина
$s=3;
$f=($dx-3)/($dy/2);
$y1=$y-round($dy/2);
while($y1<=$y+round($dy/2)){
$x1=$x-round($s/2);
while($x1<=$x+$s-round($s/2)-1){
$map[$x1][$y1]=3;
$x1++;
}
$y1++;
$s=$y1<=$y?($s+$f):($s-$f);
}
}
$x=1;
$y=1;
//земля
while(rand(1,10)>=4){
$x=rand(50,$X);
$y=rand(50,$Y);
$dx=rand(3,50);
$dy=rand(3,50);
$s=3;
$f=($dx-3)/($dy/2);
$y1=$y-round($dy/2);
while($y1<=$y+round($dy/2)){
$x1=$x-round($s/2);
while($x1<=$x+$s-round($s/2)-1){
if(!isset($map[$x1][$y1])){
$map[$x1][$y1]=4;
}
$x1++;
}
$y1++;
$s=$y1<=$y?($s+$f):($s-$f);
}
}
echo '<hr><div style="width: 2000px">';
$x=1;
$y=1;
while($y<=100){
$x=1;
while($x<=100){
$m=isset($map[$x][$y])?$map[$x][$y]:1;
echo '<img src="/img/map/'.$m.'.png">';//3.png - изображение воды,4.png - изображение земли,1.png-песок
$x++;
}
echo '<br>';
$y++;
}echo '</div>';
Но в этом скрипте озера и пятна земли генерируются ромбовидной формы. Я в принципе к этому и стремился, но нельзя ли селать более случайную форму? Поклонник minecraft :)
Спустя 6 дней, 4 часа, 13 минут, 35 секунд (15.05.2012 - 16:15) ymniktm написал(а):
Никаких предложений не будет? Может я некорректно вопрос задал? Так спросите. Я поясню.
Спустя 6 минут, 18 секунд (15.05.2012 - 16:22) inpost написал(а):
я просто ничего не понял, увы.
Спустя 1 минута, 20 секунд (15.05.2012 - 16:23) Игорь_Vasinsky написал(а):
я не поклонник квадратной графики
у тя же получался ландшафт.
у тя же получался ландшафт.
Спустя 52 минуты, 45 секунд (15.05.2012 - 17:16) sergeiss написал(а):
Если я правильно понял вопрос... В любом случае в код не вникал.
Если же говорить про алгоритм, то можно сделать так. Ты определяешь для начала, какой формы у тебя могут быть объекты (например, квадрат, круг, овал, ромб, "клякса №1", "клякса №2"). Каждой форме задаешь индекс.
Затем задаёшь (всё случайным образом) для каждого объекта: координаты, размеры, индекс формы. Количество объектов тоже можно задать случайным, например, в некотором диапазоне. А потом просто "тупо" рисуешь эти объекты.
Если же говорить про алгоритм, то можно сделать так. Ты определяешь для начала, какой формы у тебя могут быть объекты (например, квадрат, круг, овал, ромб, "клякса №1", "клякса №2"). Каждой форме задаешь индекс.
Затем задаёшь (всё случайным образом) для каждого объекта: координаты, размеры, индекс формы. Количество объектов тоже можно задать случайным, например, в некотором диапазоне. А потом просто "тупо" рисуешь эти объекты.
Спустя 3 часа, 38 минут, 43 секунды (15.05.2012 - 20:54) ymniktm написал(а):
sergeiss да я думал так сделать но ландшафт будет создаваться для каждего пользователя. Так что хотелось бы сделать его более индивидуальным. Ну нужен алгоритм что бы формы генерировались на ходу а не чтоб я создовал милион "клякс".
Спустя 8 минут, 57 секунд (15.05.2012 - 21:03) sergeiss написал(а):
Цитата (ymniktm @ 15.05.2012 - 20:54) |
нужен алгоритм что бы формы генерировались на ходу а не чтоб я создовал милион "клякс" |
Почему обязательно "миллион"? Ограничь их количество


А что касается индивидуальности для каждого пользователя... Будет индивидуальность, куда ж она денется? Генератор случайных чисел поможет этому.
Спустя 19 минут, 36 секунд (15.05.2012 - 21:23) ymniktm написал(а):
Ну рендомить можно только размер клякс. Но ладн спасибо ты мне подал другую идею:)
Спустя 2 минуты, 25 секунд (15.05.2012 - 21:25) ymniktm написал(а):
Оу у меня нет 10 постов что б поставить тебе +. Наберу не забуду поставить:)