トップ «前の日記(2018-09-12(Wed)) 最新 次の日記(2018-09-14(Fri))» 編集

屑俺日記

僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。


2018-09-13(Thu) まだ降ってないが、やはり少し涼しい

JavaScriptの構文が、ブロックに書き換えられない場合

icon

直接記述したブロックに置き換えられる、らしい。
デフォルトで用意されているLEDパターンをアイコンとして呼び出せる、 らしい。
流石に5x5では荒すぎて、大抵は「そう見えなくもない」程度 だけど。

basic.showIcon(IconNames.Heart)

が、ランダムに出力させたい場合、 ブロックでいちいち呼び出すのは邪魔くさい。
色々つついているうちに、数字で指定すればできることがわかった。

basic.forever(() => {
    basic.showIcon(Math.random(40))
})

で、 できたモノ
ブロック表示すると、既成のブロックで用意されていなければ "basic.showIcon(Math.random(40))"と書かれたブロックになった。

センサーと組み合わせてみた

最前のbasic.showIcon()の2つめの省略可能な引数は、点灯時間(ミリ秒)らしい。
これを増減させたいと思ったが、ボタン押下があまりうまくできなかった。
揺さぶると遅くなり、ひっくり返すと初期値に戻る程度でお茶を濁す ( スクリーンショット hexファイル)。

let ratio = 0
let speed = 0
input.onGesture(Gesture.Shake, () => {
    speed += ratio
})
input.onGesture(Gesture.ScreenDown, () => {
    speed += 1
    speed = 50
})
speed = 50
ratio = 100
basic.forever(() => {
    basic.showIcon(Math.random(40), speed)
})

傾きを

利用して、 なんとかそれっぽく。
左に傾けて速く、右で遅くなる、ように見えるように( スクリーンショット hexファイル)。

let min = 0
let max = 0
let ratio = 0
let speed = 0
input.onGesture(Gesture.TiltRight, () => {
    if (speed < max) {
        speed += ratio
    }
})
input.onGesture(Gesture.TiltLeft, () => {
    if (speed > min) {
        speed += ratio * -1
    }
})
speed = 50
ratio = 200
max = 3000
min = 0
basic.forever(() => {
    basic.showIcon(Math.random(40), speed)
if (speed < min) {
        speed = min
    }
    if (speed > max) {
        speed = max
    }
})

リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。

index.htmlは ここから。