2026. május 29., péntek

NAPRENDSZER SZIMULÁCIÓ A KONZOLBAN



import math
import os
import time

# Terminál törlése (hogy folyamatos legyen az animáció)
def clear_screen():
    # Online-python-on ez a leghatékonyabb üres sorok nyomtatása
    print("\n" * 40)


# Pálya adatok (kisebb sugarak, hogy beférjen a szöveges képernyőre)
planets_data = [
    {"name": "M", "orbit": 4, "speed": 1.2, "fullname": "Merkur"},
    {"name": "V", "orbit": 7, "speed": 0.8, "fullname": "Venusz"},
    {"name": "F", "orbit": 11, "speed": 0.6, "fullname": "Fold"},
    {"name": "MA", "orbit": 15, "speed": 0.4, "fullname": "Mars"},
]

angle = 0.0

print("Szimulacio inditasa...")
time.sleep(1)

# Animacios ciklus (50 lepes erejeig, hogy ne fusson orokke)
for step in range(100):
    clear_screen()

    # Egy 35x35-�s sz�veges r�cs l�trehoz�sa (�r)
    grid_size = 35
    grid = [[" " for _ in range(grid_size)] for _ in range(grid_size)]

    # Nap elhelyez�se a k�zep�re
    center = grid_size // 2
    grid[center][center] = "??"

    # Bolyg�k poz�ci�j�nak kisz�m�t�sa �s r�csra helyez�se
    for p in planets_data:
        # Trigonometria a koordin�t�khoz
        current_angle = angle * p["speed"]
        # Az Y tengelyt elosztjuk 1.8-cal, mert a sz�veges karakterek magasabbak, mint amilyen sz�lesek
        x = int(center + p["orbit"] * math.cos(current_angle))
        y = int(center + (p["orbit"] * math.sin(current_angle)) / 1.5)

        # Ha a bolyg� a p�ly�n bel�l van, berajzoljuk
        if 0 <= x < grid_size and 0 <= y < grid_size:
            # Ha k�tkarakteres a n�v (pl. MA), kicsit igaz�tunk
            grid[y][x] = p["name"]

    # Rács kirajzolása a konzolra
    print("=" * 50)
    print("      NAPRENDSZER SZIMULÁCIÓ A KONZOLBAN")
    print("=" * 50)

    for row in grid:
        print(" ".join(row))

    print("\nJelmagyar�zat: ??=Nap, M=Merk�r, V=V�nusz, F=F�ld, MA=Mars")
    print(f"Id�l�p�s: {step}")

    angle += 0.3
    time.sleep(0.2)  # Lass�t�s, hogy l�that� legyen a mozg�s

Nincsenek megjegyzések:

Megjegyzés küldése