こんにちはダダです
今回の記事はプログラミング言語 pythonの関数についてです

この記事を見ると上記の画像のような上にある絵のような〇裂拳が打てるようになります
以前別の記事で変数についてを描きましたが
変数とは簡単に説明すると数字や文字列をxやyといった文字に代入するという物です
変数については以下の記事を参照してください
【超初心者向け】Processingを使ってプログラミング言語Pythonの変数について
しかし、変数は複数の処理をまとめたり代入したりすることができません
そんな時に役に立つものが関数です
では、実際に関数を使いながらやってみます
関数とは
関数は複数の処理を一つにまとめる仕組みです
仕組みを理解していくために、実際に何か一つ作っていきましょう
パンチする画像を作っていきます
size(900,600)
background(0)
stroke(0)
strokeWeight(10)
fill(255)
rect(100, 100, 60, 130)
rect(160, 100, 55, 130)
rect(210, 100, 50, 130)
rect(260, 100, 45, 130)
strokeWeight(7)
rect(90, 170, 85, 70)
stroke(255)
rect(110, 100, 170, 35)
入力・実行

こんな感じで出てきました
世紀末を生きてこられた方たちは様々な意見が寄せられました

こんなパンチじゃ足りん!!

こんなのじゃ、世紀末は生き抜けんよ

パンチをいっぱい打てるようになって〇裂拳にしたいです
という方も中にはいると思います
ということで、パンチを少し増やしていきますがコードをコピペするだけでは長くなるだけでうんざりしてきます
そんな時に役に立つのが関数です
パンチを増やしていく前に少しパンチを短いコードで打てるようにしましょう
パンチを関数にしてみよう
size(900,600)
background(0)
def panchi():
stroke(0)
strokeWeight(10)
fill(255)
rect(100, 100, 60, 130)
rect(160, 100, 55, 130)
rect(210, 100, 50, 130)
rect(260, 100, 45, 130)
strokeWeight(7)
rect(90, 170, 85, 70)
stroke(255)
rect(110, 100, 170, 35)
pabchi()
入力・実行

コードの内容が変わりましたが、同じものが出てきました
コードの違いが分かりましたか?
関数の方にはdefという枠組みができています
最後にpanchi()があります
それを消すと

こんな感じで真っ黒だけが残ります
では、少しコードの仕組みについて話をしていきます
関数のコードの仕組み

図にするとこんな感じになります
defというキーワードを入力し、名前を決めます
※注意※ 名前の後に()と:は忘れないように
その下に関数の内容を打ち込んでいきますが、関数の内容は必ず先頭からインデントと呼ばれるスペースを空けつ必要があります
1Tabもしくは4スペース分の空白が必要です
※注意※ 全角で空白を作るとエラーが出ます
関数の作成が出来たらキーワードと()を打ちこむと関数の内容を呼び出すことができます
これでパンチを打つまでに長かったコードが1行で打てるようになりました
関数の便利なところは長いコードを毎回書かなくても関数にすることで簡単に呼び出すことができることです
ただ、ここでも世紀末を生きてこられた方は

同じ場所しか打てねーじゃないか

こんなのじゃ、モヒカンのヒャッハーにも勝てんよ

パンチをいっぱい打てるようになって〇裂拳にしたいです
世紀末出身者がいうように、ただ呼び出せるようになるだけだと使える範囲が限られてくるので不便と思うかもしれません
しかし、関数はさらに応用が利きます
関数の応用
()内に変数を組み込むことで使い方に幅が出てきます
変数って何?と思われた方は別記事で紹介していますのでこちらをどうぞ
【Processing Python】プログラミング Python 変数について
size(900,600)
background(0)
def panchi(x, y):
stroke(0)
strokeWeight(10)
fill(255)
rect(100+x, 100+y, 60, 130)
rect(160+x, 100+y, 55, 130)
rect(210+x, 100+y, 50, 130)
rect(260+x, 100+y, 45, 130)
strokeWeight(7)
rect(90+x, 170+y, 85, 70)
stroke(255)
rect(110+x, 100+y, 170, 35)
panchi(200, 200)
panchi(10, 10)
入力・実行

増やすことができました
またしても、世紀末を生きてこられた方は

5回以上のパンチはめんどくさい

こんなのじゃ、ハ〇ト様にも勝てんよ

パンチをいっぱい打てるようになって〇裂拳にしたいです
確かに、短くなったとは言えコードを繰り返し書き込むようでは手間と時間がかかります
ということで、関数を利用して繰り返しとランダムを使っていきます
※繰り返しとランダムはまた別記事を作成していく予定です
関数と他の関数との組み合わせ
自作した関数と繰り返し関数とランダム関数を組み合わせることで、世紀末を生きてこられた方たちを満足させたいです
size(1900,1300)
background(0)
def panchi(x, y):
stroke(0)
strokeWeight(10)
fill(255)
rect(100+x, 100+y, 60, 130)
rect(160+x, 100+y, 55, 130)
rect(210+x, 100+y, 50, 130)
rect(260+x, 100+y, 45, 130)
strokeWeight(7)
rect(90+x, 170+y, 85, 70)
stroke(255)
rect(110+x, 100+y, 170, 35)
for i in range(100):
r = random(100+i)
rr = random(100)
panchi(10*r, 10*rr)
こんな感じになります
入力と出力


これならいけるぜ

世紀末もよゆー

パンチをいっぱい打てるようになって〇裂拳にしたいです
世紀末出身の方もご満足いただけたようで何よりです

この度Udemyで講座を作りました
【プログラミングxアート】直感的・視覚的に学ぶ Processing×Python 入門講座
ブログに書いてある内容を一つの講座にしています
まとめ
関数を自作すると簡単に作ったものが出力できます
関数を使うことでコードを短くすることができるので短いコードでより大きな作品も作れるようになると思います
ただ使い方を覚えるには少し工夫も必要かもしれません
細かい内容等があれば順次追加更新していきます
もっとPythonをを学んでみたい方は以下のリンクから無料のカウンセリングを受けることができます
python特化型オンラインスクールの無料カウンセリング申し込み
実際に第三者よりカウンセリングを受けることでわかることも多いと思います
今後のプログラミングを学ぶ上で一つのきっかけになるかもしれませんので、よかったら試してみてください
おまけ
動画にするとより〇裂拳っぽくなりました
コメント