# solar.py

Created by cent20

Created on August 15, 2023

5.95 KB

### 𝗦𝗼𝗹𝗮𝗿

Naviguez au cœur du système solaire, et découvrez les caractéristiques de chaque planètes qui le compose …
[1NSI] Projet 2020 de Jil et Emmy Marche parfaitement sur la calculatrice. Un peu lent sur l’émulateur. 🌟

```# Découvrir la NumWorks p.98
# solar.py v1.1 NW 25/10/2020
# https://nsi.xyz/solar
# par Jil et Emmy

from math import *
from kandinsky import *
from random import *
from time import *
from ion import *

def cercle(x0,y0,r,c,e):
for i in range(2*e):
xd=x0-int((r-i*0.5)/sqrt(2))
xf=x0+int((r-i*0.5)/sqrt(2))
for x in range(xd,xf+1):
x1=x
y1=y0+int(sqrt((r-i*0.5)**2-(x-x0)**2))
set_pixel(x,y1,c)
for j in range(3):
x2=x0+y1-y0
y2=y0+x0-x1
set_pixel(x2,y2,c)
x1,y1=x2,y2

def cercle_plein(x0,y0,r,c1,e,c2):
cercle(x0,y0,r,c1,e)
cercle(x0,y0,r-e,c2,r-e)

for i in range(R):
r=c1[0]+i*(c2[0]-c1[0])//R
g=c1[1]+i*(c2[1]-c1[1])//R
b=c1[2]+i*(c2[2]-c1[2])//R
cercle(x0,y0,i,color(r,g,b),1)

c_noir=[0,0,0] #fond étoilé avec le soleil
c_bleu=[0,35,143]
c_soleil=[255,255,0]
c_soleil2=[235,128,0]

dr=c2[0]-c1[0]
dg=c2[1]-c1[1]
db=c2[2]-c1[2]
return color(c1[0]+int(k*dr),c1[1]+int(k*dg),c1[2]+int(k*db))

def tirage(n):
for i in range(n):
x=randint(0,320)
y=randint(0,222)
c=couleur(x,y)
set_pixel(x,y,c)
set_pixel(x+1,y,c)
set_pixel(x,y+1,c)
set_pixel(x+1,y+1,c)

def couleur(x,y):
d=sqrt((x-160)**2+(y-111)**2)/32.5
c=[[235,128,0],[13,89,175],[13,89,175],[44,122,211],[207,230,230],[207,230,230]]

tirage(250)

c_blanc=[119,135,135]
r_orb = [22,32,42,52,62,76,92,109]
for i in range(8):
cercle(160,111,r_orb[i],c_blanc,1)

#periode de revolution
#distance soleil
#masse
#taille
#composition
position = [0]
systeme = [("Soleil",'centre du sytème solaire','dis soleil: 0','masse: 1,989 × 10^30 kg','rayon: 696340 km', 'satellites connus: 0'),
("Venus",'periode de revo: 225 jours','dis soleil: 104 millions km','masse: 4,867 × 10^24 kg','rayon: 6051.8 km', 'satellites connus: 0'),
("Mercure",'periode de revo: 88 jours','dis soleil: 57 millions km','masse: 3,285 × 10^23 kg','rayon: 2439.7 km', 'satellites connus: 0'),
("Terre",'periode de revo: 365 jours','dis soleil: 150 millions km','masse: 5,972 × 10^24 kg','rayon: 6371 km', 'satellites connus: Lune'),
("Mars",'periode de revo: 687 jours','dis soleil: 220 millions km ','masse: 6.39 × 10^23 kg ','rayon: 3389,5 km','satellites connus: 2'),
("Jupiter",'periode de revo: 12 ans','dis soleil: 780 millions km ','masse: 1.898 × 10^27 kg','rayon: 69911 km','satellites connus: 3 '),
("Saturne",'periode de revo: 29 ans','dis soleil: 1,493 milliard km','masse: 5.683 × 10^26 kg','rayon: 58232 km','satellites connus: ~ 200 '),
("Uranus",'periode de revo: 84 ans','dis soleil: 2,9592 milliards km','masse: 8.681 × 10^25 kg','rayon: 25362 km','satellites connus: 27'),
("Neptune",'periode de revo: 165 ans','dis soleil: 4,4762 milliards km','masse: 1.024 × 10^26 kg','rayon: 24622 km ','satellites connus: 14 '),
]
coord = [(160,111,16), (185,95,8), (180,110,6), (120,100,9), (160,160,9), (115,150,15), (200,50,12), (170,20,9), (55,80,8)]
couleur1 = [[255,255,0], [190,183,150], [251,136,7], [30,160,173], [245,0,0], [162,125,105], [200,169,133], [191,209,232], [0,33,240]]
couleur2 = [[235,128,0], [121,104,83], [106,73,32], [6,67,29], [101,12,12], [134,56,32], [189,138,80], [117,163,224], [5,15,81]]

# Affiche un corps du sytème solaire, numéro du corps dans systeme[], degradé
p = 2 + 9 * (n != 0)
cercle_grade(coord[n][0], coord[n][1], coord[n][2], couleur1[n], p, couleur2[n])
else:
cercle_grade(coord[n][0], coord[n][1], coord[n][2], [255,255,255], p, [255,255,255])

def solar_systeme_texte(n=42, t=0): #affichage du texte en bas, de couleur associée à omega, avec les diverse infos
try:
get_keys()
os = (192,53,53)
except:
os = (255,183,52)
if n == 42 :
fill_rect(1,204,320,18,os)
draw_string("nsi.xyz/solar par Emmy & Jil ",2,204,(255,255,255),os)
else:
fill_rect(1,204,320,18,os)
draw_string(systeme[n][t],2,204,(255,255,255),os)
pass

solar_systeme_texte()

texte = 0

while not keydown(5):

if keydown(0): #Gauche
avant = position[0]
position[0] = max(position[0]-1, 0)
if avant != position[0]:
solar_systeme_texte(position[0],texte)
sleep(0.120)

elif keydown(3): #Droite
avant = position[0]
position[0] = min(position[0]+1, 8) # le soleil [0] + 8 planète
if avant != position[0]:
solar_systeme_texte(position[0],texte)
sleep(0.120)

elif  keydown(1):  #haut
texte = min(texte + 1, 5) # Il faut donc avoir 5 données en plus du nom dans systeme[]
solar_systeme_texte(position[0],texte)
sleep(0.120)

elif keydown(2): #bas
texte = max(texte - 1, 0)
solar_systeme_texte(position[0],texte)
sleep(0.120)

'''for i in range(1000000):
pass'''
sleep(1)

#Mercure
cExt=[190,183,150]
cInt= [121,104,83]

#Venus
cExt=[251,136,7]
cInt= [106,73,32]

#Terre
cExt=[30,160,173]
cInt=[6,67,29]

#Mars
cExt=[245,0,0]
cInt=[101,12,12]

#Jupiter
cExt=[162,125,105]
cInt=[134,56,32]

#Saturne
cExt=[200,169,133]
cInt=[189,138,80]