#Processing(python) マウスでなぞったところに円を描く!
今回は、自分の後輩に課題の質問をされて"python","processing"懐かしいなということで書いてみることにしました!
くれぐれもこれを見た後輩君たちは丸写ししないようにね!(俺が怒られちゃうから)
##やること!
現在のフレームから9フレーム前の座標まで中心とした円を描画!
##先に完成プログラム!(説明と照らし合わせて読んでね!)
decorate_x = []
decorate_y = []
def setup():
size(800, 800)
def draw():
decorate_x.append(mouseX)
decorate_y.append(mouseY)
background(255)
if len(decorate_x) == 10:
for i in range(10):
ellipse(decorate_x[9-i], decorate_y[9-i], 90, 90)
del decorate_x[0]
del decorate_y[0]
##意識しなければならないこと!!
- 現在から9フレーム前までの円を描写すること
- 前のフレームの座標を保存すること!
- 9フレーム描写したらいったん消すこと!
##書くための発想!
- 座標を保存!
- 座標を全部で9個保存
- 保存した新しい順番で9個描写
- 描写したものを削除!
###1.座標を保存!
今回保存するのに使うのはpython
のlist
まず、list
を宣言!
保存するには、list名.append(値)
左のコードでリストに値を追加する!
###2.座標を全部で9個保存!
座標の保存方法はさっきの説明したがどうやって9個保存したかを確かめるか?
len()
を使ってlist
の中に何個値が入ってるかを調べる!
9個値が入ってるときだけ動くようにif
で条件分岐を作ればok
###3.保存した新しい順番で9個描写
新しくリストに入った順に書くなんてどうするの!?ってところだけど、
for i in range(10)
をやることでi
には0
から9
までが順に入っていく、順番を逆にしてリストの中身を書きたいなら引いてしまえばいい!
ellipse(decorate_x[9-i], decorate_y[9-i], 90, 90)
引くことで[]
の中には9
から0
の順に変わる!
###4.描写したもの削除!
processing
には描写したものを消すコードは存在しないが上書き保存することで消すことができる!
そこで背景を全部塗り替えちゃえってことで!background(255)
をつかう!
結果映像!
一年生からprocessingの質問きたからコードの説明書いてみた!whttps://t.co/1CAaWfDAfG #Qiita pic.twitter.com/EK9g49iBOv
— Miryuu (@Miryuu_neko) June 16, 2020