![](https://i0.wp.com/dsdiary.blog/wp-content/uploads/2021/10/panchi4.png?resize=920%2C630&ssl=1)
今回の記事では、プログラミング言語Pythonの関数について解説します。この記事を読むと、上記の画像にあるような「〇裂拳」のようなアニメーションが作れるようになります!
以前、別の記事で変数についても紹介しましたが、変数とは数字や文字列を「x」や「y」といったシンボルに代入する仕組みのことです。変数の基本をまだご存知でない方は、以下の記事を参考にしてみてください。
今回は、関数の仕組みを理解して、もっと高度なプログラム作成に挑戦しましょう!
【超初心者向け】Processingを使ってプログラミング言語Pythonの変数について
しかし、変数は複数の処理をまとめたり代入したりすることができません
そんな時に役に立つものが関数です
では、実際に関数を使いながらやってみます
ブログではわかりにくい方はUdemyで講座にしているのでこちらもチェックしてみてください
関数とは
関数は複数の処理を一つにまとめる仕組みです
仕組みを理解していくために、実際に何か一つ作っていきましょう
パンチする画像を作っていきます
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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) |
入力・実行
![](https://i0.wp.com/dsdiary.blog/wp-content/uploads/2021/08/panchi.png?resize=900%2C600&ssl=1)
![](https://i0.wp.com/image.moshimo.com/af-img/0288/000000080967.png?resize=728%2C90)
こんな感じで出てきました
世紀末を生きてこられた方たちは様々な意見が寄せられました
![青年A](https://i0.wp.com/dsdiary.blog/wp-content/uploads/2021/08/25d935decaf7e10f67a2311f4f51c4b9.png?resize=150%2C150&ssl=1)
こんなパンチじゃ足りん!!
![青年B](https://i0.wp.com/dsdiary.blog/wp-content/uploads/2021/08/5090ea4155c9e2fddcc6bf89514e77fd.jpg?resize=150%2C150&ssl=1)
こんなのじゃ、世紀末は生き抜けんよ
![青年C](https://i0.wp.com/dsdiary.blog/wp-content/uploads/2021/08/0fb95f4d483cd074df31976192967a97.jpg?resize=150%2C150&ssl=1)
パンチをいっぱい打てるようになって〇裂拳にしたいです
という方も中にはいると思います
ということで、パンチを少し増やしていきますがコードをコピペするだけでは長くなるだけでうんざりしてきます
そんな時に役に立つのが関数です
パンチを増やしていく前に少しパンチを短いコードで打てるようにしましょう
パンチを関数にしてみよう
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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() |
![](https://i0.wp.com/www18.a8.net/0.gif?resize=1%2C1&ssl=1)
入力・実行
![](https://i0.wp.com/dsdiary.blog/wp-content/uploads/2021/08/panchi.png?resize=900%2C600&ssl=1)
コードの内容が変わりましたが、同じものが出てきました
コードの違いが分かりましたか?
関数の方にはdefという枠組みができています
最後にpanchi()があります
それを消すと
![](https://i0.wp.com/dsdiary.blog/wp-content/uploads/2021/08/panchi1.png?resize=900%2C600&ssl=1)
こんな感じで真っ黒だけが残ります
では、少しコードの仕組みについて話をしていきます
関数のコードの仕組み
![](https://i0.wp.com/dsdiary.blog/wp-content/uploads/2021/08/91a8d8420e8f23e5bdc5980a9486ecc7.png?resize=777%2C694&ssl=1)
図にするとこんな感じになります
defというキーワードを入力し、名前を決めます
※注意※ 名前の後に()と:は忘れないように
その下に関数の内容を打ち込んでいきますが、関数の内容は必ず先頭からインデントと呼ばれるスペースを空けつ必要があります
1Tabもしくは4スペース分の空白が必要です
※注意※ 全角で空白を作るとエラーが出ます
関数の作成が出来たらキーワードと()を打ちこむと関数の内容を呼び出すことができます
これでパンチを打つまでに長かったコードが1行で打てるようになりました
関数の便利なところは長いコードを毎回書かなくても関数にすることで簡単に呼び出すことができることです
ただ、ここでも世紀末を生きてこられた方は
![青年A](https://i0.wp.com/dsdiary.blog/wp-content/uploads/2021/08/25d935decaf7e10f67a2311f4f51c4b9.png?resize=150%2C150&ssl=1)
同じ場所しか打てねーじゃないか
![青年B](https://i0.wp.com/dsdiary.blog/wp-content/uploads/2021/08/5090ea4155c9e2fddcc6bf89514e77fd.jpg?resize=150%2C150&ssl=1)
こんなのじゃ、モヒカンのヒャッハーにも勝てんよ
![青年C](https://i0.wp.com/dsdiary.blog/wp-content/uploads/2021/08/0fb95f4d483cd074df31976192967a97.jpg?resize=150%2C150&ssl=1)
パンチをいっぱい打てるようになって〇裂拳にしたいです
世紀末出身者がいうように、ただ呼び出せるようになるだけだと使える範囲が限られてくるので不便と思うかもしれません
しかし、関数はさらに応用が利きます
関数の応用
()内に変数を組み込むことで使い方に幅が出てきます
変数って何?と思われた方は別記事で紹介していますのでこちらをどうぞ
【Processing Python】プログラミング Python 変数について
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
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) |
![](https://i0.wp.com/image.moshimo.com/af-img/0288/000000080967.png?resize=728%2C90)
入力・実行
![](https://i0.wp.com/dsdiary.blog/wp-content/uploads/2021/08/panchi3.png?resize=900%2C600&ssl=1)
増やすことができました
またしても、世紀末を生きてこられた方は
![青年A](https://i0.wp.com/dsdiary.blog/wp-content/uploads/2021/08/25d935decaf7e10f67a2311f4f51c4b9.png?resize=150%2C150&ssl=1)
5回以上のパンチはめんどくさい
![青年B](https://i0.wp.com/dsdiary.blog/wp-content/uploads/2021/08/5090ea4155c9e2fddcc6bf89514e77fd.jpg?resize=150%2C150&ssl=1)
こんなのじゃ、ハ〇ト様にも勝てんよ
![青年C](https://i0.wp.com/dsdiary.blog/wp-content/uploads/2021/08/0fb95f4d483cd074df31976192967a97.jpg?resize=150%2C150&ssl=1)
パンチをいっぱい打てるようになって〇裂拳にしたいです
確かに、短くなったとは言えコードを繰り返し書き込むようでは手間と時間がかかります
ということで、関数を利用して繰り返しとランダムを使っていきます
※繰り返しとランダムはまた別記事を作成していく予定です
関数と他の関数との組み合わせ
自作した関数と繰り返し関数とランダム関数を組み合わせることで、世紀末を生きてこられた方たちを満足させたいです
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
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) |
こんな感じになります
入力と出力
![](https://i0.wp.com/dsdiary.blog/wp-content/uploads/2021/08/panchi4.png?resize=920%2C630&ssl=1)
![](https://i0.wp.com/www18.a8.net/0.gif?resize=1%2C1&ssl=1)
![青年A](https://i0.wp.com/dsdiary.blog/wp-content/uploads/2021/08/0fb95f4d483cd074df31976192967a97.jpg?resize=150%2C150&ssl=1)
これならいけるぜ
![青年B](https://i0.wp.com/dsdiary.blog/wp-content/uploads/2021/08/0fb95f4d483cd074df31976192967a97.jpg?resize=150%2C150&ssl=1)
世紀末もよゆー
![青年C](https://i0.wp.com/dsdiary.blog/wp-content/uploads/2021/08/0fb95f4d483cd074df31976192967a97.jpg?resize=150%2C150&ssl=1)
パンチをいっぱい打てるようになって〇裂拳にしたいです
世紀末出身の方もご満足いただけたようで何よりです
まとめ
関数を自作すると簡単に作ったものが出力できます
関数を使うことでコードを短くすることができるので短いコードでより大きな作品も作れるようになると思います
ただ使い方を覚えるには少し工夫も必要かもしれません
細かい内容等があれば順次追加更新していきます
もしわからないことがあれば、このブログやXに質問等を投げていただければと思います。また、コミュニティもやっっているのでそちらから質問を投げていただいても大丈夫ですよ!!
Xのアカウントはこちら
Discordコミュニティ
プログラミングを視覚的に理解したい方やプログラミングで絵を書いてみたい方はUdemyで講座も作っているのでこちらも参考にしてみてください
Udemy講座
ChatGPTでPythonの学習を始めてみたい方は以下の記事を参考にしてみてください
関連記事
ChatGPTはプログラミングの学習はできても、人のつながりまでは作ってくれません。
プログラミングの学習だけではなく、人との繋がりを作ってくれるスクールもオススメです。
気になる方は無料相談からでも体験してみてください!!
おまけ
動画にするとより〇裂拳っぽくなりました