Matrix[i,j] := MainForm.GetElement(X – 2 + i,Y – 2 + j);

 for j :=0 to 4 do

 for i := 0 to 4 do

 Vector[j*5 + i] := Matrix[i,j];

end;

Заполняет матрицу и вектор 25-ю элементами карты. Х,Y — указывает на центральный элемент.

Метод Place(x,y : Integer);

procedure TMatrix5.Place(X,Y : Integer);

var i,j : Integer;

begin

 for j := 0 to 4 do

 for i := 0 to 4 do

  Matrix[i,j] := Vector[j*5 + i];

 for j := 0 to 4 do

 for i := 0 to 4 do

  MainForm.PutElement(X – 2 + i,Y – 2 + j, Matrix[i,j] );

end;

Выполняет процедуру обратную методу Fill. То есть кладет матрицу 5х5 на карту.

Метод Draw(x,y : Integer; BrushIndex : Integer);

procedure TMatrix5.Draw(X,Y : Integer; BrushIndex : Integer);

begin

 Self.Culculate(X,Y,BrushIndex);

 Self.Place(X,Y);

end;

Выполняет методы Culculate, а затем Place. X,Y — указывают центральный элемент в матрице 5×5, BrushIndex — индекс активной земли. (0-вода,1-трава,2-камни,3– переходный тип — земля).

Прежде чем перейти к основному методу данного модуля — Culculate, покажу вам созданные таблицы.

const BasicTable : array[0..24,0..15] of byte = (

(16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16), (16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16), (16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16), (16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16), (16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16), (16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16),

( 9, 1, 6, 8, 4, 5, 6,15, 8, 9, 1,14, 4, 5,14,16),

( 1, 1, 6,15, 5, 5, 6,15,15, 1, 1, 6, 5, 5, 6,16),

(10, 1, 2, 7,15, 5, 6, 7,15, 1,10, 2, 7,13, 6,16),

(16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16), (16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16),

( 4, 5,15, 8, 4, 5,15,15, 8, 4, 5, 8, 4, 5, 8,16),

(16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16),

( 2, 6, 2, 7,15,15, 6, 7,15, 6, 2, 2, 7, 7, 6,16),

(16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16), (16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16),

(12, 5, 7, 3, 4, 5,15, 7, 8, 4,13, 3,12,13, 8,16),

( 3,15, 7, 3, 8,15,15, 7, 8, 8, 7, 3, 3, 7, 8,16),

(11, 6, 2, 3, 8,15, 6, 7, 8,14, 2,11, 3, 7,14,16),

(16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16), (16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16), (16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16), (16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16), (16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16), (16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16));

EqualTable : array[0..24,0..15] of byte = ( (16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16), (16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16), (16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16), (16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16), (16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16), (16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16),

(16,10,16,16,12,13, 2,16, 3, 0,16,16,16,16,11, 7),

(16, 0,11,16,12,12,11, 3, 3, 0, 0,16,16,12,11, 3),

Перейти на страницу:

Похожие книги