コウです、よろしくお願いします!
「ゼロからプログラミングを始める」人に役立つ情報を発信しています。
今回はDay83「順番に並べる」です。どうぞ!!
解答例
まずは解答例を確認しましょう。
コードは次のようになります。
解答例を動画で確認する
上記のコードを実行した結果がこちらになります。
新しいコマンド
今回登場した新しいコマンドを紹介します!
これらを使い配列の項目を変更して、
キャラクターを並べます。
remove(at:Int)
配列の中から項目を削除するコマンドです。
Intで指定したインデックスの位置にある項目を削除します。
削除されると、項目のインデックスはズレることに注意しましょう!
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「配列に追加する」でお会いしましょう!それでは!!