Programming

Day88「地形を作る」|Swift Playgrounds 攻略と解答例

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

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

今回はDay88「地形を作る」です。どうぞ!!

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

解答例

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

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

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

解答例を動画で確認する

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

ステージ攻略「地形を作る」

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

クリア条件

今回のクリア条件は、

配列を使ってステージにブロックを配置していく』ことです。

前回も学習しましたが、範囲外エラーに気を付ける必要があります。

高さを指定する配列を宣言

今回は、高さを指定するための配列を使います。

var heights: [Int] = [ 1,2,3 ]

と言っても難しいことはなく、Int型で宣言すれば大丈夫です。

: 』の後が『[Int]』になります。

数字の『1,2,3』の箇所はどんな数字をいくつ入れても大丈夫です。

ここにどんな数字を入れるかによって、

できあがるステージの形が変わります

heightsは高さを表すheightの複数形です。

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

1マスずつにブロックを置いていくので、

ステージ内のすべての座標を宣言します。

let allCoordinates = world.allPossibleCoordinates

今までもこのコードは使っていましたが、

あらかじめ入力されていました。

自分で入力するのは初めてですね。

インデックスを数える変数を宣言する

後で使うことになるのですが、

今、配列の中の何個目の項目(インデックス)を参照しているのか

を数えるための変数を定義します。

var index = 0

範囲外エラーを防ぐために使う重要な変数です。

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

はじめに宣言したすべての座標を参照しながら、

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

①『index』変数の値を0にする

先ほど宣言したindexという名前の変数の出番です。

if index == heights.count {
  index = 0
}

もし、indexの値がheightsを数えた値と同じならindexを0にする

heights.count』はheights配列の項目の数を表します。

項目は『1,2,3』なので3つですね。

そしてindexは変数ではじめは0ですが、

この後の③の処理をすると1ずつ増えていきます

indexの数が3になったら、この①の処理で0に戻すというわけです。

そしてループは続きます。

②heights配列を参照しながらブロックを置く

ここは色々な数字が出てきてややこしいですが、頑張りましょう!

heights配列をもう一度確認しましょう。

var heights: [Int] = [ 1,2,3 ]

[ 1,2,3 ]なので、

インデックス0が1、インデックス1が2、インデックス2が3』ですね。

for i in 0…heights[index] {
  world.place(Block(), at: coordinate)
}

forループの終わりの数は、heights[index]なので

heights配列の値分繰り返すことになります。

注意が必要なのは、forループが0から始まっていることです。

これまでのステージを見てもらえればわかりますが、

forループ1から始まっていました。

Day15「ループを使う」|Swift Playgrounds 攻略と解答例【ゼロから学習】 コウです、よろしくお願いします! 「ゼロからプログラミングを始める」人に役立つ情報を発信しています! Day15からはfo...

0から数を数えると、普段数えているよりも1つ増えます

例えばheights配列を参照していくとインデックス0は1なので、

forループは1回繰り返すのかなと思いますが、0から数えると2回になります。

つまり、ステージには2個のブロックが置かれることになります。

③indexの値に+1をする

ブロックを置き終えたら、indexの値に+1をします。

ループが3周したときにここでindexの値を3にして①に戻ると

①の処理でindexは0になります。

0になったindexはまた②を経由して③に戻ってきます。

そして+1をする。①に戻す…と繰り返していくわけです。

①の処理が無いとどうなるでしょう。

ループが4周した時点でindexの値が4になりますね。

②の処理をするときにheights配列インデックス4が無いので範囲外エラーになるというわけです。

まとめ:地形を作る

数字がたくさん出てきてややこしかったかもしれません。

heights配列の値を[1,2,3]としましたが、

変えてみると解答例とは違ったステージが出来上がるので

ぜひ試してみてください!

今回のポイントを振り返りましょう。

ポイント
  • 『(配列名).count』で配列の項目の数がわかる。
  • 範囲外エラーにならないように変数を使って0に戻す処理をする。

次回はDay89「ランダムな地形」でお会いしましょう!それでは!!

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