Array ObjectΒΆ

Demonstrates the syntax for creating an array of custom objects.

from p5 import *

unit = 40
count = None
mods = []

def setup():
        size(640, 360)
        no_stroke()

        global count, unit, mods
        wideCount = width / unit
        highCount = height / unit

        count = wideCount * highCount
        index = 0
        for y in range(int(highCount)):
                for x in range(int(wideCount)):
                        mods.append(Module(x*unit, y*unit, unit/2, unit/2, random_uniform(0.05, 0.8), unit))

def draw():
        background(0)
        for mod in mods:
                mod.update()
                mod.display()

class Module:
        def __init__(self, xOffsetTemp, yOffsetTemp, xTemp, yTemp, speedTemp, tempUnit):
                self.xOffset = xOffsetTemp
                self.yOffset = yOffsetTemp

                self.x = xTemp
                self.y = yTemp
                self.speed = speedTemp
                self.unit = tempUnit

                self.xDirection = 1
                self.yDirection = 1

        def update(self):
                self.x = self.x + (self.speed * self.xDirection)
                if self.x > unit or self.x <= 0:
                        self.xDirection *= -1
                        self.x += self.xDirection
                        self.y += self.yDirection
                elif self.y > unit or self.y <= 0:
                        self.yDirection *= -1
                        self.y += yDirection

        def display(self):
                fill(255)
                ellipse((self.xOffset + self.x, self.yOffset + self.y), 6, 6)


if __name__ == '__main__':
        run()