Processingで
お絵かきソフトを作ろう!!
Processingではじめるプログラミング入門
第1回 プログラミングって?
全体の目標
2
準備!!
3
準備!!
4
準備!!
5
準備!!
6
右クリック
準備!!
7
準備!!
8
プログラミングとは?
9
今回使う『 Processing 』とは?
Processing(プロセシング)とは、学生やアーティスト、デザイナー向け�に作られた、デジタルアートをシンプルに表現するためのソフトです。
10
※Processingは標準ではJavaという言語を使って記述されますが、�今回はPythonという言語を使って記述していきたいと思います。
Processingの作例
11
Processingの作例
12
なぜPythonなのか
13
Python
Pythonで作られたサービス
プログラミング言語について
14
それぞれの目的に応じたプログラミング言語
15
もう少し準備
16
もう少し準備
17
Python Mode for …
を選択する
モードの切り替え
18
実行の方法
赤丸のところ
19
停止の方法
赤丸のところ
20
画面のサイズを指定する
size(500 , 500)
21
横幅
高
さ
Reference
size(横幅, 高さ)
背景色の指定方法
size(500 , 500)
background(255)
22
座標に関して
23
X座標
Y座標
各種図形の描き方
24
四角形の描き方
25
基準になる点は左上(画面の座標と同じ)
Example
rect(10,10,100,100)
rect(x座標 , y座標 , 横幅 , 高さ)
円の描き方
26
ellipseは楕円という意味
横幅と縦の幅を同じにすることで円を描画することができる
Example
ellipse(100,100,50,50)
ellipse(x座標 , y座標 , 横の直径 , 縦の直径)
直線の描き方
27
始点と終点を指定する
Example
line(50,50,100,100)
line(始点x座標 , 始点y座標 , 終点x座標 , 終点y座標)
円を動かそう!
28
円が動かない...!?
29
上から順に
1回だけ実行される
円を動かそう!(真)
def setup():
size(500, 500)
background(255)
rect(50,50,50,300)
line(50,50,150,50)
def draw():
ellipse(mouseX, mouseY, 50, 50)
30
1回だけ実行される
繰り返し実行される
ゴール
31
保存の方法
左上の「ファイル」から
32
応用問題
ヒント:今日学んだ内容だけで実現できます!!
=> 実演へ
33
次回予告
34
第2回 お絵描きソフトをつくろう
18日(木)16:30~19:00
20日(土)13:00~16:00
第3回 オリジナルの機能をつけよう
23日(火)16:30~19:00
24日(水)16:30~19:00
第1回終了です
お疲れ様でした
35
今後の予定(4月)
第1回
16日(火)16:30~19:00 図書館セミナールーム2
第2回
18日(木)16:30~19:00 図書館セミナールーム2
20日(土)13:00~16:00 地域デザイン棟
第3回
23日(火)16:30~19:00 地域デザイン棟
24日(水)16:30~19:00 図書館セミナールーム2
新歓食事会
27日(土)18:00~ デザイン棟集合
Processingで
お絵かきソフトを作ろう!!
Processingではじめるプログラミング入門
第2回 お絵かきソフトを作ろう
前回のおさらい
def setup():
size(500, 500)
background(255)
rect(50,50,50,300)
line(50,50,150,50)
def draw():
ellipse(mouseX, mouseY, 50, 50)
37
1回だけ実行される
繰り返し実行される
新しいスケッチを作ろう
ファイル → 新規
38
図形を自由自在に使いこなそう
線の太さを変えたい! → strokeWeight()
線の色を変えたい! → stroke()
塗りつぶしの色を変える → fill()
線を消したい → noStroke()
塗りつぶしを消したい → noFill()
39
線の太さを変える
線の太さを変更できる
図形を描く前に指定
ellipseの直前など
40
線の色を変える
図形のフチの線の色
色は光の三原色でも指定できる
256 x 256 x 256 = 16777216 色
こんなに表現できる!
41
色の指定について
42
前回
今回
塗りつぶしの色を変える
図形の中の色を指定できる
43
線、塗りつぶしを消す
noStrokeで線を消す
noFillで中の色を消す
44
演習
45
ランダムな動きを取り入れよう
mouseX だけじゃ物足りないときに!
random(0,255)�23,26,45,212,98,56,9,89,.....�実行されるたびにランダムな数になる!
mouseX , mouseY のところに random(0,500) と書いてみよう。
46
演習
47
お絵かきソフトに近づけよう
def setup():
size(600,350)
noFill()
background(255)
fill(0)
def draw():
ellipse(mouseX,mouseY,10,10)
48
お絵かきソフトに近づけよう
49
クリックしたときだけ線を引こう
50
if文(条件分岐)
if 条件:
させたい処理
させたい処理
...
51
マウスが押されてるときだけ、線を引きたい!!
Example
if mousePressed:
ellipse(mouseX,mouseY,10,10)
if文(条件分岐)
52
難しいおはなし
def draw(): → 1秒間に30回???
フレームレート�1秒間に生成させる画像の数 → processingでは30回!!� → 30回drawしている!!
53
映像の原理
小さな変化を短い時間でたくさん�繰り返すことで映像として見える
・ストップモーション�・パラパラ漫画�・人間の目
54
途切れない線を引こう
55
if文(条件分岐)
if 条件:
させたい処理
else:
させたい処理
56
上の条件が成り立たなかったら
実行される。
if文(条件分岐)
if 条件:
させたい処理
else:
させたい処理
もし スペースキーを押したら:
ジャンプする
違ったら:
前に進む
57
線の太さを変えよう
58
strokeWeight(10)
Reference
strokeWeight(太さ)
線の色を変えよう
stroke(色)
ex)
stroke(122) (白黒)
stroke(0, 0, 255) (光の3原色で指定できる)
※ 各値は0〜255まで指定できる
59
演習
60
次回予告
61
第3回 オリジナルの機能をつけよう
23日(火)16:30~19:00
24日(木)16:30~19:00
第2回終了です
お疲れ様でした
62
今後の予定(4月)
第2回
20日(土)13:00~16:00 地域デザイン棟
第3回
23日(火)16:30~19:00 地域デザイン棟
24日(水)16:30~19:00 図書館セミナールーム2
新歓食事会
27日(土)18:00~ デザイン棟集合
Processingで
お絵かきソフトを作ろう!!
Processingではじめるプログラミング入門
第3回 オリジナルの機能をつけよう
前回の復習
64
図形を操作できるようになった
前回の復習
条件分岐が使えるようになった
if 条件:
させたい処理
させたい処理
...
65
条件分岐で出来ることを増やそう
条件分岐でできること
mousePressed … マウスのボタンが押されているかを判別
keyPressed … キーボードが押されているかを判別 ←New!
比較演算子の使用 ←New!
66
比較演算子
2つの値の関係を調べ、その関係が成立するかどうか判断するもの
・「== (等しいか)」
・「> (大きいか)」
・「< (小さいか)」
など
条件分岐で使える!
67
比較演算子
2つの値の関係を調べ、その関係が成立するかどうか判断するもの
・「== (等しいか)」
・「> (大きいか)」
・「< (小さいか)」
など
条件分岐で使える!
68
とりあえず書いてみよう!
比較演算子の例
def setup():� size(500,500)� background(0)
�def draw():� if mouseX > 250:� ellipse(mouseX,mouseY,50,50)
69
色を変えよう
70
keyPressed のつかいかた
def setup():� size(500,500)� background(255)
def draw():� if keyPressed:� background(random(50,255),random(50,255),random(50,255))
71
keyPressed と key の組み合わせ
def draw():� if keyPressed:� if key == “r”:� background(255, 0, 0)� if key == “g”:� background(0, 255, 0)� if key == “b”:� background(0, 0, 255)
72
入れ子の処理
if keyPressed:� fill(255, 0, 0)� ellipse(mouseX, mouseY, 300, 300)� if key == “a”:� fill(0, 255, 0)� ellipse(mouseX, mouseY, 200, 200)�fill(0, 0, 255)�ellipse(mouseX, mouseY, 100, 100)
73
Column
:
コロン
条件式の終わりを示す
スコープ (入れ子の処理)
if keyPressed:� fill(255, 0, 0)� ellipse(mouseX, mouseY, 300, 300)� if key == “a”:� fill(0, 255, 0)� ellipse(mouseX, mouseY, 200, 200)�fill(0, 0, 255)�ellipse(mouseX, mouseY, 100, 100)
74
if 条件式1:
fill(0, 0, 255)
(させたい処理群1)
…
if 条件式2:
(させたい処理群2)
:条件式が成り立つとき
:条件式が成り立たないとき
色を変えよう
75
Example
if key == “a” :
ellipse(mouseX,mouseY,10,10)
算術演算子
『+』...「+」の役割を持つ
『-』...「-」の役割を持つ
『*』...「×」の役割を持つ
『\』...「÷」の役割を持つ
『%』... 割った時のあまりを計算してくれる
76
お絵かきソフトを作ろう!
クリックしたときだけ線が引ける
キーボードで線の色が変えられる
消しゴム機能
全消し機能
77
絵を画像として保存しよう
78
オリジナルの機能を作ろう!!!
わからないことや、気になることがあればどんどん質問してください
79
第3回終了です
お疲れ様でした
新歓食事会でお会いしましょう!!!
80
今後の予定(4月)
第3回
24日(水)16:30~19:00 図書館セミナールーム2
新歓食事会
27日(土)18:00~ デザイン棟集合