粒子のクラス

粒子のクラス

クラスは、変数(データの保持)と関数(処理)の機能を併せ持っています。
ここでは、粒子1個に対応したクラスを作成します。

#粒子のクラスの定義
class Ball:

    #初期処理
    def __init__(self, id):
        #インスタンスの保持するデータ
        self.id = id
        self.x = 0.0
        self.y = 0.0
        self.vx = 1.0
        self.vy = 1.0
        self.r = 0.2
        self.m = 0.2
        self.color = (255,255,255)
    def move(self):
        self.x += self.vx*t_scale
        self.y += self.vy*t_scale
    def show(self):
        pygame.draw.circle(screen, self.color, (xtogx(self.x), ytogy(self.y)), rtogr(self.r))

クラスはデータを保持することができ、
(クラスの初期処理関数 __init__ の中に書く。self.をつける)
処理を記述することができます。
(1段下げて、classの中の関数として def で関数を定義する。第1引数として、必ず self を入れる)

座標系の変換クラスの実体(インスタンス)を作る

上はクラスの定義を行っただけで、クラスの実体は作成されていません。

#1個だけ作る
ball1 = Ball(0)
#リストとして作る ball[0], ball[1], ball[2] として3個の粒子を作成
ball = [Ball(0), Ball(1), Ball(2)]
#リスト内包表記を利用して一度に作る ball[0]~ball[19] として 20個の粒子を作成
ball = [Ball(x) for x in range(0,20)]