解答例
// 座標の領域を作成します。
let allCoordinates = world.allPossibleCoordinates
let backRow = world.coordinates(inRows: [9])
let insideSquare = world.coordinates(inColumns: [4,5], intersectingRows: [4,5])
let squareCorners = world.coordinates(inColumns: [2,3,6,7], intersectingRows: [3,7])
// 地面を動かす鍵を置きます。
let squareLock = PlatformLock(color: .green)
world.place(squareLock, at: Coordinate(column: 1, row: 1))
let cornerLock = PlatformLock(color: .pink)
world.place(cornerLock, at: Coordinate(column: 8, row: 1))
let backLock = PlatformLock(color: .blue)
world.place(backLock, at: Coordinate(column: 4, row: 1))
// キャラクターと地面を置きます。
for coor in insideSquare {
world.place(Platform(onLevel: 4, controlledBy: squareLock), at: coor)
world.place(Character(name: .hopper), at: coor)
}
for coor in squareCorners {
world.place(Platform(onLevel: 4, controlledBy: cornerLock), at: coor)
world.place(Expert(), at: coor)
world.place(Gem(), at: coor)
}
for coor in backRow {
world.place(Platform(onLevel: 2, controlledBy: backLock), at: Coordinate(column: coor.column, row: coor.row + 1))
world.place(Character(name: .blu), facing: north, at: coor)
}
// ステージ内のすでにいるキャラクターの配列を作成します。
let blus = world.existingCharacters(at: backRow)
let hoppers = world.existingCharacters(at: insideSquare)
let experts = world.existingExperts(at: squareCorners)
// 好きなことをしてみましょう🤓。
squareLock.movePlatforms(up: true, numberOfTimes: 3)
for hopper in hoppers {
hopper.turnUp()
}
cornerLock.movePlatforms(up: true, numberOfTimes: 7)
for expert in experts {
expert.collectGem()
}
for blu in blus {
blu.jump()
}
backLock.movePlatforms(up: true, numberOfTimes: 11)
for blu in blus {
blu.turnLeft()
blu.turnLeft()
blu.danceLikeNoOneIsWatching()
}
解説
『コードを学ぼう1』から順番に課題をこなしてきて、
いつのまにかこんな難しいコードを読めるようになりました。
この『Swift Playgrounds』で使われているコードの知識、文法などは
実際にプログラミングをしてアプリを作る時にも使える実践的なものです。
遊び感覚で身に付くし、何度やっても新しい発見があります。
ぜひ2周、3周とやってみてくださいね。
そして、書籍などを活用して、実際にアプリを作ってみてください。
私もまだまだ勉強中ですが、簡単な試作品でも作れると自信に繋がります。
実践が一番の勉強だと思います!
さて。
今回は、もうすでにコードが書いてあり、
少しだけ変更すると、ゴールすることができるようです。
このコードの中にも、新しい技がいくつか出てきていますが
(プラットフォームを置くなど)
ここは、もう自由なので、自分で色々試行錯誤して
どのような仕組みになっているのかやってみてください。
コーディングでは、すでにあるコードを読んで直せることがとても大切です。
ほかの人が書いたコードを理解する必要が出てくることもよくあります。
将来的には、ほかの人が見てもわかるようにするために、
自分でコードのコメントを書くようになるでしょう。
前にも出てきましたが、『//』を使うと、コメントになるんでしたよね。
PCを使っている場合は、『Commandキー と /』でコメント化されます。
解除も同じキーでできます。
複数行指定したい場合、最初から最後まできっちり指定する必要はありません。
例えば、2行目から5行目をコメント化したい場合、
2行目の真ん中あたりから5行目の真ん中あたりまで、マウスでザーッと適当に選択し、
Commandキー ➕ /(スラッシュ)すると、
簡単にコメントにすることができました。
コーディングは英語でされるので、自分が何を書いたのかわからなくなったりすることもあります。
そんな時、日本語でちょっと説明があると
後で見た時にわかりやすいし、他の人にも意図を伝えることができていいですよね。
あとは、見やすく改行するのもかっこいいコードを書くテクニックの一つです。
・コメントを使うことと、わかりやすく改行することは大事!