memorandums

日々の作業ログです。

Processing.pyで初コーディング

Pythonを真面目にかいたことがありません。

機械学習系の本では常にでてきますから少しは触ったことはあります。教科書もいくつか買ってパラパラと読んだことはありましたが。。。

ちょっと暇だったので、さくっと書いてみることにしました。

Processingを起動して、Pythonモードを追加して。。。いざコーディング。

いろいろとつまずきましたが、とりあえずできたのが以下でした。p5jsみたいにサクっとWebに公開できないのが寂しいですが。。。まぁ、しかたがないですね。

class Ball:
    def __init__(self):
        self.x = width / 2
        self.y = height / 2
        self.dx = random(-10, 10)
        self.dy = random(-10, 10)
        
    def draw(self):
        self.x += self.dx
        self.y += self.dy
        if self.x<0 or self.x>=width:
            self.dx = -self.dx
        elif self.y<0 or self.y>=height:
            self.dy = -self.dy
        circle(self.x,self.y,20)

a = []

def setup():
    size(400, 400)
    for i in range(1,100):
        a.append(Ball())
        
def draw():
    background(mouseX)
    for b in a:
        b.draw()

第一引数にselfを書かなければならないというルールには驚きました。自作クラスはselfだらけですね。。。

しかもたちが悪いのは、書かなくても動作するところです。。。書かない場合に違う挙動になります。

上記のコードもglobalを使わないと動かないはずなのに、いつのまにか動き出したり。。。よくわかりません。

pythonの仕様なのか、Processing.pyの仕様なのかの区別もついていない状況です。

ちょっと興味がわいたので、Pythonの言語仕様を勉強してみようと思います。

いろいろとググっては見たのですが、わからないことが多いので、原典にあたるべきと思いました。

とりあえずリファレンスを読めってところでしょうか?

Python 言語リファレンス — Python 3.8.3 ドキュメント