睡眠阻止整个程序(Smalltalk Squeak)

Inf*_*ted 0 smalltalk squeak

我正在用gui做N*N皇后问题.我希望gui在每个女王的每次移动中停止x秒,问题是,程序只是将所有等待堆叠起来然后以速度运行所有内容.我在这里给出代码:http://pastebin.com/s2VT0E49

编辑:这是我的工作区:

board := MyBoard new initializeWithStart: 8.
Transcript show:'something'.
3 seconds asDelay wait.
board solve.
3 seconds asDelay wait.
board closeBoard.
Run Code Online (Sandbox Code Playgroud)

这是我希望等待发生的地方

canAttack: testRow x: testColumn
    | columnDifference  squareMark |
    columnDifference := testColumn - column.
    ((row = testRow
        or: [row + columnDifference = testRow])
        or: [row - columnDifference = testRow]) ifTrue: [
            squareDraw := squareDraw
            color: Color red.
            0.2 seconds asDelay wait.           
            ^ true ].

  squareDraw := squareDraw color: Color black.
  ^ neighbor canAttack: testRow x: testColumn
Run Code Online (Sandbox Code Playgroud)

Ber*_*erg 5

由于您使用的是Morphic,因此您应该使用步进动画,而不是处理或延迟.在你的Morph实现step方法.这将自动重复执行.还实现stepTime以毫秒为单位回答间隔,例如4000每4秒.

在步骤方法内,计算您的新状态.如果每个女王被建模为一个单独的变形,你只需移动位置,那么Morphic将负责更新屏幕.如果您有自己的drawOn:方法,则调用self changed您的step方法,以便Morphic稍后调用您的绘图代码.

请参阅本教程:http://static.squeak.org/tutorials/morphic-tutorial-1.html