from pypdevs.DEVS import AtomicDEVS, CoupledDEVS from pypdevs.simulator import Simulator from pypdevs.infinity import INFINITY import random import Tkinter as tk import math class Ball(AtomicDEVS): def __init__(self, ball_id, canvas): AtomicDEVS.__init__(self, "Ball[%i]" % ball_id) self.collision_detect = self.addInPort("colision_detect") self.position_out = self.addOutPort("position_out") self.ball_spawner_comm = self.addOutPort("ball_spawner") self.ball_id = ball_id self.canvas = canvas self.r = random.uniform(5.0, 20.0) self.vel = {'x': random.random() * 5.0 - 1.0, 'y': random.random() * 5.0 - 1.0} self.initialized = False self.event = None self.curr_state = "bouncing" self.pos = None self.time_passed = 0 self.collision_detected = False x = random.uniform(0, self.canvas.canvasx(self.canvas.winfo_width()) - (self.r * 2 + 1)) y = random.uniform(0, self.canvas.canvasy(self.canvas.winfo_height()) - (self.r * 2 + 1)) self.id = self.canvas.create_oval(x, y, x + (self.r * 2), y + (self.r * 2), fill="red") ''' TODO: not legal ''' self.canvas.tag_bind(self.id, "