turtle farben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
deep
User
Beiträge: 4
Registriert: Sonntag 11. Mai 2008, 12:34

Hallo zusammen,
ich habe ein Problem mit einer Aufgabe zum turtle-modul.

Folgende Aufgabenstellung:
Zeichne ein Achteck mit schwarzer Rand- und grüner Innenfarbe.

hier ist mein Lösungsansatz:

Code: Alles auswählen

def achteck():      
    fill('1')
    color('black')
    for achteck in range(8):
        forward(seite)
        left(360/8)
    color('green')
    fill('0')
Bild

Ich weiß einfach nicht wann ich fill() und color() setzen muss um zum gewünschten Ergebnis zu kommen.

hoffentlich könnt ihr mir helfen :)
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

1. Willkommen im Forum!

2. Im Prinzip macht dein Programm, was es soll. Allerdings wird beim Füllen so "kräftig" gefüllt, dass ein Teil des Randes mit "weggefüllt" wird. Wenn du vorher die Stiftdicke heraufsetzt, dann klappt es.
Konkret: Als erste Zeile in der Funktionsdefinition ergänzen:

Code: Alles auswählen

width(3)
3. Dein Code ist verbesserungsbedürftig.
Die Laufvariable in der for-Schleife sollte einen anderen Namen
bekommen als die Funktion selbst!
Die Variable seite scheint eine globale Variable zu sein. Es ist nicht gut, diese einfach so in der Funktion zu verwenden. Übergib sie als Parameter an die Funktion, das ist sauberer.

4. Grafik mit dem turtle-Modul macht keinen Spaß. Es gibt bessere und wesentlich leistungsfähigere Alternativen. Erzähl doch deinem Informatiklehrer mal davon :wink:

Das gleiche mit xturtle: http://xturtle.rg16.at/

Code: Alles auswählen

from xturtle import *

def achteck(d):
    width(3)
    color('black')
    fillcolor('green')
    fill(True)
    for n in range(8):
        forward(d)
        left(45)
    fill(False)

achteck(30)
mainloop()
Das gleiche mit frog: http://www.viktorianer.de/info/info-python-frog.html

Code: Alles auswählen

from frog import *

def achteck(d):
    frog.width = 3
    frog.color = "black"
    frog.fillcolor = "green"
    frog.fill = True
    for n in range(8):
        frog.move(d)
        frog.turn(45)

pool = Pool()
frog = Frog(pool)
achteck(30)
pool.ready()
Zu xturtle gibt es sogar ein gedrucktes Buch ("Python für Kids"), zu frog eine ziemlich ausführliche Dokumentation (deutsch!).
Für beide Module gilt übrigens, dass sie das Achteck auch ohne vorherige Stiftverbreiterung richtig zeichnen können und die entsprechende Festlegung über "width" verzichtbar wäre.
deep
User
Beiträge: 4
Registriert: Sonntag 11. Mai 2008, 12:34

hey, vielen dank für die schnelle Antwort.
Funktioniert jetzt alles bestens.
Ich werd mal versuchen meinen Infolehrer zu überreden, allerdings glaube ich kaum, dass das erfolgreich wird.
Der hat immoment mal wieder seinen nerd-monat.
Excel und Python mit Stift und Papier lernen und so :roll:
Da hat unsere Schule schon 2 relativ große Computerräume und der macht den Strom aus >.<
Naja, was solls.

deepy

edit: wie meinst du das mit dem übergeben? hab seite jetzt einfach als paramater darein geschrieben, also

def achteck(seite):
Antworten