### simulation of particles diffusion
import simplegui
import random
# Golbal constants
WIDTH = 600; HEIGHT = 400; PARTICLE_RADIUS = 5; VEL = 4
COLOR_LIST = ["Red", "White", "Aqua", "Blue"]
DIRECTION_LIST = [[VEL,0],[-VEL,0],[0, VEL],[0,-VEL]]
# definition of a particle class
class particle:
def __init__(self, pos, color):
self.pos = pos
self.color = color
def move(self, offset):
self.pos[0] += offset[0]
self.pos[1] += offset[1]
def draw(self, canvas):
canvas.draw_circle(self.pos, PARTICLE_RADIUS, 20, self.color, self.color)
def __str__(self):
return "particle with position" + str(self.pos) + " and color" + self.color
# create a list of particles
particle_list = []
for i in range(1000):
j = particle([WIDTH/2,HEIGHT/2],random.choice(COLOR_LIST))
particle_list.append(j)
# draw handler
def draw(canvas):
for j in particle_list:
j.move(random.choice(DIRECTION_LIST))
for j in particle_list:
j.draw(canvas)
# create frame and register draw handler
frame = simplegui.create_frame("particle simulation", WIDTH, HEIGHT)
frame.set_draw_handler(draw)
# start frame
frame.start()
import simplegui
import random
# Golbal constants
WIDTH = 600; HEIGHT = 400; PARTICLE_RADIUS = 5; VEL = 4
COLOR_LIST = ["Red", "White", "Aqua", "Blue"]
DIRECTION_LIST = [[VEL,0],[-VEL,0],[0, VEL],[0,-VEL]]
# definition of a particle class
class particle:
def __init__(self, pos, color):
self.pos = pos
self.color = color
def move(self, offset):
self.pos[0] += offset[0]
self.pos[1] += offset[1]
def draw(self, canvas):
canvas.draw_circle(self.pos, PARTICLE_RADIUS, 20, self.color, self.color)
def __str__(self):
return "particle with position" + str(self.pos) + " and color" + self.color
# create a list of particles
particle_list = []
for i in range(1000):
j = particle([WIDTH/2,HEIGHT/2],random.choice(COLOR_LIST))
particle_list.append(j)
# draw handler
def draw(canvas):
for j in particle_list:
j.move(random.choice(DIRECTION_LIST))
for j in particle_list:
j.draw(canvas)
# create frame and register draw handler
frame = simplegui.create_frame("particle simulation", WIDTH, HEIGHT)
frame.set_draw_handler(draw)
# start frame
frame.start()