Как использовать многострочный ввод для создания моей игры?
Итак, у меня есть один метод, который создаст все переменные экземпляра для других моих методов, которые создадут игру, я знаю, как сделать их отдельно, но найти способ сделать это одним методом действительно сложно.
Мне нужно читать данные из строки, где каждая строка должна обрабатываться отдельно.
Использую 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 ответ
Ваша модель еще не определена. Тем не менее, помогая вам с кодированием, я постараюсь дать вам некоторое представление о том, как заполнить оставшиеся пробелы.
Итак, допустим, у вас есть класс Game
, Этот класс определяет (как минимум) 4 переменных экземпляра: rows
, columns
, dice
а также players
,
Теперь вы хотите создать экземпляр 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]]
Опять же, это не решит всех проблем, но должно помочь вам начать работу. В противном случае, спросите еще раз.