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

よければ実機で動かしてみてください。アルゴリズムも簡単なので理解しやすいかなと思います。

https://github.com/harumidiv/RandomSwitch