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()
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)
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()