Exemple #1
0
 def _generate_identity_(self, uid, *username):
     username = "******".join(username)
     try:
         disc = Disc(self.conn, values={"uid": uid, "u": username})
         row = self.conn.execute("SELECT MAX(instance) FROM disc WHERE user_id=?", (disc.uid,)).fetchone()
         if row[0] is not None:
             disc.instance = row[0] + 1
         else:
             disc.instance = 0
         disc.commit(self.conn, self)
     except:
         traceback.print_exc()
         raise
Exemple #2
0
    def __init__(self, height=0):
        assert (type(height) == int)

        # self.discs is stack with first item being bottom, last being top
        self.discs = []

        if height:
            for size in range(height, 0, -1):
                self.discs.append(Disc(size))
Exemple #3
0
 def login(self, identity):
     """Identifies yourself"""
     try:
         self.disc = Disc(self.conn, identity)
         print >> self, 'WELCOME', self.disc.username
         if 'god' in self.disc.extra:
             print >> self, 'G-G-G-OD MODE ENABLED'
     except ValueError, e:
         print '[%s] --- %s' % (self.addr, str(e))
         print >> self, 'CORRUPT DISC'
Exemple #4
0
 def setUp(self) -> None:
     """ create values for testing """
     self.PRECISION = 2
     self.disc1 = Disc(Center(1, 1), 3)
     self.disc2 = Disc(Center(-1, -1), 3)
     self.disc3 = Disc(Center(0, 0), 3)
     self.disc4 = Disc(Center(0, 1), 1)
     self.disc5 = Disc(Center(0, 0), 2)
     self.disc6 = None
class DiscTest(unittest.TestCase):

    def setUp(self):
        self.disc = Disc()
        self.prog = Mock()
        self.prog2 = Mock()
        when(self.prog).getName().thenReturn("Programa1")
        when(self.prog2).getName().thenReturn("Programa2")

    def test_getCellsEmpty(self):
        assert self.disc.getCells() == []

    def test_getCellsWithElements(self):
        self.disc.cells = [self.prog]
        assert self.disc.getCells() == [self.prog]

    def test_addProgram(self):
        self.disc.addProgram(self.prog)
        assert self.disc.cells == [self.prog]

    def test_getProgram(self):
        self.disc.cells = [self.prog,self.prog2]
        assert self.disc.getProgram("Programa2") == self.prog2
Exemple #6
0
class TestDisc(TestCase):
    def setUp(self) -> None:
        """ create values for testing """
        self.PRECISION = 2
        self.disc1 = Disc(Center(1, 1), 3)
        self.disc2 = Disc(Center(-1, -1), 3)
        self.disc3 = Disc(Center(0, 0), 3)
        self.disc4 = Disc(Center(0, 1), 1)
        self.disc5 = Disc(Center(0, 0), 2)
        self.disc6 = None

    def tast_init(self):
        self.assertEqual(self.disk1, '(x-1.00)**2 + (y-1.00)**2 = 9.00')
        self.assertEqual(self.disk2, '(x+1.00)**2 + (y+1.00)**2 = 9.00')
        self.assertEqual(self.disk2, '(x)**2 + (y)**2 = 9.00')
        self.assertEqual(self.disk1.radius, 3)
        self.assertEqual(self.disk1.center, (1, 1))

    def test_all(self):
        self.assertTrue(
            self.disc4.is_touching(self.disc5, precision=self.PRECISION))
        self.assertFalse(
            self.disc1.is_touching(self.disc2, precision=self.PRECISION))

        disc2 = Disc(Center(-1, -1), 3)
        (disc5, disc6) = disc2.inscribe_discs()
        self.assertEqual(str(disc5), "(x-3.00)**2 + (y-5.00)**2 = 4.00")
        self.assertEqual(str(disc6), "(x-7.00)**2 + (y-5.00)**2 = 4.00")

        self.assertEqual(str(disc2), "(x-5.00)**2 + (y-5.00)**2 = 36.00")
        disc2.transform_disc(-2)
        self.assertEqual(str(disc2), "(x-5.00)**2 + (y-5.00)**2 = 16.00")
        # Transformed disc is a new object
        disc = disc2.transformed_disc(2)
        self.assertIsinstance(disc, Disc)
        self.assertEqual(str(disc2), "(x-5.00)**2 + (y-5.00)**2 = 16.00")
        self.assertEqual(str(disc), "(x-5.00)**2 + (y-5.00)**2 = 36.00")
