【问题标题】:How to make a Matrix Class in smalltalk Visual Works?如何在 smalltalk Visual Works 中制作矩阵类?
【发布时间】:2013-06-16 04:28:12
【问题描述】:

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

【问题讨论】:

    标签: matrix smalltalk pharo tic-tac-toe visualworks


    【解决方案1】:

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

    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
    

    希望对你有帮助。

    【讨论】:

    • 或许您可以将问题标记为已回答。很高兴您得到了您想要的答案。
    猜你喜欢
    • 1970-01-01
    • 2016-06-05
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    • 2013-03-09
    • 2019-05-06
    相关资源
    最近更新 更多