Esempio n. 1
0
    def __init__(self):
        self.gravity_strength = 5.e6
        self.camera.position = Vector(0, 0)
        self.space = self.root.add_child(SpaceNode(position=Vector(0, 0)))
        image = Sprite(PYTHON_IMAGE_PATH)

        self.attractor = self.space.add_child(
            BodyNode(
                shape=Circle(50),
                body_type=BodyNodeType.static,
                color=Color.from_int(196, 196, 196, 255)
            )
        )
        self.attractor.add_child(HitboxNode(shape=self.attractor.shape))

        self.nodes = []
        for _ in range(200):
            offset = Vector(random.randrange(1, 100), random.randrange(1, 100))
            node = BodyNode(
                sprite=image,
                angular_velocity=5,
                velocity=Vector(30, 15),
                position=Vector(-512, -384) + offset,
                shape=Polygon.from_box(Vector(10, 10)),
            )
            node.add_child(HitboxNode(shape=node.shape))
            self.space.add_child(node)
            self.nodes.append(node)
Esempio n. 2
0
File: main.py Progetto: labuzm/kaa
    def __init__(self):
        self.camera.position = Vector(0., 0.)
        self.space = self.root.add_child(
            SpaceNode(position=Vector(0, 0),
                      gravity=Vector(0, 20),
                      damping=0.9))
        image = Sprite(PYTHON_IMAGE_PATH)

        random_angle = random.randrange(225, 315)
        self.node = self.space.add_child(
            BodyNode(mass=100,
                     sprite=image,
                     angular_velocity=10,
                     shape=Polygon.from_box(Vector(20, 20)),
                     velocity=Vector.from_angle_degrees(random_angle) * 100))

        self.node.set_position_update_callback(update_position)
        self.node.set_velocity_update_callback(update_velocity)
Esempio n. 3
0
    def __init__(self):
        self.camera.position = Vector(0., 0.)
        self.python_img = Sprite(PYTHON_IMAGE_PATH)
        self.collisions_enabled = True

        self.space = self.root.add_child(SpaceNode(position=Vector(0, 0), ))
        self.box = self.space.add_child(
            BodyNode(
                body_type=BodyNodeType.kinematic,
                angular_velocity=0.3,
            ))
        # create bounding collision box with segments
        self.box_seg1 = self.box.add_child(
            HitboxNode(
                shape=Segment(Vector(-4, -4), Vector(-4, 4)),
                mask=HitboxMask.side,
                collision_mask=HitboxMask.all,
                color=Color(0.5, 0.5, 0.5),
            ))
        self.box_seg2 = self.box.add_child(
            HitboxNode(
                shape=Segment(Vector(-4, 4), Vector(4, 4)),
                mask=HitboxMask.side,
                collision_mask=HitboxMask.all,
                color=Color(0.5, 0.5, 0.5),
            ))
        self.box_seg3 = self.box.add_child(
            HitboxNode(
                shape=Segment(Vector(4, 4), Vector(4, -4)),
                mask=HitboxMask.side,
                collision_mask=HitboxMask.all,
                color=Color(0.5, 0.5, 0.5),
            ))
        self.box_seg4 = self.box.add_child(
            HitboxNode(
                shape=Segment(Vector(4, -4), Vector(-4, -4)),
                mask=HitboxMask.side,
                collision_mask=HitboxMask.all,
                color=Color(0.5, 0.5, 0.5),
            ))

        self.obj1 = self.space.add_child(
            BodyNode(
                mass=1e10,
                position=Vector(0, -2),
                velocity=Vector(-3.0, 0.5),  # * 10,
                shape=Circle(0.2),
                sprite=self.python_img,
                color=Color(1., 0., 0., 1.),
            ))
        self.obj1_hitbox = self.obj1.add_child(
            HitboxNode(
                shape=Circle(0.2),
                mask=HitboxMask.snake,
                collision_mask=HitboxMask.all,
                trigger_id=CollisionTrigger.obj,
                visible=False,
            ))

        self.obj2 = self.space.add_child(
            BodyNode(
                mass=1e10,
                position=Vector(0, 2),
                velocity=Vector(4.0, -0.1),  # * 10,
                shape=Circle(0.2),
                sprite=self.python_img,
            ))
        self.obj2_hitbox = self.obj2.add_child(
            HitboxNode(
                shape=Circle(0.2),
                mask=HitboxMask.snake,
                collision_mask=HitboxMask.all,
                trigger_id=CollisionTrigger.obj,
                visible=False,
            ))
        self.obj3 = self.space.add_child(
            BodyNode(
                mass=1e15,
                moment=1e20,
                position=Vector(-1.5, 0.1),
                velocity=Vector(-1.0, -2.0),
                angular_velocity_degrees=35.,
                shape=Polygon([
                    Vector(-1, -1),
                    Vector(1, -1),
                    Vector(1, 1),
                    Vector(-1, 1)
                ]),
            ))
        self.obj3_hitbox = self.obj3.add_child(
            HitboxNode(
                mask=HitboxMask.box1,
                collision_mask=HitboxMask.all,
                shape=self.obj3.shape,
                visible=False,
                elasticity=0.3,
            ))
        self.obj4 = self.space.add_child(
            BodyNode(
                position=Vector(0, -2),
                velocity=Vector(1.0, 5.0),
                angular_velocity_degrees=-5.,
                shape=Polygon.from_box(Vector(0.5, 1.)),
            ))
        self.obj4_hitbox = self.obj4.add_child(
            HitboxNode(
                mask=HitboxMask.box2,
                collision_mask=HitboxMask.all,
                shape=self.obj4.shape,
                visible=False,
                elasticity=0.6,
            ))

        self.space.set_collision_handler(CollisionTrigger.obj,
                                         CollisionTrigger.obj,
                                         self.handle_collision)
