Final exam version
This commit is contained in:
44
solar_input.py
Normal file
44
solar_input.py
Normal file
@@ -0,0 +1,44 @@
|
||||
from datetime import datetime
|
||||
import pygame
|
||||
|
||||
|
||||
def handle_events(app, system, save_callback):
|
||||
for event in pygame.event.get():
|
||||
if event.type == pygame.QUIT:
|
||||
app.running = False
|
||||
elif event.type == pygame.VIDEORESIZE:
|
||||
width = max(event.w, app.min_width)
|
||||
height = max(event.h, app.min_height)
|
||||
app.resize_window(width, height)
|
||||
elif event.type == pygame.KEYDOWN:
|
||||
if event.key == pygame.K_ESCAPE:
|
||||
app.running = False
|
||||
elif event.key == pygame.K_SPACE:
|
||||
system.toggle_pause()
|
||||
elif event.key == pygame.K_o:
|
||||
system.toggle_orbits()
|
||||
elif event.key == pygame.K_s:
|
||||
save_callback(system)
|
||||
|
||||
|
||||
def save_system_to_file(system, filename="solar_state.txt"):
|
||||
with open(filename, "w", encoding="utf-8") as file:
|
||||
file.write(f"Saved: {datetime.now()}\n")
|
||||
file.write(f"Paused: {system.paused}\n")
|
||||
file.write(f"Show orbits: {system.show_orbits}\n")
|
||||
file.write(f"Total stars: {len(system.stars)}\n")
|
||||
file.write(f"Total planets: {system.get_planet_count()}\n")
|
||||
file.write(f"Total objects: {len(system.get_all_objects())}\n")
|
||||
file.write(f"Total mass: {system.get_total_mass():.3e}\n\n")
|
||||
|
||||
for star in system.stars:
|
||||
file.write(f"{star.name}: x={star.x:.2f}, y={star.y:.2f}, radius={star.radius}, mass={star.mass:.3e}\n")
|
||||
for planet in star.planets:
|
||||
file.write(
|
||||
f" Planet orbit={planet.orbit_number}, "
|
||||
f"x={planet.x:.2f}, y={planet.y:.2f}, radius={planet.radius}, "
|
||||
f"mass={planet.mass:.3e}, angular_speed={planet.angular_speed:.6f}, "
|
||||
f"linear_speed={planet.linear_speed:.3f}, direction={planet.direction}, "
|
||||
f"angle={planet.angle:.6f}, orbit_radius={planet.orbit_radius}\n"
|
||||
)
|
||||
file.write("\n")
|
||||
Reference in New Issue
Block a user