Turtle Fuktionen

Fragen zu Tkinter.
guter_hund
User
Beiträge: 19
Registriert: Montag 4. Dezember 2006, 13:25

Dienstag 13. Februar 2007, 18:41

Einen Wunder schönen Nachmittag alle zusammen.
Habe mich seit kurzem entschlossen mich mit dem Turtle-Modul aus einander zu setzen(eigentlich muss ich :wink: ).

Leider komme ich nicht so recht voran. Folgende Befehle und deren Bedeutung sind mir bereits bekannt/geläufig:

Code: Alles auswählen

width()
forward()
back()
left()
right()
up()
down()
Soweit so gut, aber wie kann man z.B. ein Rechteck 'zeichnen' ohne vier mal forward() und drei mal right() zu schreiben?
Auch das Zeichnen eines Dreiecks und anderer Formen währe sehr interessant.

Hoffe das mir jemand helfen kann (gern auch per Def, etc.)


Danke im Voraus.

Gruß.

Edit (Leonidas): Highlighting eingeschaltet.
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Dienstag 13. Februar 2007, 21:00

Geht nicht, du solltest dir am besten Funktionen schreiben, die dir Rechtecke etc. zeichnen. Es sei denn Tkinter hat dazugelernt, aber das glaube ich nicht ...

MfG apollo13
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Dienstag 13. Februar 2007, 21:14

guter_hund hat geschrieben:Auch das Zeichnen eines Dreiecks und anderer Formen währe sehr interessant.
Wenn du vor etwas Mathematik nicht zurueckschreckst, kannst du dir eine Funktion basteln, die dir ein n-Eck zeichnet. D.h. du hast dann eine while-Schleife von 1 bis n, und du musst dir dann ueberlegen, um welchen Winkel sich die Turtle in jedem Schritt drehen muss, damit sie nach n Schritten wieder an ihrem Ausgangspunkt angelangt.

Als Extra kannst du dir auch noch ueberlegen, wie man die Groesse eines n-Ecks steuern kann.
pyStyler
User
Beiträge: 311
Registriert: Montag 12. Juni 2006, 14:24

Dienstag 13. Februar 2007, 21:21

apollo13 hat geschrieben: Es sei denn Tkinter hat dazugelernt, aber das glaube ich nicht ...
was hat das mit Tkinter zu tun?
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Dienstag 13. Februar 2007, 21:51

pyStyler hat geschrieben:
apollo13 hat geschrieben: Es sei denn Tkinter hat dazugelernt, aber das glaube ich nicht ...
was hat das mit Tkinter zu tun?
Wie meinen? Ich meinte es in die Richtung, dass Tkinter vlt. inzwischen schon eine Funktion um N-Ecke zu zeichnen bereitstellt (auch wenn ich denn Sinn nicht sehe...).

MfG apollo13
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 13. Februar 2007, 22:18

apollo13 hat geschrieben:Wie meinen? Ich meinte es in die Richtung, dass Tkinter vlt. inzwischen schon eine Funktion um N-Ecke zu zeichnen bereitstellt (auch wenn ich denn Sinn nicht sehe...).
Das hat doch nichts mit Tkinter zu tun.

Turtle implementiert Turtle-Grafik und dieses ist auch gar nicht dazu gedacht, n-Ecke zu zeichnen. Das ist nicht der Sinn der Turtle-Grafik, wenn man programmatorisch auf Tk-Fenstern zeichnen will nimmt man Canvas. Daher ist es auch nur richtig so, dass weder turtle, noch xturtle noch sdlturtle n-Ecke zeichnen können.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Mittwoch 14. Februar 2007, 10:47

Ah verdammt jetzt verstehe ich^^
Das war weil er im Tkinter Forum geschrieben hat. Meine Antwort war ja eh auf Turtle bezogen. Alles klar *gg*
BlackJack

Mittwoch 14. Februar 2007, 10:59

