私が質問したゲームを再コーディングしています.Haskell.
最初にデータのグリッドを作成するために、以下に示す非常に命令的なスタイルのアルゴリズムを使用しました。それが依存している重要な機能は、配列にインデックスを取り、そこから参照を作成できることです。例「&array[x][y]」。
変更可能な配列にインデックスを取り、そこから Haskell で状態参照を作成できるようにする必要があります。したがって、型シグネチャは次のようになります。
convertToSTRef :: i -> STArray s i a -> ST s (STRef s a)
ドキュメントに目を通し、hoogle と hayoo の両方を試しましたが、これを達成する方法が見つかりませんでした。
PS または、誰かが私が使用できる別のアルゴリズムを持っていれば、それは素晴らしいことです。
PSS シンプルな命令型アルゴリズム。
const size_t rows = 20;
const size_t columns = 59;
block tiles[columns][rows];
block * const start = &tiles[columns/2][rows/2];
for (size_t x = 0; x < columns; ++x)
for (size_t y = 0; y < rows; ++y)
{
tiles[x][y].floor = '^';
tiles[x][y].inhabitant = WALL;
tiles[x][y].side_block[EAST] = (x + 1 < columns) ? &tiles[x + 1][y] : NULL;
tiles[x][y].side_block[SOUTH] = (y + 1 < rows) ? &tiles[x][y + 1] : NULL;
tiles[x][y].side_block[WEST] = (x > 0) ? &tiles[x - 1][y] : NULL;
tiles[x][y].side_block[NORTH] = (y > 0) ? &tiles[x][y - 1] : NULL;
}