📙 Découvrir la NumWorks p.98
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. 🌟
# Dé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) def cercle_grade(x0,y0,R,c1,e,c2): 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 étoilé avec le soleil c_bleu=[0,35,143] c_soleil=[255,255,0] c_soleil2=[235,128,0] cercle_grade(160,111,197,c_bleu,10,c_noir) cercle_grade(160,111,40,c_soleil2,2,c_bleu) cercle_grade(160,111,16,c_soleil,2,c_soleil2) def degrade(c1,c2,k): 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 return degrade(c[int(d)],c[(int(d)+1)%6],d-int(d)) 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 sytè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]] def solar_systeme_dessine(n, degrade=1): # Affiche un corps du sytème solaire, numéro du corps dans systeme[], degradé p = 2 + 9 * (n != 0) if degrade == 1: 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 associée à 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() def navigation(): #navigation grâce aux flèches 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_dessine(avant, degrade=1) solar_systeme_dessine(position[0], degrade=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 planète if avant != position[0]: solar_systeme_dessine(avant, degrade=1) solar_systeme_dessine(position[0], degrade=0) solar_systeme_texte(position[0],texte) sleep(0.120) elif keydown(1): #haut texte = min(texte + 1, 5) # Il faut donc avoir 5 donné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) solar_systeme_dessine(0, degrade=0) '''for i in range(1000000): pass''' sleep(1) solar_systeme_dessine(0, degrade=1) #Mercure cExt=[190,183,150] cInt= [121,104,83] cercle_grade(180,110,6,cExt,10,cInt) #Venus cExt=[251,136,7] cInt= [106,73,32] cercle_grade(185,95,8,cExt,10,cInt) #Terre cExt=[30,160,173] cInt=[6,67,29] cercle_grade(120,100,9,cExt,10,cInt) #Mars cExt=[245,0,0] cInt=[101,12,12] cercle_grade(160,160,9,cExt,10,cInt) #Jupiter cExt=[162,125,105] cInt=[134,56,32] cercle_grade(115,150,15,cExt,10,cInt) #Saturne cExt=[200,169,133] cInt=[189,138,80] cercle_grade(200,50,12,cExt,10,cInt) #Uranus cExt=[191,209,232] cInt=[117,163,224] cercle_grade(170,20,9,cExt,10,cInt) #Neptune cExt=[0,33,240] cInt=[5,15,81] cercle_grade(55,80,8,cExt,10,cInt) navigation()