2016-09-08 5 views
0

Anfang CS Student hier. Ich versuche, Python 2.7 zeichnen ein Rechteck mit einer Funktion, die nur das Turtle-Objekt, die oberen linken Ecke Koordinaten und die unteren rechten Ecke Koordinaten als Argumente hat. Ich weiß, dass es einfacher ist, ein Rechteck zu zeichnen, aber ich versuche es nur mit Eckkoordinaten.Python Schildkröte Rechteck mit 2 Eckkoordinaten

Nach meinem aktuellen Code läuft ich folgendes:

Typeerror: kann nicht Folge vermehren sich durch nicht-int vom Typ ‚float‘

Ich weiß, das ist wahrscheinlich etwas einfach, aber ich habe Probleme mit herauszufinden, was ich falsch mache, so würde jede Hilfe geschätzt werden.

Mein Code ist wie folgt:

from turtlegraphics import Turtle 

def drawLine(t1,x1,y1,x2,y2): 
    t1.setWidth(1) 
    t1.setColor(0,0,0) 
    t1.up() 
    t1.move(x1,y1) 
    t1.down() 
    t1.move(x2,y2) 

def rectangleSimple(t2,upperLeftPoint,lowerRightPoint): 
    t2.setWidth(1) 
    t2.setColor(0,0,0) 
    t2.up() 
    t2.move(upperLeftPoint) 
    t2.down() 
    t2.setDirection(270) 
    t2.move(lowerRightPoint[2]) 
    t2.setDirection(0) 
    t2.move(lowerRightPoint) 
    t2.setDirection(90) 
    t2.move(upperLeftPoint[2]) 
    t2.setDirection(180) 
    t2.move(upperLeftPoint) 

def main(): 

    t1 = Turtle()      
    x1 = 0 
    y1 = 0 
    x2 = 50 
    y2 = 0 

    drawLine(t1,x1,y1,x2,y2) 

    t2 = Turtle() 
    upperLeftPoint = (-100,50) 
    lowerRightPoint = (100,-50) 

    rectangleSimple(t2,upperLeftPoint,lowerRightPoint) 


main() 

Antwort

0

Ich benutze das turtle Modul, nicht turtlegraphics aber meine Vermutung ist, diese beiden Linien in Rede sind:

t2.move(lowerRightPoint[2]) 
t2.move(upperLeftPoint[2]) 

Ihre * Punktvariablen sind Tupeln zwei Werte, X & Y, bei Indizes 0 & 1, aber Sie greifen auf den nicht vorhandenen dritten Wert bei Index 2 zu. Es gibt viele verschiedene Möglichkeiten zu implementieren, was Sie versuchen zu tun, hier ist eine mit der turtle Modul, das mit Python geliefert wird:

from turtle import Turtle 

X, Y = range(2) 

def drawLine(t, x1, y1, x2, y2): 
    t.up() 
    t.width(1) 
    t.pencolor(1, 0, 0) # red 
    t.goto(x1, y1) 
    t.down() 
    t.goto(x2, y2) 

def rectangleSimple(t, upperLeftPoint, lowerRightPoint): 
    t.up() 
    t.width(1) 
    t.pencolor(0, 1, 0) # green 
    t.goto(upperLeftPoint) 
    t.setheading(0) # East 
    t.down() 
    t.goto(lowerRightPoint[X], upperLeftPoint[Y]) 
    t.right(90) 
    t.goto(lowerRightPoint) 
    t.right(90) 
    t.goto(upperLeftPoint[X], lowerRightPoint[Y]) 
    t.right(90) 
    t.goto(upperLeftPoint) 

if __name__ == "__main__": 

    from turtle import done 

    t1 = Turtle()      

    drawLine(t1, 0, 0, 50, 0) 

    t2 = Turtle() 
    upperLeftPoint = (-100, 50) 
    lowerRightPoint = (100, -50) 

    rectangleSimple(t2, upperLeftPoint, lowerRightPoint) 

    done() 
+0

Vielen Dank, ich entschuldige mich für solch einen elementaren Fehler -_- – CFalco