def testParticleIsColocated(self):
     p = PiltonParticle(1, 2, 3)
     others = {
         PiltonParticle(1, 2, 5): True,
         PiltonParticle(2, 2, 3): False
     }
     for o in others:
         msg = "p={0} o={1} expect={2}".format(p, o, others[o])
         self.assertEqual(p.is_colocated(o), others[o], msg)
 def testParticleImmutability(self):
     p = PiltonParticle(1, 2, 3)
     with self.assertRaises(AttributeError):
         p.x = 4
     with self.assertRaises(AttributeError):
         p.y = 4
     with self.assertRaises(AttributeError):
         p.mass = 4
     with self.assertRaises(AttributeError):
         p.location = (1, 2)
Example #3
0
def makeParticles(*tuples, mass=None):
    if mass:
        return [PiltonParticle(l[0], l[1], mass) for l in tuples]
    else:
        return [PiltonParticle(p[0], p[1], p[2]) for p in tuples]
 def testParticleLocation(self):
     p1 = PiltonParticle(1, 2, 3)
     p2 = PiltonParticle(2, 1, 3)
     p3 = PiltonParticle(1, 2, 4)
     self.assertTrue(p1.location != p2.location, "different locations")
     self.assertTrue(p1.location == p3.location, "same location")
 def testParticleEquality(self):
     p = PiltonParticle(1, 2, 3)
     self.assertEqual(p, PiltonParticle(1, 2, 3), "equal")
     self.assertNotEqual(p, PiltonParticle(4, 2, 3), "x differs")
     self.assertNotEqual(p, PiltonParticle(1, 4, 3), "y differs")
     self.assertNotEqual(p, PiltonParticle(1, 2, 4), "mass differs")
 def testParticleProperties(self):
     p = PiltonParticle(1, 2, 3)
     self.assertEqual(p.x, 1, "x")
     self.assertEqual(p.y, 2, "y")
     self.assertEqual(p.mass, 3, "mass")
Example #7
0
from tkinter import StringVar
from tkinter import BooleanVar
from tkinter import Text
from PiltonWorld import PiltonParticle
from PiltonWorld import PiltonWorldState

# ----- Core dimensions
_cols = 7
_rows = 7
_cell_width_pixels = 35  # cells are square, so height == width
_grid_width_pixels = _cols * _cell_width_pixels + 1
_grid_height_pixels = _rows * _cell_width_pixels + 1

# ----- Model

starting_particles = [PiltonParticle(3, 2, 1)]

ps = PiltonWorldState(_cols, _rows)
ps.particles = starting_particles

# ----- Controller

status_prefix = "World {0}x{1}".format(_cols, _rows)


def particles_text(ps):
    return str([str(p) for p in ps.particles]).replace("'", "")


def update_display():
    textcanvas.delete('all')