【初心者向け】Processingでプログラミング言語pythonの関数を使ってみよう

Processing python

こんにちはダダです

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

この記事を見ると上記の画像のような上にある絵のような〇裂拳が打てるようになります

以前別の記事で変数についてを描きましたが

変数とは簡単に説明すると数字や文字列をxやyといった文字に代入するという物です

変数については以下の記事を参照してください

【超初心者向け】Processingを使ってプログラミング言語Pythonの変数について

しかし、変数は複数の処理をまとめたり代入したりすることができません

そんな時に役に立つものが関数です

では、実際に関数を使いながらやってみます

この記事はProcessingというソフトを使用して書いています

設定がJavaではなくPythonに変更してください

Java設定だとエラーが出る場合があるので注意してください

↓↓↓Processingって何?という方はこちらの記事を↓↓↓

↓↓↓Processingのインストールや設定の変更についてはこちらの記事を↓↓↓

関数とは

関数は複数の処理を一つにまとめる仕組みです

仕組みを理解していくために、実際に何か一つ作っていきましょう

パンチする画像を作っていきます

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)

入力・実行

こんな感じで出てきました

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

青年A
青年A

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

青年B
青年B

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

青年C
青年C

パンチをいっぱい打てるようになって〇裂拳にしたいです

という方も中にはいると思います

ということで、パンチを少し増やしていきますがコードをコピペするだけでは長くなるだけでうんざりしてきます

そんな時に役に立つのが関数です

パンチを増やしていく前に少しパンチを短いコードで打てるようにしましょう

パンチを関数にしてみよう

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行で打てるようになりました

関数の便利なところは長いコードを毎回書かなくても関数にすることで簡単に呼び出すことができることです

ただ、ここでも世紀末を生きてこられた方は

青年A
青年A

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

青年B
青年B

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

青年C
青年C

パンチをいっぱい打てるようになって〇裂拳にしたいです

世紀末出身者がいうように、ただ呼び出せるようになるだけだと使える範囲が限られてくるので不便と思うかもしれません

しかし、関数はさらに応用が利きます

関数の応用

()内に変数を組み込むことで使い方に幅が出てきます

変数って何?と思われた方は別記事で紹介していますのでこちらをどうぞ

【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)

入力・実行

増やすことができました

またしても、世紀末を生きてこられた方は

青年A
青年A

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

青年B
青年B

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

青年C
青年C

パンチをいっぱい打てるようになって〇裂拳にしたいです

確かに、短くなったとは言えコードを繰り返し書き込むようでは手間と時間がかかります

ということで、関数を利用して繰り返しとランダムを使っていきます

※繰り返しとランダムはまた別記事を作成していく予定です

関数と他の関数との組み合わせ

自作した関数と繰り返し関数とランダム関数を組み合わせることで、世紀末を生きてこられた方たちを満足させたいです

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)

こんな感じになります

入力と出力

青年A
青年A

これならいけるぜ

青年B
青年B

世紀末もよゆー

青年C
青年C

パンチをいっぱい打てるようになって〇裂拳にしたいです

世紀末出身の方もご満足いただけたようで何よりです

まとめ

関数を自作すると簡単に作ったものが出力できます

関数を使うことでコードを短くすることができるので短いコードでより大きな作品も作れるようになると思います

ただ使い方を覚えるには少し工夫も必要かもしれません

細かい内容等があれば順次追加更新していきます

おまけ

動画にするとより〇裂拳っぽくなりました

コメント

タイトルとURLをコピーしました