Решил надрать всем... Одно место и показать что рогалики способны на многое. А точнее выиграть конкурс генерацией и прочим что является особенностью рогалика. Но при создании игры вышла проблема, дело в том что я ленивый да и толком не знающий решил сделать такую генерацию глобальной карты(цель сгенерировать материк, кругло-образный) сделал это по алгоритму находим символ и в случайную сторону (возможно в несколько сторон) ставим этот же символ. Делаю на Pascal'e собственно код:
Код: Выделить всё
x := 12;
y := 12;
GotoXY(x, y);
//TextColor(LightGreen);
glmap[x, y].charc := '.';
//Write('0');
obr := false;
for k := 1 to 4 do
begin
if obr = false then
begin
i1 := 33;
obr := true;
end
else
if obr = true then
begin
obr := false;
wl := true;
end;
for j := 2 to 33 do //-----------------------------------------
begin
wl := true;
i1 := 33;
for i := 2 to 33 do //-------------------------------------------
begin
//Delay(5);
if (obr = false) then
begin
if wl = true then
begin
i1 := 33;
wl := false;
end
else
if not wl = true then
begin
Dec(i1);
end;
end
else
if (obr = true) then
begin
i1 := i;
end;
if (glmap[i1, j].charc = '.') then
begin
//Delay(50);
n := random(2); // север
e := random(2); // восток
s := random(2); // юг
w := random(2); // запад
if n = 1 then
begin
if (i1 < 33) and (i1 > 2) and (j < 33) and (j > 2) then
if glmap[i1 - 1, j].charc = '~' then
begin
glmap[i1 - 1, j].charc := '.';
//GotoXY(i1-1,j);
//TextColor(White);
//write('0');
end
else
{if glmap[i1+1,j] = '~' then
if not (glmap[i1+1,j] = '0') then
begin
glmap[i1+1,j]:='0';
GotoXY(i1+1,j);
TextColor(White);
write('0');
end;}
end;
if s = 1 then
begin
if (i1 < 33) and (i1 > 2) and (j < 33) and (j > 2) then
if glmap[i1 + 1, j].charc = '~' then
begin
glmap[i1 + 1, j].charc := '.';
//GotoXY(i1+1,j);
//TextColor(White);
//write('0');
end;
end;
if e = 1 then
begin
if (i1 < 33) and (i1 > 2) and (j < 33) and (j > 2) then
if glmap[i1, j + 1].charc = '~' then
begin
glmap[i1, j + 1].charc := '.';
//GotoXY(i1,j+1);
//TextColor(White);
//write('0');
end;
end;
if w = 1 then
begin
if (i1 < 33) and (i1 > 2) and (j < 33) and (j > 2) then
if glmap[i1, j - 1].charc = '~' then
begin
glmap[i1, j - 1].charc := '.';
//GotoXY(i1,j-1);
//TextColor(White);
//write('0');
end;
end;
end;
end;
end;
end;