Всегда хотел написать такую весчЪ, сейчас вроде кое что нормальное вышло. Уменя всего два вопроса, как избавиться от "подземелий обрубков" и как можно сделать сужение пещеры к концу уровня? http://rghost.ru/2315974 Спасибо.
Добавлено (11.08.2010, 21:08) --------------------------------------------- В принципе, разобрался. Но, если кто-то, что-то скажет, буду рад.
я ещё немного доработал скрипт, теперь он всегда доходит до конца? просто добавил проверку на проходимость лабиринта, причем достаточно примитивную. А есть у кого-нибудь пример генератора примерно такого же подземелья, только с комнатами и коридорами между ними?
Code
//Init ending=false width = room_width div 15 height = room_height div 15
var i; for(i=0 i<width i+=1) for(d=0 d<height d+=1) lvl[i,d] = '+' //First block lvl[0,round(random_range(height/2-4,height/2+4))] = 'X' //Next for(i=1 i<(width)-1 i+=1) { for(d=1 d<(height)-1 d+=1) { if lvl[i-1,d] == 'X' or lvl[i-1,d] == 'W' switch choose(0,1,2) { case 0: lvl[i,d+1] = 'X' lvl[i,d] = 'X' if i+2=width { ending=true } break
case 1: lvl[i,d-1] = 'X' lvl[i,d] = 'X' if i+2=width {ending=true} break } } //show_message(string(i)+':'+string(d)+'#'+string(lvl[i,d-1])) } if ending=false {game_restart()} //Tiles (temp) count = 0 for(i=0 i<(width) i+=1) { for(d=0 d<(height) d+=1) { if lvl[i,d] == '+' {tile_add(back_cave,0,0,16,16,i*16,d*16,10000);count += 1}
if lvl[i,d] == 'X' {tile_add(back_cave,16,0,16,16,i*16,d*16,10000);count += 1} } }
Добавлено (13.08.2010, 21:08) --------------------------------------------- SkipH, а ты ни чего не делаеш в этом направлении? Я уже почти реализовал "катакомбы". Есть комнаты, коридорчики, все как надо
Генерация уровней конечно хорошо, но есть более важные вещи которые нужно сделать. Потом, когда-нибудь К тому же если и буду делать генератор уровней то скорей всего буду использовать Diablo like способ.(генерация на основе готовых болванок)
Мой генератор подземелий для рогаликов. Если хочешь - попробуй адаптировать под ГМ. (пришлось выложить в текстовике, в сообщение банально не помещается) ( DOWNSTAIRCASE - это переход на следующий уровень подземелья, не обращай внимания) ( isPath тебе функция вообщем-то не надо, эта функция проверяет можно ли пройти от того места, где герой, до конца подземелья (ступенек вниз))