1

我是 smalltalk 的新手,正在尝试制作一个简单的井字游戏,我希望我的模型类是一个矩阵,但我无法在 Visual Works 上找到一种方法。我一直在关注本教程: http: //nerdysermons.blogspot.fr/2012/03/tictactoe-game-in-pharo-smalltalk.html,它适用于 Pharo 但我遇到了矩阵类型的问题还有simplebuttonmorph。谁能解释一下 Pharo 和 VisualWorks 之间的语法/包/库?谢谢你 。

4

1 回答 1

0

以下是一个建议——实现矩阵的方法有很多。

  1. 将一个类定义为 Object 的子类,其中包含单元格、numberOfRows 和 numberOfColumns 的实例变量。
  2. 在给定行数和列数的情况下创建一个类方法来初始化矩阵 - 使单元格成为大小为行 * 列的数组
  3. 创建像 at:at: 和 at:at:put: 这样的方法,它们计算单元格数组的索引,如下所示:
cellNumberAt: row at: column
   ^(row - 1) * numberOfColumns + column

at: row at: column put: value
   cells at: (self cellNumberAt: row at: column) put: value

at: row at: column
   ^cells at: (self cellNumberAt: row at: column)

rowAt: rowNumber
   | row |
   row := OrderedCollection new.
   1 to: numberOfColumns do: [:columnNumber |
      row add: (self at: rowNumber at: columnNumber)].
   ^row

columnAt: columnNumber
   | column |
   column := OrderedCollection new.
   1 to: numberOfRows do: [:rowNumber |
      column add: (self at: rowNumber at: columnNumber)].
   ^column

我希望这会有所帮助。

于 2013-06-19T01:52:35.293 回答