Exemple #7
0
 def _generate_identity_(self, uid, *username):
     username = '******'.join(username)
     try:
         disc = Disc(self.conn, values={'uid': uid, 'u': username})
         row = self.conn.execute('SELECT MAX(instance) FROM disc WHERE user_id=?', (disc.uid,)).fetchone()
         if row[0] is not None:
             disc.instance = row[0]+1
         else:
             disc.instance = 0
         disc.commit(self.conn, self)
     except:
         traceback.print_exc()
         raise
Exemple #8
0
def test_disc(pos, angles, veloc):
    print("Starting simulation...")

    disc = Disc(TICK_TIME)

    disc.begin_flight(pos, angles, veloc)
    x_coords, y_coords = [], []

    while disc.y > 0.0:
        disc.update_flight()
        x_coords += [disc.x]
        y_coords += [disc.y]
    plt.plot(x_coords, y_coords)
    plt.show()
Exemple #9
0
    def __init__(self):
        """
        Initializes the board by setting all of the initial values.
        """
        self.discs = [[Disc(EMPTY) for x in range(SIZE)] for y in range(SIZE)]

        self.discs[3][3].owner = WHITE
        self.discs[4][4].owner = WHITE

        self.discs[3][4].owner = BLACK
        self.discs[4][3].owner = BLACK

        self.scores = {WHITE: 2, BLACK: 2}
        self.depth = 0
        self.current_player = WHITE

        # _flips is a dict that caches move calculations.
        # get_discs_flipped and get_num_discs_flipped should be used instead of direct access.
        self._flips = {}

        # move_history holds each move as a 2D array [ [depth, player, pos], ...]
        # where pos is a tuple of (row, col)
        self.move_history = []
Exemple #10
0
    def test_all(self):
        self.assertTrue(
            self.disc4.is_touching(self.disc5, precision=self.PRECISION))
        self.assertFalse(
            self.disc1.is_touching(self.disc2, precision=self.PRECISION))

        disc2 = Disc(Center(-1, -1), 3)
        (disc5, disc6) = disc2.inscribe_discs()
        self.assertEqual(str(disc5), "(x-3.00)**2 + (y-5.00)**2 = 4.00")
        self.assertEqual(str(disc6), "(x-7.00)**2 + (y-5.00)**2 = 4.00")

        self.assertEqual(str(disc2), "(x-5.00)**2 + (y-5.00)**2 = 36.00")
        disc2.transform_disc(-2)
        self.assertEqual(str(disc2), "(x-5.00)**2 + (y-5.00)**2 = 16.00")
        # Transformed disc is a new object
        disc = disc2.transformed_disc(2)
        self.assertIsinstance(disc, Disc)
        self.assertEqual(str(disc2), "(x-5.00)**2 + (y-5.00)**2 = 16.00")
        self.assertEqual(str(disc), "(x-5.00)**2 + (y-5.00)**2 = 36.00")
Exemple #11
0
    def test(self, pos, angles, veloc):
        print("Starting simulation...")

        window = GraphWin("Frisbee Sim", 500, 500)

        disc = Disc(TICK_TIME)

        disc.begin_flight(pos, angles, veloc)
        disc_draw = Circle(Point(250, 250), 10)
        disc_draw.draw(window)
        disc_draw.setFill('red')

        while disc.y > 0.0:
            disc.update_flight()
            disc_draw.move(
                (disc.x - disc_draw.getCenter().x + 250) * pix_ratio,
                (disc.z - disc_draw.getCenter().y + 250) * pix_ratio)

            time.sleep(0.05)

        window.getMouse()
        window.close()
def create_discs(screen, discs):
    """Create discs and place it on the screen."""
    if len(discs) < 1:
        disc = Disc(screen)
        discs.add(disc)
