2次元配列で2次元座標グリッドを表現しようとしています。問題は、Delphiが配列を割り当てる方法のために、配列がX座標とY座標を反転させると宣言していることです。これにより、配列の要素を読み取ることが困難になります。印刷しようとしながら、例えば、以下のプログラムは、範囲チェックエラーを与える:Delphiで座標グリッドを表現するにはどうすればよいですか?
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
{$R+}
procedure play;
var
grid: array of array of boolean;
x, y: integer;
begin
try
setLength(grid, 3, 8);
grid[1, 5] := true;
for y := low(grid) to high(grid) do
begin
for x := low(grid[y]) to high(grid[y]) do
begin
if grid[x, y] then
write('X')
else write('.');
end;
writeln;
end;
readln;
except
on E:Exception do
Writeln(E.Classname, ': ', E.Message);
end;
end;
begin
play;
end.
Iは、(グリッド[Y、X]次にする場合)起こってからそれを維持し、その後グリッドに下位索引を記述する必要が(1,5)の代わりに(5、1)にXが表示されて横向きに印刷されます。私がsetLength(grid、3、8)と言ってグリッドの形を変えようとすると。次の行に代入すると範囲チェックエラーが発生します。私はのすべてをの座標に逆に書く必要があります。そして、彼らが後方にいるのを忘れるたびに、悪いことがプログラムで起こります。
誰もが直感的に座標順序を機能させるためにあらゆるトリックを知っていますか?
...もちろんそうです。私はそれを書いたときに私が何を考えているのか分かりません。私は最近、グリッドを表現するのに多くの問題を抱えています。時には彼らは一方的に、時には他方に出て、壁の上で私を運転しています。 –
私はこれまでの問題を実証するより良い例でそれを更新しました。 –