Esempio n. 4
0
File: main.py Progetto: labuzm/kaa
    def __init__(self):
        self.camera.position = Vector(0., 0.)
        self.python_img = Sprite(PYTHON_IMAGE_PATH)

        self.transition = NodeTransitionsSequence([
            NodePositionTransition(
                Vector(-100., -100.),
                3.,
                advance_method=AttributeTransitionMethod.add,
                loops=3,
                easing=Easing.elastic_in_out),
            NodePositionTransition(
                Vector(100., 0.),
                3.,
                advance_method=AttributeTransitionMethod.add,
                easing=Easing.back_in_out),
            NodeTransitionDelay(1.5),
            NodeTransitionCallback(lambda node: setattr(node, 'sprite', None)),
            NodeTransitionsParallel([
                NodePositionTransition(
                    Vector(-50., 100.),
                    3.,
                    advance_method=AttributeTransitionMethod.add),
                NodeRotationTransition(1., 5.),
                NodeScaleTransition(Vector(2., 2.), 3.),
                NodeColorTransition(Color(0., 1., 0., 0.5), 4.),
            ],
                                    back_and_forth=True),
        ])

        self.custom_transition = NodeCustomTransition(
            prepare_func=lambda node: {
                'positions': [
                    Vector(random.uniform(-100, 100), random.uniform(
                        -100, 100)) for _ in range(10)
                ]
            },
            evaluate_func=lambda state, node, t: setattr(
                node,
                'position',
                state['positions'][min(int(t * 10), 9)],
            ),
            duration=10.,
            loops=5,
        )

        spritesheet_frames = split_spritesheet(
            Sprite(EXPLOSION_IMAGE_PATH),
            Vector(64, 64),
        )
        self.sprite_transition = NodeSpriteTransition(
            spritesheet_frames,
            1.,
            loops=0,
            back_and_forth=True,
            easing=Easing.quartic_out,
        )

        self.space = self.root.add_child(SpaceNode())

        self.obj = self.space.add_child(
            Node(
                position=Vector(50., 50.),
                sprite=self.python_img,
                transition=self.transition,
            ))

        self.custom_obj = self.space.add_child(
            Node(
                color=Color(1., 0., 0.),
                sprite=self.python_img,
                transition=self.custom_transition,
            ))

        self.phys_obj = self.space.add_child(
            BodyNode(
                color=Color(0., 1., 1.),
                position=Vector(-50., 50.),
                sprite=self.python_img,
                velocity=Vector(0., 30.),
                transition=BodyNodeVelocityTransition(Vector(0., -30.), 10.),
            ))

        self.animated_obj = self.space.add_child(
            Node(
                position=Vector(-20., 10.),
                transition=self.sprite_transition,
            ))
