Esempio n. 1
0
class Tab(object):
    path_to_tabs = '../resrc/tabs/'

    def __init__(self, wrapper, background_image_path=None):
        self.path_to_images = Tab.path_to_tabs + (
            self.__class__.__name__.lower()
            if self.__class__ != Tab else '') + '/'
        if background_image_path is None:
            background_image_path = self.path_to_images + 'background.gif'
        self.wrapper = wrapper
        self.background = Drawable(background_image_path)
        self.objects = []

    def add_drawable(self, obj):
        # type: (Drawable) -> None
        obj.set_position(obj.position + obj.get_size() // 2)
        self.objects.append(obj)

    def start(self):
        pass

    def get_size(self):
        # type: () -> Vector
        return self.background.get_size()

    def update(self):
        for obj in self.objects:
            obj.update()

    def draw(self):
        self.background.draw()
        for obj in self.objects:
            obj.draw()
Esempio n. 2
0
class World:
    def __init__(self, robot):
        self.rects = []
        self.mask = []

        self.robot = robot

        self.block1 = None
        self.ground = None

        self.__create_rects()
        self.__create_items()

    @property
    def distance(self):
        d = int(self.block1.position.x - self.robot.position.x)
        if not self.robot.isJumping and 0 < d and d < 96:
            self.robot.jump()
        return d

    def __create_rects(self):
        x = self.robot.position.center[0]
        for idx in range(0, 23):
            rect = Rect((x + 10 * idx, 0), (10, 10))
            rect.bottom = RULER
            self.rects.append(rect)
        self.mask = np.zeros(len(self.rects), np.uint8)

    def __create_items(self):
        self.ground = Drawable('ground.png', WORLD)
        self.ground.position.bottom = HEIGHT

        self.block1 = Drawable('block1.png', WORLD)
        self.block1.position.x = WIDTH + 10
        self.block1.position.bottom = RULER

    def draw(self, screen):
        self.ground.draw(screen)
        self.ground.scroll(0, WIDTH)

        self.block1.draw(screen)
        self.block1.scroll(WIDTH + 10, -10)

        for idx in range(0, len(self.rects)):
            rect = self.rects[idx]
            rect.right = self.robot.position.center[0] + 10 * idx
            if rect.colliderect(self.block1.rect):
                self.mask[idx] = 1
                screen.fill(RED, rect)
            else:
                self.mask[idx] = 0
                screen.fill(BLUE, rect)