気になった点は、Godotさんとほぼ同じです。 メインループがある場合(とくにボタン処理が絡む場合)、ループの頭か終わりにVSYNCを入れておいた方がいいと思います。 プログラムは、同じような記述が出てきたときは、流れの中でまとめられないか考えてみたり、もしまとめられない場合は、サブルーチン(関数)化してみたりして、同じ記述が何度も出てこないようにした方がプログラムが短く、そしてバグの起こりにくいプログラムになるので、その辺も考えてみると良いですね。