【Python】宇宙の星の中を進むように見えるプログラム

ChatGPTを利用したものを修正して作成しました
turtleモジュールを使用しています
未インストールの場合はpipなどでインストールする必要があります

SpaceInStars
import turtle
import random
import time
import math

# 画面の設定
win = turtle.Screen()
win.setup(width=800, height=600)
win.bgcolor('black')  # 背景色を黒に設定
win.tracer(0)  # 描画速度を最大にする

# 星の設定
stars = []
stars2 = []
stars3 = []

for _ in range(30):  # 星の数を倍に増やす
    star = turtle.Turtle()
    star.shape('circle')
    star.shapesize(0.0033, 0.0033)  # 星の初期の大きさをさらに小さく(1/30)にする
    star.color(random.uniform(0.5, 1), random.uniform(0.5, 1), random.uniform(0.5, 1))  # 星の色をランダムに設定(明るい色にする)
    star.penup()
    star.speed(0)
    star.goto(0, 0)
    star.setheading(random.randint(0, 360))  # 星の初期方向をランダムに設定
    star.speed = 1  # 星の初期速度を設定
    star.growth_rate = random.uniform(0.01, 0.02)  # 星が大きくなる度合いをランダムに設定
    stars.append(star)
for _ in range(50):  # 星の数を倍に増やす
    star2 = turtle.Turtle()
    star2.shape('circle')
    star2.shapesize(0.00033, 0.00033)  # 星の初期の大きさをさらに小さく(1/30)にする
    star2.color(random.uniform(0.5, 1), random.uniform(0.5, 1), random.uniform(0.5, 1))  # 星の色をランダムに設定(明るい色にする)
    star2.penup()
    star2.speed(0)
    star2.goto(0, 0)
    star2.setheading(random.randint(0, 360))  # 星の初期方向をランダムに設定
    star2.speed = 1  # 星の初期速度を設定
    star2.growth_rate = random.uniform(0.001, 0.008)  # 星が大きくなる度合いをランダムに設定
    stars2.append(star2)
for _ in range(100):  # 星の数を倍に増やす
    star3 = turtle.Turtle()
    star3.shape('circle')
    star3.shapesize(0.00033, 0.00033)  # 星の初期の大きさをさらに小さく(1/30)にする
    star3.color(random.uniform(0.5, 1), random.uniform(0.5, 1), random.uniform(0.5, 1))  # 星の色をランダムに設定(明るい色にする)
    star3.penup()
    star3.speed(0)
    star3.goto(0, 0)
    star3.setheading(random.randint(0, 360))  # 星の初期方向をランダムに設定
    star3.speed = 1  # 星の初期速度を設定
    star3.growth_rate = random.uniform(0.001, 0.002)  # 星が大きくなる度合いをランダムに設定
    stars3.append(star3)

# 星を動かす
i = 0
while True:
    if i < len(stars):
        stars[i].showturtle()  # 星を逐次表示
        i += 1
    for star in stars:
        if star.isvisible():  # 星が表示されている場合のみ動かす
            star.forward(star.speed * 2)  # 星が移動する速度を2倍に上げる
            star.speed += 0.2  # 星の速度を徐々に上げる(加速度を2倍にする)
            distance = math.sqrt(star.xcor()**2 + star.ycor()**2)  # 星と中心との距離を計算
            star.shapesize(0.0033 + distance * star.growth_rate / 20)  # 星の大きさを距離に応じて調整(端に達する時の大きさを1/30にする)
            if star.xcor() > 400 or star.xcor() < -400 or star.ycor() > 300 or star.ycor() < -300:
                star.goto(0, 0)  # 星が端に達したとき、星を中心に戻す
                star.speed = 1  # 星が中心に戻ったとき、速度を初期速度にリセット
                star.shapesize(0.0033, 0.0033)  # 星が中心に戻ったとき、星の大きさをリセット
                star.setheading(random.randint(0, 360))  # 星の初期方向をランダムに設定
    if i < len(stars2):
        stars2[i].showturtle()  # 星を逐次表示
        i += 1
    for star2 in stars2:
        if star2.isvisible():  # 星が表示されている場合のみ動かす
            star2.forward(star2.speed * 1)  # 星が移動する速度
            star2.speed += 0.2  # 星の速度を徐々に上げる(加速度を2倍にする)
            distance = math.sqrt(star2.xcor()**2 + star2.ycor()**2)  # 星と中心との距離を計算
            star2.shapesize(0.0033 + distance * star2.growth_rate / 30)  # 星の大きさを距離に応じて調整(端に達する時の大きさを1/30にする)
            if star2.xcor() > 400 or star2.xcor() < -400 or star2.ycor() > 300 or star2.ycor() < -300:
                star2.goto(0, 0)  # 星が端に達したとき、星を中心に戻す
                star2.speed = 1  # 星が中心に戻ったとき、速度を初期速度にリセット
                star2.shapesize(0.0033, 0.0033)  # 星が中心に戻ったとき、星の大きさをリセット
                star2.setheading(random.randint(0, 360))  # 星の初期方向をランダムに設定
    if i < len(stars3):
        stars3[i].showturtle()  # 星を逐次表示
        i += 1
    for star3 in stars3:
        if star3.isvisible():  # 星が表示されている場合のみ動かす
            star3.forward(star3.speed * 0.5)  # 星が移動する速度を0.5倍に上げる
            star3.speed += 0.2  # 星の速度を徐々に上げる(加速度を2倍にする)
            distance = math.sqrt(star3.xcor()**2 + star3.ycor()**2)  # 星と中心との距離を計算
            star3.shapesize(0.0033 + distance * star3.growth_rate / 50)  # 星の大きさを距離に応じて調整(端に達する時の大きさを1/30にする)
            if star3.xcor() > 400 or star3.xcor() < -400 or star3.ycor() > 300 or star3.ycor() < -300:
                star3.goto(0, 0)  # 星が端に達したとき、星を中心に戻す
                star3.speed = 1  # 星が中心に戻ったとき、速度を初期速度にリセット
                star3.shapesize(0.0033, 0.0033)  # 星が中心に戻ったとき、星の大きさをリセット
                star3.setheading(random.randint(0, 360))  # 星の初期方向をランダムに設定
    win.update()  # 画面を更新
    time.sleep(0.01)