diffusion simulation

### 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()










  
    
        
    


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值