Esempio n. 1
0
    def __init__(self, **kwargs):
        board_items.Movable.__init__(self, **kwargs)
        self.size = [1, 1]
        self.name = str(uuid.uuid4())
        self.type = "base_particle"
        self.sprixel = gfx_core.Sprixel(graphics.GeometricShapes.BULLET)
        if "bg_color" in kwargs:
            self.sprixel.bg_color = kwargs["bg_color"]
        if "fg_color" in kwargs:
            self.sprixel.fg_color = kwargs["fg_color"]
        if "model" in kwargs:
            self.sprixel.model = kwargs["model"]
        self.directions = [
            base.Vector2D.from_direction(constants.UP, 1),
            base.Vector2D.from_direction(constants.DLUP, 1),
            base.Vector2D.from_direction(constants.DRUP, 1),
        ]
        self.lifespan = 5
        if "velocity" in kwargs and isinstance(kwargs["velocity"],
                                               base.Vector2D):
            self.velocity = kwargs["velocity"]
        else:
            self.velocity = base.Vector2D()
        if "acceleration" in kwargs and isinstance(kwargs["acceleration"],
                                                   base.Vector2D):
            self.acceleration = kwargs["acceleration"]
        else:
            self.acceleration = base.Vector2D()

        for item in ["lifespan", "sprixel", "name", "type", "directions"]:
            if item in kwargs:
                setattr(self, item, kwargs[item])
Esempio n. 2
0
 def test_v2d_assert_values(self):
     self.assertEqual(self.vectors[0].row, 0)
     self.assertEqual(self.vectors[0].column, 0)
     self.assertEqual(self.vectors[1].row, 1.0)
     self.assertEqual(self.vectors[1].column, 1.0)
     self.assertEqual(self.vectors[2].row, 2)
     self.assertEqual(self.vectors[2].column, 2)
     self.assertEqual(self.vectors[1].__repr__(), "Vector2D (1.0, 1.0)")
     self.assertTrue(self.vectors[0] == pgl_base.Vector2D())
     self.assertFalse(self.vectors[0] == pgl_base.Vector2D(1, 2))
Esempio n. 3
0
    def test_move_complex(self):
        def _act(p):
            p[0].assertEqual(p[1], 1)

        self.board = pgl_engine.Board(
            name="test_board",
            size=[10, 10],
            player_starting_position=[5, 5],
        )
        i = pgl_board_items.ComplexNPC(sprite=gfx_core.Sprite(
            default_sprixel=gfx_core.Sprixel("*")))
        g = pgl_engine.Game(mode=constants.MODE_RT)
        self.board.place_item(i, 1, 1)
        self.assertIsInstance(self.board.item(1, 1),
                              pgl_board_items.ComplexNPC)
        self.assertIsNone(self.board.move(i, constants.RIGHT, 1))
        i = pgl_board_items.ComplexPlayer(sprite=gfx_core.Sprite(
            default_sprixel=gfx_core.Sprixel("*"),
            sprixels=[[gfx_core.Sprixel("@"),
                       gfx_core.Sprixel("@")]],
        ))
        self.board.place_item(i, 3, 1)
        self.assertIsInstance(self.board.item(3, 1),
                              pgl_board_items.ComplexPlayer)
        self.board.place_item(
            pgl_board_items.GenericActionableStructure(
                action=_act, action_parameters=[self, 1]),
            i.row,
            i.column + i.width,
        )
        self.assertIsNone(self.board.move(i, constants.RIGHT, 1))
        self.board.place_item(pgl_board_items.Treasure(value=50),
                              i.row + i.height, i.column)
        self.assertIsNone(self.board.move(i, constants.DOWN, 1))
        self.assertEqual(i.inventory.value(), 50)
        i.parent = g
        i.dtmove = 0.0
        self.assertIsNone(self.board.move(i, pgl_base.Vector2D(1, 0)))
        i.dtmove = 5.0
        self.assertIsNone(self.board.move(i, pgl_base.Vector2D(1, 0)))
        with self.assertRaises(pgl_base.PglObjectIsNotMovableException):
            self.board.move(pgl_board_items.Immovable(), constants.DOWN, 1)
        g.mode = constants.MODE_TBT
        self.board.place_item(pgl_board_items.Door(), i.row,
                              i.column + i.width)
        self.assertIsNone(self.board.move(i, constants.RIGHT, 1))
        self.assertIsNone(self.board.move(i, constants.RIGHT, 2))
        self.assertIsNone(self.board.move(i, constants.DOWN, 2))
        with self.assertRaises(pgl_base.PglInvalidTypeException):
            self.board.move(i, constants.DOWN, "1")
        with self.assertRaises(pgl_base.PglInvalidTypeException):
            self.board.move(i, "constants.DOWN", 1)
