如何使用多行输入来创建我的游戏?

时间:2017-02-10 17:07:05

标签: smalltalk pharo gnu-smalltalk

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

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

使用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]

1 个答案:

答案 0 :(得分:2)

您的模型尚未明确定义。但是,通过帮助您进行一些编码,我会尝试为您提供一些有关如何填补空缺的见解。

所以,假设你有一个班级Game。该类定义(至少)4个实例变量:rowscolumnsdiceplayers

现在,您想通过阅读符合某种格式的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]]

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