Programming

Day83「順番に並べる」|Swift Playgrounds 攻略と解答例

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

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

今回はDay83「順番に並べる」です。どうぞ!!

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

解答例

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

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

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

解答例を動画で確認する

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

新しいコマンド

今回登場した新しいコマンドを紹介します!

これらを使い配列の項目を変更して、

キャラクターを並べます。

remove(at:Int)

配列の中から項目を削除するコマンドです。

Intで指定したインデックスの位置にある項目を削除します。

削除されると、項目のインデックスはズレることに注意しましょう!

インデックスは配列内の各項目の位置を示す番号です。

[ 犬 , 猫 , 魚 , 馬 , 羊 ]だと犬のインデックスは0馬は3です。

この配列に対してremove(at:2)を行うと、魚は削除されます。

すると馬のインデックスは3から2、羊は4から3になります。

append(newElement: Element)

配列の最後に項目を追加するコマンドです。

項目がいくつあっても一番最後に追加することができます。

insert(newElement: Element , at Int)

配列の任意の位置に項目を追加するコマンドです。

削除と同じように追加した項目より後ろのインデックスは

ズレていくので注意しましょう!

ステージ攻略「順番に並べる」

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

クリア条件

今回のクリア条件は、

『blu、Hopper、Expertを背の順に並べる』ことです。

先に話しておくと、背の順は『blu < Expert < Hopper』です。

bluとExpertはどっちがどっちか本当に際どいですけどね笑

配列を編集する

はじめから宣言されている配列は次のようになっており、

ここを直接編集することができません。

したがって、新しく登場したコマンドを使うしかありません。

characters = [

  Chatracter(name: .blu),

  Portal(color:『ピンクの四角』),

  Chatracter(name: .hopper),

  Gem()

]

ワープと宝石を削除する

キャラクターの配列のはずなのにそれ以外の項目がありますね。

2つ目(インデックスは1)のワープ

4つ目(インデックスは3)の宝石です。

まずはワープを削除します。

characters.remove(at: 1)

インデックスは1なので、入力する整数は1ですね。

そして注意すべきなのはこの時点で

宝石のインデックスは2になったということです。

つまり削除のためのコードは次のようになります。

characters.remove(at: 2)

コードは上から順に実行されていきます。

実行された後にあるコードはそれより前を踏まえて書く必要があります。

Expertを追加する

さて、余計な項目がなくなったのでエキスパートを追加しましょう。

characters.insert(Expert(), at: 1)

blu(インデックス0)の後ろに追加したいので、インデックスは1です。

あらかじめ入力されていたループ

今回はすでにループが入力されていたので

書く必要はありませんでした。

どんな内容なのかだけ押さえておきましょう。

var rowPlacement = 0

for character in characters {

  //指定した座標に配列の中の項目を置いていく
  //行の値は0から始まって、+1ずつされるので1マスずつズレていく
  world.place(character, at: Coordinate(column: 1, row: rowPlacement))
  rowPlacement += 1
}

ループ内での名前は『character』、

参照する配列は『characters』。

ここまでは大丈夫ですよね。

問題はループさせたい処理です。

注釈でも書きましたが、

rowPlacement += 1』によりキャラクターが配置された後に

行の値が1ずつ増えていきます

列の値は『1』で固定なので、

行の値が1ずつ増えればマスが1ずつズレることになります。

まとめ:順番に並べる

項目の削除追加はできましたでしょうか。

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

ポイント
  • 項目を削除したり追加するコマンドがある。
  • インデックスはコードを実行する中で変わっていく。

次回はDay84「配列に追加する」でお会いしましょう!それでは!!

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