Esempio n. 5
0
File: main.py Progetto: chmod555/kaa
    def __init__(self):
        self.camera.position = Vector(0., 0.)
        self.python_img = Sprite(PYTHON_IMAGE_PATH)

        self.transition = NodeTransitionsSequence([
            NodePositionTransition(
                Vector(-100., -100.),
                3000.,
                advance_method=AttributeTransitionMethod.add,
                loops=3),
            NodePositionTransition(
                Vector(100., 0.),
                3000.,
                advance_method=AttributeTransitionMethod.add),
            NodeTransitionDelay(1500.),
            NodeTransitionCallback(lambda node: setattr(node, 'sprite', None)),
            NodeTransitionsParallel([
                NodePositionTransition(
                    Vector(-50., 100.),
                    3000.,
                    advance_method=AttributeTransitionMethod.add),
                NodeRotationTransition(1., 5000.),
                NodeScaleTransition(Vector(2., 2.), 3000.),
                NodeColorTransition(Color(0., 1., 0., 0.5), 4000.),
            ],
                                    back_and_forth=True),
        ])

        self.custom_transition = NodeCustomTransition(
            lambda node: {
                'positions': [
                    Vector(random.uniform(-100, 100), random.uniform(
                        -100, 100)) for _ in range(10)
                ]
            },
            lambda state, node, t: setattr(
                node,
                'position',
                state['positions'][min(int(t * 10), 9)],
            ),
            10000.,
            loops=5,
        )

        self.space = self.root.add_child(SpaceNode())

        self.obj = self.space.add_child(
            Node(
                position=Vector(50., 50.),
                sprite=self.python_img,
                transition=self.transition,
            ))

        self.custom_obj = self.space.add_child(
            Node(
                color=Color(1., 0., 0.),
                sprite=self.python_img,
                transition=self.custom_transition,
            ))

        self.phys_obj = self.space.add_child(
            BodyNode(
                color=Color(0., 1., 1.),
                position=Vector(-50., 50.),
                sprite=self.python_img,
                velocity=Vector(0., 30.),
                transition=BodyNodeVelocityTransition(Vector(0., -30.),
                                                      10000.),
            ))
Esempio n. 6
0
    def __init__(self):
        self.camera.position = Vector(0, 0)
        self.game_over = False

        # physics setup
        self.space = self.root.add_child(SpaceNode(sprite=SPRITE_HAND, ))
        self.space_static = self.space.add_child(
            BodyNode(body_type=BodyNodeType.static, ))
        self.border = self.space_static.add_child(
            HitboxNode(
                position=Vector(0, 350),
                shape=Segment(Vector(-600, 0), Vector(600, 0)),
                trigger_id=CollisionTrigger.border,
                # color=Color(1., 0., 0., 0.5),
                z_index=100,
            ))
        self.space.set_collision_handler(
            CollisionTrigger.soap,
            CollisionTrigger.runner_enemy,
            self.on_collision_soap_enemy,
            phases_mask=CollisionPhase.begin,
        )
        self.space.set_collision_handler(
            CollisionTrigger.border,
            CollisionTrigger.runner_enemy,
            self.on_collision_border_enemy,
            phases_mask=CollisionPhase.begin,
        )
        self.space.set_collision_handler(
            CollisionTrigger.soap,
            CollisionTrigger.runner_pickup,
            self.on_collision_soap_pickup,
            phases_mask=CollisionPhase.begin,
        )
        self.space.set_collision_handler(
            CollisionTrigger.border,
            CollisionTrigger.runner_pickup,
            self.on_collision_border_pickup,
            phases_mask=CollisionPhase.begin,
        )

        # background parallax effect
        self.water_back = self.root.add_child(
            VerticalScrollingNode(
                repeat_sprite=SPRITE_WATER_BACK,
                scroll_duration=9000.,
                z_index=-10,
            ))
        self.water_front = self.root.add_child(
            VerticalScrollingNode(
                repeat_sprite=SPRITE_WATER_FRONT,
                scroll_duration=3000.,
                z_index=10,
            ))

        self.player_state = PlayerState()
        self.effects_manager = EffectsManager(
            root_node=self.root,
            camera=self.camera,
        )
        self.runners_manager = RunnersManager(space_node=self.space, )
        self.powerups_manager = PowerupsManager(
            player_state=self.player_state,
            runners_manager=self.runners_manager,
        )
        self.player_manager = PlayerManager(
            player_state=self.player_state,
            space_node=self.space,
            effects_manager=self.effects_manager,
        )
        self.ui_manager = UIManager(
            player_state=self.player_state,
            root_node=self.root,
        )