Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Huiswerkvragen: Exacte vakken (https://forum.scholieren.com/forumdisplay.php?f=17)
-   -   [IN] Hoe maak je dit 'huisje' met programmeren? (https://forum.scholieren.com/showthread.php?t=1903312)

student123452 21-09-2015 12:07

Hoe maak je dit 'huisje' met programmeren?
 
Hallo,

Voor een schoolopdracht moet ik het volgende figuur maken met Turtle Graphics (Python programming) zonder de penup functie te gebruiken. Alle lijnen moeten dus aansluitend worden getekend. Nadat het huis getekend is, mag je weer penup() gebruiken en plaats je de turtle in het huis.

http://i60.tinypic.com/10fzuaw.png



Wat ik heb geprobeerd is het volgende:

Code:

import turtle
t = turtle.Turtle()
screen = turtle.Screen()
t.shape("turtle")
t.forward(200)
t.right(90)
t.forward(300)
t.right(90)
t.forward(200)
t.right(90)
t.forward(300)
t.right(90)


Ik hoop dat iemand mij hier verder mee kan helpen.
Bij voorbaat dank.

bloodyb 21-09-2015 13:23

1 Bijlage(n)
Ik ben geen programmeur dus jouw programma zegt me niks. Maar dit huis moet dus in 1 lijn worden getekend zonder de pen van het papier te halen?
Trek lijn:
A - B
B - C
C - D
D - E
E - C
C - A
A - D

Rob 02-10-2015 10:07

https://docs.python.org/2/library/turtle.html

De schildpad is het object dat de tekening maakt. Alles moet in één beweging, dus je zult eerst je schildpad eerst een positie moeten geven, en dan pen neerzetten.

Je begint dus met goto() (of één van de alternatieven, namelijk setpos() of setposition()) om een X,Y coördinaat op te geven. Hier begint je huis.
Daarna zet je de pen neer, met pendown(). Op dit moment kan je dus tekenen door de schildpad te bewegen.

Als ik de documentatie goed begrepen heb, kan je dit doen DMV forward() en right() en left(), maar ook doormiddel van goto(). Al deze functies resulteren in het tekenen van een lijn wanneer de pen op het papier staat.

Wanneer je klaar bent haal je de pen weer omhoog met penup(), roep je goto() aan op een coördinaat in het huis en je bent klaar.

ik ga er even vanuit dat de onderkant van je huis vierkant moet zijn.

Je kunt dus forward() combineren met right() en left(). Verwijzend naar bloodyb's post, kan je de lijn AB dus tekenen door de schildpad eerst 90º naar rechts te draaien en vervolgens forward aan te roepen:

turtle.right(90) (of turtle.left(90), moet je maar even kijken wat klopt, want het is nl afhankelijk van de modus)
turtle.forward(200)
#rest van het huis
turtle.penup()
turtle.goto(X,Y)

Daarna doe je BC door weer een aantal graden naar links te draaien en dan weer vooruit te gaan. Houd hierbij rekening dat BC langer is dan AB.

De andere optie is alles via goto().
turtle.goto(10,10)
turtle.pendown()
turtle.goto(210,10) #AB, 200 naar rechts, Y blijft hetzelfde
turtle.goto(10,282) #BC, 200 naar links, maar 282 naar boven (Pythagoras)
#rest van het huis
turtle.penup()
turtle.goto(X,Y)

Hiermee moet je er wel uit kunnen komen!


Alle tijden zijn GMT +1. Het is nu 04:11.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.