UISwitchでRandomWalk
学生の頃にRandomWalkのプログラムをProcessingで作っていたのですが、ふとSwiftで実装したくなったので作ってみました。
Walkするものですが、せっかくiosで実装するのでUISwitchを使ってみました。
動画
ループ処理について
UIViewControllerのライフサイクルの中にループ処理はありませんでした。
どうしたかというと、Timerのリピートをtrueしてループ処理を実現しましたした。
Timer.scheduledTimer(timeInterval: 0.001, target: self, selector: #selector(walk), userInfo: nil, repeats: true)
tapの際にタイマーを止めて話した瞬間に動き出すようにしたかったのですが、
repeatsの部分にBoolean変数を入れてそれを変更しようとしたのですが、できませんでした、一度動き出したタイマーは後から値を変えても最初に動いた設定でリピートされ続けてしまうので.invalidate()でタイマーを破棄してから新しいタイマーを作り直す必要があります。
Githab
よければ実機で動かしてみてください。アルゴリズムも簡単なので理解しやすいかなと思います。