pythagoras_opgave_05.py

Created by numworks-nl

Created on May 03, 2023

2.3 KB


# Turtle
# Pythagoras Olympiade opgave 374 (Jaargang 57/4, Oplossing Jaargang 58/1)
# Hieronder is een schets met twee regelmatige achthoeken en
# twee gelijkzijdige driehoeken. Je kunt je voorstellen dat je
# dit patroon herhaalt. Kom je dan precies bij het begin uit?
# Bonuspunt
# Voor welke regelmatige n-hoek (n > 6) kun je een patroon
# creeren waarbij je precies terugkeert bij het begin.
# Klik steeds op het rode vierkant in het midden om verder te gaan
# (1) Plaatje schetsen horende bij deze opgave
# (2) Plaatje oplossing schetsen horende bij deze opgave
# (3) Andere oplossingen schetsen
# Voor de uitwerking van deze opgave zie
# https://www.pyth.eu/oplossingen-pythagoras-olympiade-57-4
### Voor de uitwerking van deze opgave zie
### https://www.pyth.eu/oplossingen-pythagoras-olympiade-57-4
import turtle
import ion
import time

DATA = [(20, 30, 8, 24, 2), (12, 50, 8, 24, 12),
        (8, 54, 7, 42, 21), (12, 36, 9, 18, 9),
        (10, 20, 12, 12, 6), (10, 16, 15, 10, 5), (8, 10, 24, 8, 4),
        ]
MAXCNT = 6
def Button():
  # Tekenen van rode button in het midden
  turtle.color('black')
  turtle.penup()
  turtle.goto(-15,-15)
  turtle.pendown()
  for m in range(4):
    turtle.forward(30)
    turtle.left(90)
  turtle.penup()
  turtle.goto(0,0)
  return

def Draw():
  global cnt
  (Lengte, InitialisatieLengte, Hoeken1, Hoeken2, Herhalingen) = DATA[cnt]
  turtle.reset()
  Button()
  # Turtle wordt naar juiste positie verplaatst
  turtle.pendown()
  turtle.left(90)
  turtle.penup()
  turtle.forward(InitialisatieLengte)
  turtle.left(90)
  turtle.forward(Lengte/2)
  turtle.pendown()
  turtle.left(180)
  # Tekenen van figuur
  for m in range(Herhalingen):
    turtle.color('black')
    for k in range(Hoeken1):
      turtle.forward(Lengte)
      turtle.left(360/Hoeken1)
    turtle.forward(Lengte)
    turtle.right(360/Hoeken2)
    turtle.color('black')
    for k in range(3):
      turtle.forward(Lengte)
      turtle.left(120)
    turtle.forward(Lengte)
    turtle.right(360/Hoeken2)
  # Turtle wordt weer terug geplaatst
  turtle.penup()
  turtle.goto(0,0)
  turtle.pendown()
  turtle.setheading(0)
  # Gereed maken van doorgaan of stoppen
  cnt += 1
  return

cnt = 0
turtle.speed(0)
Button()


while True:
  if ion.keydown(ion.KEY_EXE):
    Draw()
  time.sleep(0.01)
  if cnt == MAXCNT:
    break