2017-02-10 2 views
2

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

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

Am используя 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] 
+0

Можете ли вы показать, что вы на самом деле пробовали (делая их «отдельно»), показывая какой-то фактический код? Вам не нужно вставлять весь свой код, но, по крайней мере, показывать код, который относится к обработке переменных, и как создавать/объявлять переменные. Это не должно быть сложно. Все переменные экземпляра для класса должны быть доступны для всех методов экземпляра. Но вы не сказали, используете ли вы методы экземпляра или методы класса. – lurker

+0

Извините, я не был слишком уверен в том, Я использую методы экземпляра, и мои переменные row и col являются доступными для класса. так что мне просто нужно получить строку и col для моей доски, из метода readFrom, а затем установить ее в переменные экземпляра строки col, у меня есть – lookorange

+0

Что вы подразумеваете под «доступным классом», когда это переменные экземпляра? Также я не понимаю, как вопрос (название) относится к остальной части текста. Что вы имеете в виду, чтобы сделать их, и _do it_, что такое _it_? Кажется, это не инициализация переменных, потому что вы написали, что у вас уже есть метод «создания» этих переменных. Ваш вопрос о чтении данных из строки, где каждая строка должна обрабатываться отдельно? – JayK

ответ

2

Ваша модель еще не определена. Однако, помогая вам с некоторой кодировкой, я постараюсь дать вам некоторое представление о том, как заполнить оставшиеся пробелы.

Итак, допустим, у вас есть класс 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]] 

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

Смежные вопросы