Programming

Day90「違う方法で配列を作る」|Swift Playgrounds 攻略と解答例

コウです、よろしくお願いします!

「ゼロからプログラミングを始める」人に役立つ情報を発信しています。

気がついたらDay90ですね〜。

コードを学ぼう2も今回含めてあと3回です!

それでは「違う方法で配列を作る」です。どうぞ!!

小学生から社会人までおすすめ!!プログラミング言語『Swift』について!【今始める理由と学び方】 こうといいます、よろしくお願いします! 小学校で教師をやっていた経験を活かして、 プログラミングについて悩みをお持ちの保護...

解答例

まずは解答例を確認しましょう。

コードは次のようになります。

※赤い点線はアプリケーションの仕様なので気にしないでください。

解答例を動画で確認する

上記のコードを実行した結果がこちらになります。

新しい要素:配列の追加方法

配列に追加する別のやり方が新たに登場しました!

すでにステージ上にいるキャラクターを、

配列に追加するというものです。

world.existingCharacters(at: allCoordinates)

これを使えば、すべてのキャラクターを初期化して動かすことができます。

existing既存のとか現存のという意味です。すでにあるということですね。

ステージ攻略「違う方法で配列を作る」

ステージを攻略していきましょう!

クリア条件

今回のクリア条件は、

すでにステージにいるキャラクターを配列に追加して動かす』ことです。

ステージ内のすべての座標を定数として宣言

すべての座標を参照できるように、定数として宣言しておきます。

let allCoordinates = world.allPossibleCoordinates

すべての座標を参照するループ(①〜④)

先ほど宣言したすべての座標を参照しながら、

①〜④の処理を繰り返します。

①高さを設定する

各座標の列と行の値を足したもの

高さとして設定する定数を宣言します。

let height = coordinate.column + coordinate.row

ループする中で座標は変わるので、

heightの値も変化していきます。

例えば(2,3)の座標を参照しているとすると、heightの値は5になります。

②設定した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「配列の技」でお会いしましょう!ではまた!!

小学生から社会人までおすすめ!!プログラミング言語『Swift』について!【今始める理由と学び方】 こうといいます、よろしくお願いします! 小学校で教師をやっていた経験を活かして、 プログラミングについて悩みをお持ちの保護...