Esempio n. 4
0
 def setUp(self):
     super().setUp()
     self.vectors = []
     self.vectors.append(pgl_base.Vector2D())
     self.vectors.append(pgl_base.Vector2D(1.0, 1.0))
     self.vectors.append(pgl_base.Vector2D(2, 2))
     self.text = pgl_base.Text(
         "Test case",
         core.Color(0, 0, 0),
         core.Color(255, 255, 0),
         pgl_base.Style.BRIGHT,
     )
     self.math = pgl_base.Math()
Esempio n. 5
0
 def setUp(self):
     super().setUp()
     self.vectors = []
     self.vectors.append(pgl_base.Vector2D())
     self.vectors.append(pgl_base.Vector2D(1.0, 1.0))
     self.vectors.append(pgl_base.Vector2D(2, 2))
     self.text = pgl_base.Text(
         "Test case",
         pgl_base.Fore.WHITE,
         pgl_base.Back.YELLOW,
         pgl_base.Style.BRIGHT,
     )
     self.math = pgl_base.Math()
Esempio n. 6
0
 def test_v2d_mult(self):
     v = self.vectors[0] * self.vectors[1]
     self.assertEqual(v, 0.0)
     v = self.vectors[1] * self.vectors[2]
     self.assertEqual(v, 0.0)
     v = (self.vectors[2] + self.vectors[1]) * self.vectors[2]
     self.assertEqual(v, 0.0)
     self.assertEqual(self.vectors[2] * pgl_base.Vector2D(2, 5.0), 6.0)
     v = self.vectors[1] * 2
     self.assertEqual(v.row, 2.0)
     self.assertEqual(v.column, 2.0)
Esempio n. 7
0
 def __init__(self,
              model=None,
              bg_color=None,
              fg_color=None,
              acceleration=None,
              velocity=None,
              lifespan=None,
              directions=None,
              **kwargs):
     super().__init__(**kwargs)
     # NOTE: this cannot be done anymore for BoardItems
     # self.size = [1, 1]
     self.name = str(uuid.uuid4())
     self.type = "base_particle"
     self.sprixel = core.Sprixel(graphics.GeometricShapes.BULLET)
     if bg_color is not None and isinstance(bg_color, core.Color):
         self.sprixel.bg_color = bg_color
     if fg_color is not None and isinstance(fg_color, core.Color):
         self.sprixel.fg_color = fg_color
     if model is not None:
         self.sprixel.model = model
     self.directions = [
         base.Vector2D.from_direction(constants.UP, 1),
         base.Vector2D.from_direction(constants.DLUP, 1),
         base.Vector2D.from_direction(constants.DRUP, 1),
     ]
     self.lifespan = 5
     if velocity is not None and isinstance(velocity, base.Vector2D):
         self.velocity = velocity
     else:
         self.velocity = base.Vector2D()
     if acceleration is not None and isinstance(acceleration,
                                                base.Vector2D):
         self.acceleration = acceleration
     else:
         self.acceleration = base.Vector2D()
     if lifespan is not None:
         self.lifespan = lifespan
     if directions is not None and type(directions) is list:
         self.directions = directions
Esempio n. 8
0
 def test_with_sprixel(self):
     i = pgl_board_items.NPC(sprixel=gfx_core.Sprixel())
     i.animation = gfx_core.Animation(parent=i)
     i.animation.add_frame(gfx_core.Sprixel("-"))
     i.animation.add_frame(gfx_core.Sprixel("+"))
     self.assertIsInstance(i.animation, gfx_core.Animation)
     self.assertEqual(len(i.animation.frames), 2)
     # I shouldn't test that here but I'm tired of writting test!
     self.assertIsInstance(i.animation.next_frame(), gfx_core.Sprixel)
     i.animation.frames[1] = pgl_base.Vector2D()
     with self.assertRaises(pgl_base.PglInvalidTypeException):
         i.animation.next_frame()
         i.animation.next_frame()
