示例#1
0
    def send(self, spaceship, packet_type):
        if spaceship in self.group:
            byte_data = from_data(*spaceship.information, packet_type)
        else:
            # sprite is killed
            byte_data = from_data(spaceship.get_id(), 0, 0, 0,
                                  PacketType.DEATH)

        self.server.send(byte_data)

        for perquisite in spaceship.render_objects:
            to_send = perquisite.information
            if to_send:
                self.server.send(from_data(*to_send, perquisite.packet_type))
示例#2
0
    def update(self):
        for s_id, s_x, s_y, s_a, pack_type in self.receive():
            if pack_type == PacketType.ALL_CONNECTED:
                self.server.send(
                    from_data(0, 0, 0, 0, PacketType.ALL_CONNECTED))
                self.is_game_active = True
            if pack_type == PacketType.DEATH:
                self.server.send(
                    from_data(self.enemy.get_id(), 0, 0, 0, PacketType.DEATH))
                self.is_end = True
                self.is_game_active = False
                for sprite in self.group:
                    sprite.kill()
                self.kill()
            if pack_type == PacketType.MOVEMENT:
                self.enemy.set_position((s_x, s_y))
                self.enemy.set_angle(s_a)
            if pack_type == PacketType.EXPLOSIVE:
                self.enemy.render_objects.add(Explosive(
                    self.enemy, (s_x, s_y)))

        if not self.is_game_active or self.is_end:
            return

        for spaceship in self.group:
            spaceship.render_objects.draw(self.screen)

        # call AllySpaceShip.update() and EnemySpaceShip.update()
        self.group.update()
        self.group.draw(self.screen)  # draw objects

        try:
            self.send(self.ally, PacketType.MOVEMENT)
        except socket_error:
            self.kill()

        # update ALL_SPRITES
        for obj in (*self.group, *self.ally.render_objects,
                    *self.enemy.render_objects):
            if obj not in ALL_SPRITES:
                ALL_SPRITES.add(obj)
示例#3
0
 def send(self, player_id, x, y, angle, packet_type):
     byte_data = from_data(player_id, x, y, angle, packet_type)
     self.server.send(byte_data)