Leonidas hat geschrieben:Turtle implementiert Turtle-Grafik und dieses ist auch gar nicht dazu gedacht, n-Ecke zu zeichnen.
Macht als Aufgabe aber schon Sinn. Man muss sich ja nur überlegen wieviele Schritte man für ein N-Eck braucht, wie lang die sein müssen und um wieviel Grad sich die Schildkröte an jeder Ecke drehen muss.
guter_hund
User
Beiträge: 19
Registriert: Montag 4. Dezember 2006, 13:25

Mittwoch 14. Februar 2007, 14:23

apollo13 hat geschrieben:...du solltest dir am besten Funktionen schreiben...
Okay. Nur bin ich in Python noch nicht so weit um Funktionen zu schreiben. Wie geht das?

Liebe Grüße...
BlackJack

Mittwoch 14. Februar 2007, 14:46

Arbeite am besten mal das Tutorial aus der Dokumentation durch.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Mittwoch 14. Februar 2007, 14:46

Code: Alles auswählen

>>> def meine_funktion():
...     print "Ich bin eine wichtige Funktion"
...
>>> # Nun koennen wir die Funktion aufrufen:
... meine_funktion()
Ich bin eine wichtige Funktion
>>>
>>> def meine_zweite_funktion(param):
...     print "Ich habe einen Parameter bekommen:", param
...
>>> # Dieser Funktion koennen wir einen Parameter uebergeben:
... meine_zweite_funktion(5)
Ich habe einen Parameter bekommen: 5
Versuche erstmal, eine Funktion zu schreiben, die ein Viereck macht:

Code: Alles auswählen

>>>def viereck():
...     while i in range(1, 4):
...         # Hier kommen jetzt Turtle-Befehle hin...
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Mittwoch 14. Februar 2007, 15:40

Rebecca hat geschrieben:

Code: Alles auswählen

>>>def viereck():
...     while i in range(1, 4):
...         # Hier kommen jetzt Turtle-Befehle hin...
Eher:

Code: Alles auswählen

for i in range(4):
oder

Code: Alles auswählen

for i in range(1,5):
MfG
HWK
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 14. Februar 2007, 16:29

BlackJack hat geschrieben:
Leonidas hat geschrieben:Turtle implementiert Turtle-Grafik und dieses ist auch gar nicht dazu gedacht, n-Ecke zu zeichnen.
Macht als Aufgabe aber schon Sinn. Man muss sich ja nur überlegen wieviele Schritte man für ein N-Eck braucht, wie lang die sein müssen und um wieviel Grad sich die Schildkröte an jeder Ecke drehen muss.
Richtig, als Aufgabe ist das schon sinnvoll. Aber wenn Turtle das alles schon könnte, hätte es eigentlich keinen Sinn mehr es zu benutzen. Ich sehe Turtle jedenfalls als etwas an, womit man Programmieren lernen kann und von seinen Programmen visuelles Feedback bekommt.

Also ähnlich wie Robot Karol, Kara oder Robocode, wobei letzteres schon auch noch einige andere Sachen lehrt.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
guter_hund
User
Beiträge: 19
Registriert: Montag 4. Dezember 2006, 13:25

Mittwoch 14. Februar 2007, 18:51

Hi.
Also ich bin schon relativ weit gekommen:

Code: Alles auswählen

from turtle import *

def viereck():
    a = 1
    b = 5
    okay = True
    while okay:
        if a < b:
            forward(pot)
            right(90)
            a = a + 1
            okay = True
        if a == b:
            okay = False
            break
             
width(2)
pot = 100
viereck()
pot ist hierbei die Variable mit der man bestimmen kann wie lang die Linie werden so(hier 100 Pixel). Aber was ist wenn ich keine Rechteck will in dem die Seite 'a' = 'b' ist, sondern die Seite 'a' 40 und die Seite 'b' 20 Pixel lang sein soll???

MFG.: Guter_Hund
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 14. Februar 2007, 19:07

Ungetestet hätte ich sowas anzubieten:

Code: Alles auswählen

import turtle

def quadrilateral(side_a, side_b):
    next_side = side_a
    for i in range(4):
        turtle.forward(next_side)
        turtle.right(90)
        
        if next_side == side_a:
            next_side = side_b
        else:
            next_side = side_a
         
turtle.width(2)
quadliteral(40, 20)
Ist warscheinlich selbsterklärend.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten