у меня есть код, приведённый ниже. Перепиши его с использованием для отображения pygame вместо matplotlib. Код:import matplotlib.pyplot as plt
import numpy as np
from matplotlib.animation import FuncAnimation

class Planet:
    def __init__(self, semi_major_axis, eccentricity, period, color='ro', name='Планета'):
        self.a = semi_major_axis
        self.e = eccentricity
        self.b = self.a * np.sqrt(1 - self.e**2)  # Малая полуось
        self.period = period  # Период обращения в земных сутках
        self.color = color
        self.name = name
        self.orbit_x, self.orbit_y = self.calculate_orbit()
        self.plot, = plt.plot([], [], self.color, label=self.name)
        self.orbit_line, = plt.plot([], [], self.color[0]+'--', alpha=0.5)  # Орбита пунктиром

    def calculate_orbit(self):
        # Рассчитываем координаты орбиты
        theta = np.linspace(0, 2 * np.pi, 1000)
        orbit_x = self.a * np.cos(theta)
        orbit_y = self.b * np.sin(theta)
        return orbit_x, orbit_y

    def update_position(self, current_time):
        # Вычисляем угол в зависимости от текущего времени и периода орбиты
        angle = 2 * np.pi * current_time / self.period
        self.x = self.a * np.cos(angle)
        self.y = self.b * np.sin(angle)
        self.plot.set_data([self.x], [self.y])

    def draw_orbit(self):
        # Установка данных для орбиты
        self.orbit_line.set_data(self.orbit_x, self.orbit_y)

class OrbitSimulation:
    def __init__(self, time_span):
        self.fig, self.ax = plt.subplots(figsize=(6, 6))
        self.planets = []
        # Шаг времени для более плавной реализации
        self.time = np.linspace(0, time_span, 1000)  # time_span задается в земных сутках

    def add_planet(self, planet):
        planet.draw_orbit()
        self.planets.append(planet)

    def init(self):
        for planet in self.planets:
            planet.plot.set_data([], [])
        return [planet.plot for planet in self.planets]

    def animate(self, i):
        current_time = self.time[i]
        for planet in self.planets:
            planet.update_position(current_time)
        return [planet.plot for planet in self.planets]

    def set_axis_limits(self):
        # Определяем пределы осей, основываясь на максимальной большой полуоси
        max_a = max(planet.a for planet in self.planets)
        self.ax.set_xlim(-15, 15)
        self.ax.set_ylim(-10, 10)

    def run(self):
        #self.set_axis_limits()
        self.ax.scatter([0], [0], color='orange', label='Звезда')  # Звезда в фокусе
        self.ax.set_title('Движение планет по орбитам')
        self.ax.set_xlabel('x')
        self.ax.set_ylabel('y')
        self.ax.axhline(0, color='grey', linewidth=0.5)
        self.ax.axvline(0, color='grey', linewidth=0.5)
        self.ax.grid(True)
        self.ax.axis('equal')
        self.ax.legend()

        ani = FuncAnimation(self.fig, self.animate, init_func=self.init,
                            frames=len(self.time), interval=20, blit=True)
        plt.show()

# Создание объекта симуляции
time_span = 365  # Например, симуляция за один земной год
simulation = OrbitSimulation(time_span)

# Добавление планет с их орбитальными параметрами
simulation.add_planet(Planet(semi_major_axis=5, eccentricity=0.6, period=10, color='ro', name='Планета 1'))
simulation.add_planet(Planet(semi_major_axis=3, eccentricity=0.4, period=5, color='bo', name='Планета 2'))

# Запуск симуляции
simulation.run()