Данная программа, из одномерного массива делает в матрицу 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.
volvo
18.05.2007 17:21
Основной цикл меняешь так:
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;
zara44
18.05.2007 17:45
Чермак ты чтоли)))))? Переделываешь)))
М
для личных сообщений есть ПМ
чурмак
18.05.2007 17:52
Огромное спасибо! А не подскажешь где прописать строчку gotoxy(5 * x + 1, 2 * y + 1); чтобы массив змейкой появлялся? Или изменить эту строчку как-то?
Добавлено через 1 мин. да
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.