Как использовать многострочный ввод для создания моей игры?

Итак, у меня есть один метод, который создаст все переменные экземпляра для других моих методов, которые создадут игру, я знаю, как сделать их отдельно, но найти способ сделать это одним методом действительно сложно.

Мне нужно читать данные из строки, где каждая строка должна обрабатываться отдельно.

Использую 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]]

Опять же, это не решит всех проблем, но должно помочь вам начать работу. В противном случае, спросите еще раз.

Другие вопросы по тегам