Esempio n. 9
0
    def test_move_simple(self):
        def _act(p):
            setattr(p[0], "test_callback", True)
            p[0].assertEqual(p[1], 1)

        i = pgl_board_items.Player(sprixel=gfx_core.Sprixel("*"))
        i.sprixel.is_bg_transparent = True
        b = pgl_engine.Board(
            name="test_board",
            size=[10, 10],
            player_starting_position=[0, 0],
        )
        b.place_item(i, 0, 0)
        self.assertIsNone(b.move(i, constants.DOWN, 1))
        self.assertIsNone(b.move(i, constants.UP, 1))
        self.assertIsNone(b.move(i, constants.RIGHT, 1))
        self.assertIsNone(b.move(i, constants.LEFT, 1))
        self.assertIsNone(b.move(i, constants.DRDOWN, 1))
        self.assertIsNone(b.move(i, constants.DRUP, 1))
        self.assertIsNone(b.move(i, constants.DLDOWN, 1))
        self.assertIsNone(b.move(i, constants.DLUP, 1))
        self.assertIsNone(b.move(i, pgl_base.Vector2D(0, 0)))
        self.assertEqual(i.pos, [0, 0, 0])
        setattr(self, "test_callback", False)
        b.place_item(
            pgl_board_items.GenericActionableStructure(
                action=_act, action_parameters=[self, 1]),
            0,
            1,
        )
        self.assertIsNone(b.move(i, constants.RIGHT, 1))
        self.assertIsNone(b.move(i, constants.RIGHT, 1))
        self.assertTrue(getattr(self, "test_callback"))
        b.place_item(pgl_board_items.Treasure(value=50), i.row + 1, i.column)
        self.assertIsNone(b.move(i, constants.DOWN, 1))
        self.assertEqual(i.inventory.value(), 50)
        b.place_item(
            pgl_board_items.Door(sprixel=gfx_core.Sprixel(
                bg_color=gfx_core.Color(45, 45, 45))),
            i.row + 1,
            i.column,
        )
        b.place_item(
            pgl_board_items.Door(sprixel=gfx_core.Sprixel(
                bg_color=gfx_core.Color(45, 45, 45))),
            i.row + 2,
            i.column,
        )
        self.assertIsNone(b.move(i, constants.DOWN, 1))
        self.assertIsNone(b.move(i, constants.DOWN, 1))
        self.assertIsNone(b.clear_cell(i.row, i.column))
Esempio n. 10
0
 def test_v2d_create(self):
     v = pgl_base.Vector2D.from_direction(pgl_base.constants.NO_DIR, 1)
     self.assertEqual(v, pgl_base.Vector2D(0, 0))
     v = pgl_base.Vector2D.from_direction(pgl_base.constants.UP, 1)
     self.assertEqual(v, pgl_base.Vector2D(-1, 0))
     v = pgl_base.Vector2D.from_direction(pgl_base.constants.DOWN, 1)
     self.assertEqual(v, pgl_base.Vector2D(1, 0))
     v = pgl_base.Vector2D.from_direction(pgl_base.constants.LEFT, 1)
     self.assertEqual(v, pgl_base.Vector2D(0, -1))
     v = pgl_base.Vector2D.from_direction(pgl_base.constants.RIGHT, 1)
     self.assertEqual(v, pgl_base.Vector2D(0, 1))
     v = pgl_base.Vector2D.from_direction(pgl_base.constants.DRUP, 1)
     self.assertEqual(v, pgl_base.Vector2D(-1, 1))
     v = pgl_base.Vector2D.from_direction(pgl_base.constants.DRDOWN, 1)
     self.assertEqual(v, pgl_base.Vector2D(1, 1))
     v = pgl_base.Vector2D.from_direction(pgl_base.constants.DLUP, 1)
     self.assertEqual(v, pgl_base.Vector2D(-1, -1))
     v = pgl_base.Vector2D.from_direction(pgl_base.constants.DLDOWN, 1)
     self.assertEqual(v, pgl_base.Vector2D(1, -1))
Esempio n. 11
0
 def test_v2d_unit(self):
     self.assertEqual(self.vectors[0].unit(), pgl_base.Vector2D())
     v = self.vectors[2] + self.vectors[1]
     self.assertEqual(v.unit(), pgl_base.Vector2D(0.71, 0.71))