2

所以,我有一种方法可以为创建游戏的其他方法创建所有实例变量,我知道如何单独执行它们,但是从一种方法中找到如何执行它真的很难。

我需要从必须单独处理每一行的字符串中读取数据。

我正在使用 Pharo。

类游戏,一切都在一个游戏类中。

游戏:实例变量:'rol col'。使用实例方法。

readFrom: 'Board 3 4
Dice 2 1 1 1
Players 1'

board
[my actual code that creates a board]
row for loop[
    Transcript show: 'creating board'.
       col for loop[
       Transcript show: 'creating board'.
   ]
]

dice
[dice code..]

players
[players code]
4

1 回答 1

2

您的模型尚未明确定义。但是,通过帮助您进行一些编码,我将尝试为您提供一些关于如何填补仍然存在的空白的见解。

所以,假设你有一堂课Game。此类定义(至少)4 个实例变量:rowscolumns和。diceplayers

现在你想Game通过读取一些String符合某种格式的实例来创建一个实例,例如:

'Board 3 4
 Dice 2 1 1 1
 Players 1'

为此,请在以下行中创建一个类端方法Game

 readFrom: aString
   ^self new readFrom: aString

然后是一个实例方法

readFrom: aString
   aString lines do: [:line | | data key |
     data := line substrings.
     key := data at: 1.
     key = 'Board'
       ifTrue: [
         rows := data at: 2.
         columns := data at: 3].
     key = 'Dice'
       ifTrue: [
         dice := data allButFirst collect: [:s | s asInteger]].
     key = 'Players'
       ifTrue: [
         players := (data at: 2) asInteger]]

同样,这并不能解决所有问题,但应该可以帮助您入门。否则,再问。

于 2017-02-11T22:13:52.320 回答