1

宿題のために、(とりわけ) Oz でチェス盤を作成する必要があります。

私は言語にかなり慣れていませんが、これが私がやりたかった方法です:

declare
fun {MakeTile Col Row}
   if Col==1 then
      if {And (Row=<10) (Row>=2)} then N in
     N = {MakeTile 1 Row+1}|{MakeTile 1 Row-1}|{MakeTile 2 Row}|{MakeTile 2 Row-1}
     tile(column:Col row:Row player:0 neighbours:N)
      else
     if Row==11 then N in
        N = {MakeTile 1 Row-1}|{MakeTile 2 Row-1}|{MakeTile 2 Row}
        tile(column:Col row:Row player:0 neighbours:N)
     else N in % Row==1
        N = {MakeTile 1 Row+1}|{MakeTile 2 Row}
        tile(column:Col row:Row player:0 neighbours:N)
     end
      end
   else
      tile(column:Col row:Row player:0 neighbours:nil)
       % TODO: Handle other edge of the board
   end
end
{Browse {MakeTile 'A' 1}}

プログラムはそのまま実行され続けます。

宣言型のスタイルでプログラミングする必要があります。私はこれらの種類の言語に慣れていませんが、再帰的なアプローチはそのようなボードを作成する良い方法ですか?

4

1 に答える 1

0

宣言的なアプローチが正しい方法かもしれません。私はあなたのコードをテストし、あなたが書いたもので動作します.それは単にtile(column:'A' neighbours:nil player:0 row:1)期待通りに印刷されます. 起動しません、何が問題ですか?

于 2015-03-10T14:12:19.720 に答える