我在奥兹创建了一个国际象棋棋盘,我的节目似乎没有终止

时间:2015-03-06 10:49:45

标签: 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}}

程序一直在运行。

我们必须以声明式编程。我不熟悉这些语言,递归方法是创建这样一块板的好方法吗?

1 个答案:

答案 0 :(得分:0)

声明性方法可能是正确的方法。我测试了你的代码,并为你写的内容工作,它只是按预期打印tile(column:'A' neighbours:nil player:0 row:1)。它没有继续运行,你的问题是什么?