Week 8: Graphical
Write a program that will draw a regular polygon for any given number of sides.
For example if the user enters 5 then the program will draw a regular pentagon.
Hint: You might need to brush up on your trigonometry skills!
Scrivi un programma per disegnare un poligono regolare per ogni dato numero di lati.
Per esempio se l’utente inserisce 5 allora il programma disegna un pentagono regolare.
Suggerimento: potresti aver bisogno di un ripasso di trigonometria!
Soluzione #1
TextWindow.Write("Numero lati: ") numeroLati=TextWindow.ReadNumber() '------------------------------------------------------ xC=GraphicsWindow.Width /2 ' centro del poligono yC=GraphicsWindow.Height/2 raggio =0.4*GraphicsWindow.Height deltaAngolo=2*Math.Pi/numeroLati angolo =0 x1=xC+raggio*Math.Cos(angolo) ' primo vertice a destra y1=yC+raggio*Math.Sin(angolo) '------------------------------------------------------ For i=1 To numeroLati angolo=angolo+deltaAngolo x2=xC+raggio*Math.Cos(angolo) y2=yC+raggio*Math.Sin(angolo) GraphicsWindow.DrawLine(x1,y1,x2,y2) x1=x2 y1=y2 EndFor
Soluzione #2
casella=Controls.AddTextBox(25, 25) Controls.SetSize(casella, 25, 25) Controls.AddButton("Disegna", 50, 25) Controls.ButtonClicked=DisegnaPoligono '------------------------------------------------------ xC=GraphicsWindow.Width /2 ' centro del poligono yC=GraphicsWindow.Height/2 raggio=0.4*GraphicsWindow.Height angolo=0 x1=xC+raggio*Math.Cos(angolo) ' primo vertice a destra y1=yC+raggio*Math.Sin(angolo) '------------------------------------------------------ Sub DisegnaPoligono numeroLati=Controls.GetTextBoxText(casella) deltaAngolo=2*Math.Pi/numeroLati For i=1 To numeroLati angolo=angolo+deltaAngolo x2=xC+raggio*Math.Cos(angolo) y2=yC+raggio*Math.Sin(angolo) GraphicsWindow.DrawLine(x1,y1,x2,y2) x1=x2 y1=y2 EndFor EndSub