Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Генерация лабиринтов


Страницы:   1 2

Soroka ©   (2004-10-27 15:41:00) 

Привет _профессора _игр !
Решила  _вот_ спросить, _можно_ ли_  написать_ на_ ГЛ_сцене_ гнератор_ лабиринтов, _очень_ надо._Если _да, _тто_подскажите_где_взять_пример_того_что_нужно_для_этого_знать.
Заранее_всем_спасибочки.


Darthman   (2004-10-29 18:26:00) [21]

а выход из этого лабиринта будет? :)


rts111   (2004-10-29 16:42:00) [22]

Вот написал вроде работает

procedure TForm1.Button1Click(Sender: TObject);
var
lab:array of array of byte;
s,w,h:word;
y,x:integer;
pic:tbitmap;
xsm,ysm:integer;
tn,tx,ty:integer;
ttt:boolean;
begin

Randomize;
s:=4;  // размер блока
w:=99;h:=69;// НЕ ЧЕТНЫЕ
setlength(lab,h,w);
for y:=0 to h-1 do for x:=0 to w-1 do
if(x=0)or(y=0)or(x=w-1)or(y=h-1)
then lab[y,x]:=1 else lab[y,x]:=0;
lab[0,1]:=0;lab[h-1,w-2]:=0;

for tn:=1 to 10000 do /////// Генерация ///////////////
begin
 tx:=random(w div 2)*2;
 ty:=random(h div 2)*2;
 if lab[ty,tx]>0
 then begin
       case random(4)of
       0:begin xsm:= 1;ysm:= 0;end;
       1:begin xsm:=-1;ysm:= 0;end;
       2:begin xsm:= 0;ysm:= 1;end;
       3:begin xsm:= 0;ysm:=-1;end;
       end;
       ttt:=true;
       while ttt
       do begin
           ttt:=false;
           if(tx+xsm>0)and(tx+xsm<w-1)and(ty+ysm>0)and(ty+ysm<h-1)then
           if(lab[ty+ysm,tx+xsm]=0)and(lab[ty+2*ysm,tx+2*xsm]=0)then
           begin
            lab[ty+ysm,tx+xsm]:=1;
            ty:=ty+ysm;
            tx:=tx+xsm;
            ttt:=true;
           end
          end;
      end;
end;/////////////////////////////////////////////////////

pic:=tbitmap.Create;
 pic.Width:=w*s;pic.Height:=h*s;pic.Canvas.Brush.Color:=0;
 for y:=0 to h-1 do for x:=0 to w-1 do
 if lab[y,x]>0 then pic.Canvas.Rectangle(x*s,y*s,x*s+s,y*s+s);
 canvas.Draw(10,10,pic);
pic.Free;

end;


П7   (2004-10-29 14:04:00) [23]

Блин.
Выкини свой яндекс. Извини, конечно, но тебе дали ОГРОМНУЮ тему для поиска. Когда я искал подобную инфу, то нашёл ГРУДЫ всякой инфы. С примерами и полными описаниями процессов генерации. Если ты не можешь искать информацию в Сети, то помочь тебе не может никто. Может ты перед тем, как учиться программировать, научишься искать информацию.
Кое кто тебе даже ссылки привёл, но ты, видимо, их тоже не нашла... (:
На сём прощаюсь...


марсианин   (2004-10-28 23:40:00) [24]

http://algolist.manual.ru/games/maze.php


DeadMeat   (2004-10-28 23:12:00) [25]


> [7] Soroka ©   (28.10.04 08:43)

Я ж ссылку привел. Там статьи на эту тему есть. А портал очень хорошо подходит просто для реализации...

---
...Death Is Only The Begining...


Darthman   (2004-10-28 16:44:00) [26]

можно_ ли_  написать_ на_ ГЛ_сцене_ гнератор_ лабиринтовили отрисовщик? Определись с задачей сначала. Генерация в GLScene не нуждается совсем.


Colt1978   (2004-10-28 15:52:00) [27]

и кстати используй эксплорер в конце концов чтоли или оперу переставь, в глазах рябит от таких предложений и фраз с подчёркванием


Colt1978   (2004-10-28 15:51:00) [28]

Soroka, насколько я знаю в инете полно всяких формул генерации лабиринтов, просто их результат работы тебе придётся просто присандалить к порталу, хотя я не асс в этом но я думаю всё же за пару деньком это сделать можно...


Soroka   (2004-10-28 08:43:00) [29]

Незнаю _П7, _в_Яндексе_ничего_хорошего _не_ нашла._Странно_у_меня _на_работе_что_то_Опера_глючит, _пробелы_не _ставятся.
В_играх_конечно_да, _а_в_примерах_или_документации_?
DeadMeat,_в_портале_нет_генерации_лабиринта._Его_только_можно_построить_на_портале.


П7   (2004-10-28 07:24:00) [30]

Да их МОРЕ. Обратите свой взгляд на roguelike-игры. Половина из них генерит свои ровни (в основном подземелья) на лету. ADMO, DeadCold (к нему есть исходники на FreePascal) и др. В Сети есть ГОРЫ и ГРУДЫ статей на эту тему. Лентяи вы! (:


Кто---то   (2004-10-28 07:04:00) [31]

А, кстати, действительно, существует ли программа для генерации лабиринтов ? В смысле с исходником. Какие хоть принципы у этой генерации лабиринтов ? Надо же, чтобы они достаточно сложными были.


DeadMeat   (2004-10-28 01:17:00) [32]

На http://delphigfx.mastak.ruкажись есть статьи по поиску пути. Там помойму было и такое
Плюс Portal из самого GLScene

---
...Death Is Only The Begining...


Soroka   (2004-10-27 22:26:00) [33]

Пробелов небыло, так это что-то было с оперой, перегрузиться не могла, т.к. сливала файлы.
Интересно какже можно это сделать на делфи не рисуя ?


П7   (2004-10-27 18:43:00) [34]

бот... (:


Darthman   (2004-10-27 16:13:00) [35]

генератор лабиринтов писать надо не на ГЛсцене. На ней только рисовать. Генерировать надо на делфи :)
А чего с подчеркиваниями? ТипаНастоящимПрограммистамПробелыНеНужны?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо