大宮盆栽デイズ - Omiya Bonsai Days -

冗談めかす埼玉のファインマン

グラフィックを消す@コードを学ぼう3

`squish`,`zap` という単語は、辞典によると次のような意味です。

squish | skwɪʃ |
動詞
自動詞
1 ザバザバ[ピシャピシャ]音を立てる.
2 ⦅米・くだけて⦆つぶれる.
他動詞
⦅米・くだけて⦆…をつぶす, 圧縮する.

zap | zæp |
(!⦅くだけて⦆)
動詞~s; ~ped; ~ping
他動詞
1 (レーザー光線などで)…を殺す, 消す; …をやっつける
▸ get zapped with lightning
雷にやられる
自動詞
1 〖~+副詞〗すばやく動く, 手早くやる (!副詞は場所などの表現)
▸ Pain zapped through his body.
彼の体に痛みが走った.
2 (リモコンで)チャンネルを変える.
名詞
U精力, 活力, ガッツ.
間投詞
バシッ, ドスッ, ビュッ〘漫画などで打撃や光線銃などの音〙; サッ〘すばやい動作の音〙; あっ〘驚きを表す〙.

// グラフィックを消す@コードを学ぼう3
let blackHole = Graphic(image: #imageLiteral(resourceName: "BlackHole@2x.png"))
let x = randomDouble(from: -400, to: 400)
let y = randomDouble(from: -400, to: 400)
let blackHolePosition = Point(x: x, y: y)
scene.place(blackHole, at: blackHolePosition)

// Squish tool event handler.
func squishGraphic(graphic: Graphic) {
    // Add code here.
    graphic.scale *= 0.5
    graphic.alpha *= 0.25
    if graphic.scale < 0.6 {
        graphic.moveAndZap(to: blackHole.position)
    }
}

// UFF tool event handler.
func addFructoid(touch: Touch) {
    if touch.previousPlaceDistance < 60 { return }
    let fruit = "🍏🍐🍊🍋🍉🍒🍓🍌".componentsByCharacter()
    let graphic = Graphic(text: fruit.randomItem)
    scene.place(graphic, at: touch.position)
    graphic.scale = 2.0
    
    let x = randomDouble(from: 50, to: 400)
    let y = randomDouble(from: 50, to: 400)
    let period = randomDouble(from: 8.0, to: 15.0)
    graphic.orbit(x: x, y: y, period: period)
}

// Create and add UFF tool.
let fructoidTool = Tool(name: "UFF", emojiIcon: "🍋")
fructoidTool.onFingerMoved = addFructoid(touch:)
scene.tools.append(fructoidTool)

// Create and add Squish tool.
let squishTool = Tool(name: "Squish", emojiIcon: "💥")
squishTool.onGraphicTouched = squishGraphic(graphic:)
scene.tools.append(squishTool)