'progetto 17b: Disegnare tanti triangoli equilateri, uno dentro l'altro 'creazione della finestra NOMAINWIN WindowWidth = 500 'larghezza WindowHeight = 500 'altezza UpperLeftX = 400 UpperLeftY = 100 OPEN "Progetto 17" FOR graphics_nsb AS #prog17 #prog17 "trapclose [uscita]" #prog17 "fill yellow" ' disegna i triangoli equilateri #prog17 "DOWN" #prog17 "COLOR red" #prog17 "SIZE 2" 'coordinate del vertice superiore del triangolo xC=int(WindowWidth/2)-10 'centrato in orizzontale nella finestra (tenendo conto della cornice) yC=int(0.05*WindowHeight) 'l'ordinata è posta pari a un ventesimo dell'altezza della finestra altezza = int(0.8*WindowHeight) 'altezza del primo triangolo (3/4 di quella della finestra) segno = 1 WHILE altezza > 2 'se il triangolo diventa troppo piccolo, esci dal loop ' il lato del triangolo è lato = altezza*2.0/sqr(3.0) ' perciò lato/2 = altezza/sqr(3.0) = 0.577*altezza xA=xC-int(0.577*altezza) 'coordinate del vertice A yA=yC+segno*int(altezza) xB=xC+int(0.577*altezza) 'coordinate del vertice B yB=yC+segno*int(altezza) ' tracciamento dei tre lati #prog17 "LINE "; xA; " "; yA; " "; xB; " "; yB #prog17 "LINE "; xA; " "; yA; " "; xC; " "; yC #prog17 "LINE "; xC; " "; yC; " "; xB; " "; yB yC=yC+segno*int(altezza) 'calcola l'ordinata del vertice C del prossimo triangolo 'usando l'altezza del triangolo precedente altezza = altezza/2.0 'dimezza l'altezza per il triangolo successivo segno = (-1)*segno 'cambia segno così da capovolgere il triangolo successivo WEND WAIT [uscita] CONFIRM "Vuoi davvero uscire?"; risposta$ IF risposta$ = "no" THEN WAIT CLOSE #prog17 END