Example #1
0
    def render(self, screen):
        angle_of_rotate = math.degrees(math.acos(self.speed.normalize().x))
        #print(angle_of_rotate)

        if self.speed.y>0:
            angle_of_rotate = 360-angle_of_rotate

        rotated_img = pygame.transform.rotate(self.image, angle_of_rotate)
        rect_img = rotated_img.get_rect()
        rect_img.center = self.coords.as_point()  # центр картинки приравниваем вектору позиции
        screen.blit(rotated_img, rect_img) # блитуем все на скрин
        Game_Object.render(self, screen)


if __name__ == "__main__":
    from Classes.PyMain import PyMain
    mainWindow = PyMain(800,600)
    #vector = Game_Object((200,120),(30,0))
    car = Car((300,150),(30,0))
    trace = OutPutWindow((10,10))

    #mainWindow.add_render_object(vector)
    mainWindow.add_render_object(trace)
    mainWindow.add_render_object(car)

    #trace.add_attr(vector, "speed")
    #trace.add_attr(vector, "len_speed")
    #trace.add_attr(vector, "acsel",)
    #trace.add_attr(vector, "len_acsel")
    mainWindow.MainLoop()
Example #2
0
            if self.rect.collidepoint(event.pos):
                if self.last_mouse_event == pygame.MOUSEBUTTONDOWN and event.type == pygame.MOUSEBUTTONUP:
                    clickevent = pygame.event.Event(CLICK,
                                                    pos=event.pos,
                                                    target=self)
                    pygame.event.post(clickevent)
            self.last_mouse_event = event.type
        elif event.type == pygame.MOUSEMOTION:
            self.last_mouse_event = event.type

    def update(self, dt):
        """
        Обновляем состояние(местоположение, угол поворота и т.п.) объекта
        Этот метод должен вызываться перед отрисовкой каждого кадра
        Как правило, из данного метода вызываются другие методы, которые изменяют нужное состояние объекта
        """
        pass

    def render(self, screen):
        """
        Отрисовываем объект на поверхность screen
        """
        screen.blit(self.image, self.rect)


if __name__ == "__main__":
    main = PyMain(width=800, height=600)
    main.add_render_object(Bar(pos=(50, 50), size=(50, 50)))
    main.add_render_object(Bar(pos=(120, 150), size=(60, 60)))
    main.MainLoop(FPS=120)
Example #3
0
    def num_scroll(self):
        """
        Метод переводящий, цифру положения ползунка в текст, для рендера
        """
        if self.max_num != 0:  # если максимальное значение ползунка не равно 0 (чтобы не было деления на ноль)
            self.num_text = Text(self.num, self.x_scroll + 19, self.y +
                                 25)  # и получившееся значение в текст
        else:
            self.num = str(self.min_num)
            self.num_text = Text(str(self.num), self.x_scroll + 19,
                                 self.y + 25)
        change_scroll = pygame.event.Event(CHANGE_SCROLL,
                                           num=self.num,
                                           sender=self)
        pygame.event.post(change_scroll)

    def get_num(self):
        return self.num

    def update(self, dt):
        pass


if __name__ == "__main__":
    main = PyMain()
    scroll = ScrollBar(50, 50, max_num=50, text="Demo Scrolling")
    btn = Button()
    main.add_render_object(scroll)
    main.MainLoop()