Exemple #13
0
def testDiscClass():
    print('Testing Disc class...', end='')
    # Disc have two main properties:
    # center of disc and the radius of disc.
    # A Disc objects convert to a printable string as:
    assert str(Disc(Center(1, 1), 3)) == "(x-1.00)**2 + (y-1.00)**2 = 9.00"
    assert str(Disc(Center(5, 5), 4)) == "(x-5.00)**2 + (y-5.00)**2 = 16.00"
    assert str(Disc(Center(0, 3), 1)) == "(x)**2 + (y-3.00)**2 = 1.00"
    assert str(Disc(Center(0, 0), 2)) == "(x)**2 + (y)**2 = 4.00"
    assert str(Disc(Center(0, 1), 1)) == "(x)**2 + (y-1.00)**2 = 1.00"
    assert str(Disc(Center(1, 4), 1)) == "(x-1.00)**2 + (y-4.00)**2 = 1.00"
    # A Disc objects convert to a printable string as:
    assert str(Center(1, 4)) == "Center is x=1, y=4"

    disc1 = Disc(Center(1, 1), 3)
    assert str(disc1) == "(x-1.00)**2 + (y-1.00)**2 = 9.00"
    assert disc1.radius == 3
    assert isinstance(disc1.radius, int)
    assert disc1.center == (1, 1)

    disc2 = Disc(Center(5, 5), 4)
    assert str(disc2) == "(x-5.00)**2 + (y-5.00)**2 = 16.00"
    assert disc2.radius == 4
    assert disc2.center == (5, 5)

    # Whether the discs are touching
    assert Disc(Center(0, 1), 1).is_touching(Disc(Center(0, 0), 2),
                                             precision=PRECISION)
    assert not disc1.is_touching(disc2, precision=PRECISION)

    # inscribe_discs returns the two disks of the same radius
    # that inscribed in the given disc, are touching and
    # one coordinate coincides
    (disc5, disc6) = disc2.inscribe_discs()
    assert str(disc5) == "(x-3.00)**2 + (y-5.00)**2 = 4.00"
    assert str(disc6) == "(x-7.00)**2 + (y-5.00)**2 = 4.00"
    assert disc5.is_touching(disc6, precision=PRECISION)

    # We can transform disc
    disc2.transform_disc(2)
    assert str(disc2) == "(x-5.00)**2 + (y-5.00)**2 = 36.00"
    disc2.transform_disc(-2)
    assert str(disc2) == "(x-5.00)**2 + (y-5.00)**2 = 16.00"
    # Transformed disc is a new object
    disc = disc2.transformed_disc(2)
    assert isinstance(disc, Disc)
    assert str(disc2) == "(x-5.00)**2 + (y-5.00)**2 = 16.00"
    assert str(disc) == "(x-5.00)**2 + (y-5.00)**2 = 36.00"

    # We should be able to test disc for basic functionality
    assert Disc(Center(5, 5), 5) == Disc(Center(5, 5), 5)
    assert Disc(Center(4, 4), 5) != Disc(Center(1, 3), 3)
    assert Disc(Center(4, 4), 5) != "don't crash here!"

    disc_set = set()
    assert Disc(Center(1, 2), 3) not in disc_set
    disc_set.add(Disc(Center(1, 2), 3))
    assert Disc(Center(1, 2), 3) in disc_set
    disc_set.remove(Disc(Center(1, 2), 3))
    assert Disc(Center(1, 2), 3) not in disc_set

    discx = Disc.fromstring('2 3 5')
    assert str(discx) == "(x-2.00)**2 + (y-3.00)**2 = 25.00"

    # If two discs are superimposed, the lens forms and
    # can be calculated its parameters - four point:
    # two disc centers and two disk intersection points
    ((x4, y4), (x3, y3), (x2, y2),
     (x1, y1)) = disc1.lens_creation(disc2, precision=PRECISION)
    # (1, 1) (5, 5) (1.13, 4.00) (4.00, 1.13)
    # assert math.isclose(x4, disc1.center[0]) and math.isclose(y4,
    #                                                           disc1.center[1])
    # assert math.isclose(x3, disc2.center[0]) and math.isclose(y3,
    #                                                           disc2.center[0])
    # assert math.isclose(x1, 4.00) and math.isclose(y1, 1.13)
    # assert math.isclose(x2, 1.13) and math.isclose(y2, 4.00)
    #
    # disc3 = Disc(Center(0, 3), 1)
    # disc4 = Disc(Center(0, 0), 2)
    # (x, y) = disc3.lens_creation(disc4, precision=PRECISION)  # (0, 2)
    # assert math.isclose(x, 0) and math.isclose(y, 2)
    # (x, y) = disc5.lens_creation(disc6, precision=PRECISION)  # (5, 5)
    # assert math.isclose(x, 5) and math.isclose(y, 5)
    #
    # # If the disks are coincident then the lens is not formed -
    # # there are an infinite number of common points
    #
    # assert Disc(Center(2, 2), 3).lens_creation(Disc(Center(2, 2), 3),
    #                                            precision=PRECISION) == math.inf
    #
    # # The discs are separate and the lens is not formed
    # assert Disc(Center(1, 4), 1).lens_creation(Disc(Center(2, -1), 2),
    #                                            precision=PRECISION) is None

    print('Passed.')
 def setUp(self):
     self.disc = Disc()
     self.prog = Mock()
     self.prog2 = Mock()
     when(self.prog).getName().thenReturn("Programa1")
     when(self.prog2).getName().thenReturn("Programa2")