2017-02-10 1 views
2

私は、ゲームを作成する他のメソッドのインスタンス変数をすべて作成するメソッドを1つ持っています。私はそれらを別々に行う方法を知っていますが、1つのメソッドから行う方法を見つけることは本当に難しいです。複数のライン入力を使用してゲームを作成するにはどうすればよいですか?

各行を別々に扱わなければならない文字列からデータを読み取る必要があります。

Pharoを使用しています。

クラスゲームは、すべてが1つのゲームクラス内にあります。

ゲーム:インスタンス変数: '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

申し訳ありませんインスタンスやクラスがあまりにも確かに私wasnt。私はインスタンスメソッドを実行しています、私の行とcol変数はクラスにアクセス可能です。だから、私はちょうど私のボードの行と列を取得する必要があります、readFromメソッドから、行のcolインスタンス変数に設定します。 – lookorange

+0

これらがインスタンス変数であるとき、あなたは「クラスがアクセス可能である」とはどういう意味ですか?また、私は質問(タイトル)がテキストの残りの部分とどのように関連しているのか理解していません。あなたは何をしているのですか?そしてそれをどういう意味ですか?_it_は何ですか?変数を初期化していないようですが、あなたはすでにこれらの変数を "作成"するメソッドを持っていると書いているからです。各行を個別に扱わなければならない文字列からデータを読み込むことについての質問はありますか? – JayK

答えて

2

あなたのモデルはまだ明確に定義されていません。しかし、コーディングを手助けすることによって、まだ残っているギャップを埋める方法についていくつかの洞察を与えようとします。

だから、クラスGameがあるとします。このクラスは、少なくとも4つのインスタンス変数:rows,columns,diceおよびplayersを定義します。

今、あなたはこのように、特定のフォーマットに準拠していることをいくつかStringを読むことによってGameのインスタンスを作成したい:これはのラインにGameクラス側メソッドを作成しますするには

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

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

繰り返しますが、これはすべての問題を解決することはできませんが、あなたが始めるのに役立つはずです。それ以外の場合は、再度尋ねます。

関連する問題