Данная программа, из одномерного массива делает в матрицу 8х8 и печатает на экране змейкой. А мне нужно чтобы одномерный массив сформировывался в двумерный, а потом только выводился на экран.
program SnakeMatrix;
uses
crt;
var
data : array[0..63] of integer;
procedure fillDataSimple;
var
i: integer;
begin
for i := 0 to 63 do begin
data[i] := i + 1;
end;
end;
procedure proceedCoords(var x, y, dx, dy: integer);
var
x1, y1: integer;
dx1, dy1: integer;
xOut, yOut: boolean;
begin
if ((x = 7) and (y = 7)) then begin
x := 0;
y := 0;
dx := -1;
dy := 1;
end else begin
x1 := x + dx;
y1 := y + dy;
xOut := ((x1 < 0) or (x1 > 7));
yOut := ((y1 < 0) or (y1 > 7));
if xOut then begin
y := y + 1;
dx := -dx;
dy := -dy;
end else if yOut then begin
x := x + 1;
dx := -dx;
dy := -dy;
end else begin
x := x1;
y := y1;
end;
end;
end;
var
x, y: integer;
dx, dy: integer;
i, j: integer;
begin
clrscr;
fillDataSimple;
x := 0;
y := 0;
dx := -1;
dy := 1;
for i := 0 to 63 do begin
gotoxy(5 * x + 1, 2 * y + 1);
delay(15000);
write(data[i]);
proceedCoords(x, y, dx, dy);
end;
readkey;
end.
Основной цикл меняешь так:
var
matrix : array[0 .. 7, 0 .. 7] of integer;
...
for i := 0 to 63 do begin
matrix[y, x] := data[i];
proceedCoords(x, y, dx, dy);
end;
{ И печатаешь результат }
for i := 0 to 7 do begin
for j := 0 to 7 do
write(matrix[i, j]:4);
writeln; writeln;
end;
Чермак ты чтоли)))))? Переделываешь)))
М | для личных сообщений есть ПМ |
Огромное спасибо! А не подскажешь где прописать строчку gotoxy(5 * x + 1, 2 * y + 1);
чтобы массив змейкой появлялся? Или изменить эту строчку как-то?
Добавлено через 1 мин.
да