コウです、よろしくお願いします!
「ゼロからプログラミングを始める」人に役立つ情報を発信しています。
気がついたらDay90ですね〜。
コードを学ぼう2も今回含めてあと3回です!
それでは「違う方法で配列を作る」です。どうぞ!!
解答例
まずは解答例を確認しましょう。
コードは次のようになります。
解答例を動画で確認する
上記のコードを実行した結果がこちらになります。
新しい要素:配列の追加方法
配列に追加する別のやり方が新たに登場しました!
すでにステージ上にいるキャラクターを、
配列に追加するというものです。
world.existingCharacters(at: allCoordinates)
これを使えば、すべてのキャラクターを初期化して動かすことができます。
ステージ攻略「違う方法で配列を作る」
ステージを攻略していきましょう!
クリア条件
今回のクリア条件は、
『すでにステージにいるキャラクターを配列に追加して動かす』ことです。
ステージ内のすべての座標を定数として宣言
すべての座標を参照できるように、定数として宣言しておきます。
let allCoordinates = world.allPossibleCoordinates
すべての座標を参照するループ(①〜④)
先ほど宣言したすべての座標を参照しながら、
①〜④の処理を繰り返します。
①高さを設定する
各座標の列と行の値を足したものを
高さとして設定する定数を宣言します。
let height = coordinate.column + coordinate.row
ループする中で座標は変わるので、
heightの値も変化していきます。
②設定したheightの値分だけブロックを配置する
先ほど列と行を足して設定した値の分だけブロックを積み重ねます。
for i in 0…height {
world.place(Block(), at: coordinate)
}
積み重ねるのは参照している座標のマスです。
③bluを配置する
条件に合う場合にbluを配置します。
if height >= 8 && height < 10 {
world.place(Character(name: .blu), at: coordinate)
}
条件は『heightの値が8以上10未満のとき』です。
つまり『heihtが8か9のとき』ですね。
④hopperを配置する
条件に合う場合に今度はhopperを配置します。
} else if height > 9 {
world.place(Character(name: .hopper), at: coordinate)
}
条件は『heightの値が9より大きいとき』です。
(6,6)の時の12が一番大きいheightの値なので、
『heightの値が10か11か12のとき』になります。
ステージ内にすでにいるキャラクターを初期化する
ここまででステージ上にはキャラクターが配置されています。
そのキャラクターを初期化します。
let characters = world.existingCharacters(at: allCoordinates)
先ほども説明しましたが、
これで配置されているすべてのキャラクターに
一気に指示を出すことができます。
キャラクターを動かす
charactersにすべてのキャラクターが初期化して入っているので、
ループを使えば全てに指示を出すことができます。
for ch1 in characters {
ch1.danceLikeNoOneIsWatching()
}
今回はdanceLikeNoOneIsWatching()
というコマンドを使いましたが、
他にも以下のようなコマンドがあるようです。
turnUp()
breakItDown()
grumbleGrumble()
argh()
好きなものを好きなだけ使ってみてください。
まとめ:違う方法で配列を作る
今までとは違った方法でキャラクターを初期化しました!
今回のポイントを振り返りましょう。
- let characters = world.existingCharacters(at: allCoordinates)を使うとステージにいるすべてのキャラクターを初期化できる。
次回はDay91「配列の技」でお会いしましょう!ではまた!!