Este es el primer tutorial que escribo para Paltzi!
En este caso vamos a dibujar diferentes figuras utilizando la libreria turtle
de Python tratando de tener un código limpio siguiendo el patrón DRY (Don’t Repeat Yourself, No Te Repitas en español), es decir, tratando de dividir todo el pequeñas funciones que tengan una entrada y una salida evitando el famoso hardcode
.
Lo primero es declarar nuestro main()
import turtle
defmain():
window = turtle.Screen()
dave = turtle.Turtle()
option = 0whileTrue:
print('Select a figure to draw:')
print('1. Square')
print('2. Triangle')
print('3. Polygon')
print('4. Exit')
option = int(input('Option (number): '))
dave.reset()
if option == 1:
make_square(dave)
elif option == 2:
make_triangle(dave)
elif option == 3:
make_polygon(dave)
else:
exit()
if __name__ == '__main__':
main()
En este caso estamos creando un “menú” donde el usuario puede elegir una de las opciones ingresando el numero, en el caso de que ingrese 4 o algún valor incorrecto el programa se cerrara, puedes incluir alguna validación de tipo de dato si no quieres que se cierre al ingresar un string.
Usamos el while True
para que al dibujar una figura el programa no se cierre y podamos dibujar otra.
Antes de dibujar nuestras figuras primero debemos declarar un par de funciones.
Para obtener el tamaño de cada cara de la figura.
defget_face_size():return int(input('Face size: '))
Para dibujar la linea y girar el puntero.
defmake_line_and_turn(dave, length, turn):
dave.forward(length)
dave.left(turn)
Esta funcion nos ayudara a obtener el angulo y dibujar las caras.
defdraw_figure(dave, length, faces):
turn = 360 / faces
for i in range(faces):
make_line_and_turn(dave, length, turn)
La formula de turn
nos permite calcular el ángulo exterior de la figura.
Ej: Un cuadrado tiene 4 caras
>>> turn = 360 / 4>>> turn
>>> 90
Esto nos servirá también para triángulos y, lo mas importante, polígonos.
1. Cuadrado
Para crear un cuadrado llamamos a la función make_square(dave)
pasando como parámetro la instancia de turtle
:
defmake_square(dave):
length = get_face_size()
draw_figure(dave, length, 4)
Primero obtenemos el valor del usuario y luego llamamos a la funcion draw_figure()
, la cual recibe la instacia de turtle
, el largo de la cara y la cantidad de caras, en este caso, como es un cuadrado, siempre seran 4 caras asi que esta permitido hardcodearlo 😎
2. Triángulo
defmake_triangle(dave):
length = get_face_size()
draw_figure(dave, length, 3)
Es basicamente lo mimo, solo que la funcion ahora se llama make_triangle()
y la cantidad de caras es 3
3. Polígono (regular)
defmake_polygon(dave):
length = get_face_size()
faces = int(input('How many faces?: '))
if faces <= 2:
print('Enter at least three faces')
else:
draw_figure(dave, length, faces)
Finalmente, como en el caso del polígono la cantidad de caras pude variar, le pedimos al usuario, la cantidad de caras y validamos que sean 3 como mínimo para que pueda dibujar desde un triangulo hasta el infinito (teóricamente, no lo intentes 😄).
Gracias por llegar hasta aquí. Espero que te haya servido y recuerda siempre las buenas practicas a la hora de programar.
Si tienes alguna sugerencia o duda, déjala en los comentarios que todos estamos aprendiendo. 😃