粒子のクラス
クラスは、変数(データの保持)と関数(処理)の機能を併せ持っています。
ここでは、粒子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)]