我正在用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)
由于您使用的是Morphic,因此您应该使用步进动画,而不是处理或延迟.在你的Morph实现step方法.这将自动重复执行.还实现stepTime以毫秒为单位回答间隔,例如4000每4秒.
在步骤方法内,计算您的新状态.如果每个女王被建模为一个单独的变形,你只需移动位置,那么Morphic将负责更新屏幕.如果您有自己的drawOn:方法,则调用self changed您的step方法,以便Morphic稍后调用您的绘图代码.
请参阅本教程:http://static.squeak.org/tutorials/morphic-tutorial-1.html
| 归档时间: |
|
| 查看次数: |
213 次 |
| 最近记录: |