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