2013-09-23 76 views
-3

因此,該程序可以讓我製作一個可自定義的簡筆畫。我對python非常陌生,這是我在學校計算機科學之外的第一個大型項目。由於身體各部位的座標在不同的地方結束,所以我需要身體的座標,短,中,長。這個程序有效,但由於某種原因,它沒有獲得價值並將它傳遞給我的尾巴/附件功能。你能看看我的程序,請幫助我!如何在函數之間傳遞變量

import turtle 


#Head 
def headfunc(headtype, headcolor, headpensize): 
    head=turtle.Turtle() 
    head.color(headcolor) 
    head.pensize(headpensize) 
    if headtype=="square": 
     wn = turtle.Screen() 
     head.penup() 
     head.left(90) 
     head.forward(200) 
     head.pendown() 
     head.left(90) 
     head.forward(50) 
     head.right(90) 
     head.forward(100) 
     head.right(90) 
     head.forward(100) 
     head.right(90) 
     head.forward(100) 
     head.right(90) 
     head.forward(50) 

    elif headtype=="round": 
     wn = turtle.Screen() 
     head.penup() 
     head.left(90) 
     head.forward(200) 
     head.right(90) 
     head.pendown() 
     head.circle(50) 

    elif headtype=="diamond": 
     wn = turtle.Screen() 
     head.penup() 
     head.goto(0,200) 
     head.pendown() 
     head.goto(35,300) 
     head.goto(0,400) 
     head.goto(-35,300) 
     head.goto(0,200) 

    else: 
     print("Not valid") 
# Body 
def bodyfunc(bodytype,bodycolor, bodypensize, endbody, endarm_x, endarm_y): 
    body=turtle.Turtle() 
    body.color(bodycolor) 
    body.pensize(bodypensize) 
    if bodytype=="short": 
     bodylength = 200 
     wn = turtle.Screen() 
     body.penup() 
     body.goto(0,200) 
     body.pendown() 
     body.goto(0,200-bodylength) #Body Length 
     body.goto(0,200-3*bodylength/8)      #Body(Reposition) 
     body.goto(bodylength/2,200-bodylength/4) #Arm Length (Right) 
     body.goto(0,200-3*bodylength/8)      #Body (Reposition) 
     body.goto(-bodylength/2,200-bodylength/4) #Arm Length (Left) 
     body.goto(0,200-3*bodylength/8)      #Body (Reposition) 
     body.goto(0,200-bodylength)      #Body (Reposition) 
     body.goto(bodylength/4, 200-3*bodylength/2) #Leg Length (Right) 
     body.goto(0,200-bodylength)      #Body (Reposition) 
     body.goto(-bodylength/4,200-3*bodylength/2)#Leg Length(Left) 
     endbody = 200-bodylength 
     endarm_x = bodylength/2 
     endarm_y = 200-bodylength/4 
     return endbody, endarm_x, endarm_y 

    elif bodytype=="medium": 
     bodylength = 300 
     wn = turtle.Screen() 
     body.penup() 
     body.goto(0,200) 
     body.pendown() 
     body.goto(0,200-bodylength) #Body Length 
     body.goto(0,200-3*bodylength/8)      #Body(Reposition) 
     body.goto(bodylength/2,200-bodylength/4) #Arm Length (Right) 
     body.goto(0,200-3*bodylength/8)      #Body (Reposition) 
     body.goto(-bodylength/2,200-bodylength/4) #Arm Length (Left) 
     body.goto(0,200-3*bodylength/8)      #Body (Reposition) 
     body.goto(0,200-bodylength)      #Body (Reposition) 
     body.goto(bodylength/4,200-3*bodylength/2) #Leg Length (Right) 
     body.goto(0,200-bodylength)      #Body (Reposition) 
     body.goto(-bodylength/4,200-3*bodylength/2)#Leg Length(Left) 
     endbody = 200-bodylength 
     endarm_x = bodylength/2 
     endarm_y = 200-bodylength/4 
     return endbody, endarm_x, endarm_y 

    elif bodytype=="long": 
     bodylength = 400 
     wn = turtle.Screen() 
     body.penup() 
     body.goto(0,200) 
     body.pendown() 
     body.goto(0,200-bodylength) #Body Length 
     body.goto(0,200-3*bodylength/8)      #Body(Reposition) 
     body.goto(bodylength/2,200-bodylength/4) #Arm Length (Right) 
     body.goto(0,200-3*bodylength/8)      #Body (Reposition) 
     body.goto(-bodylength/2,200-bodylength/4) #Arm Length (Left) 
     body.goto(0,200-3*bodylength/8)      #Body (Reposition) 
     body.goto(0,200-bodylength)      #Body (Reposition) 
     body.goto(bodylength/4,200-3*bodylength/2) #Leg Length (Right) 
     body.goto(0,200-bodylength)      #Body (Reposition) 
     body.goto(-bodylength/4,200-3*bodylength/2)#Leg Length(Left) 
     endbody = 200-bodylength 
     endarm_x = bodylength/2 
     endarm_y = 200-bodylength/4 
     return endbody 

    else: 
     print("Not valid") 
# Tail 
def tailfunc(tail, endbody): 
    if tail=="yes": 
     wn = turtle.Screen() 
     tail=turtle.Turtle() 
     tail.penup() 
     print(endbody) 
     tail.goto(0,endbody) 
     tail.pendown() 
     tail.color("brown") 
     tail.right(65) 
     tail.circle(60,200) 
     tail.shape("triangle") 

    elif tail=="no": 
     quiterty=1 

    else: 
     print("Not valid") 

def accessories1func(accessories1, endarm_x, endarm_y): 
    a=turtle.Turtle() 
    if accessories1=="sword": 
     wn = turtle.Screen() 
     a.goto(endarm_x, endarm_y) 
     a.forward(100) 
     wn.mainloop() 


def main(): 
    headtype=input("Enter head(square,round,diamond)") 
    headcolor=input("Head Color?:Red,white,black,gray,brown,gold,purple,blue,cyan") 
    headpensize=input("Head pensize? 1-5") 
    bodytype=input("Enter body(short,medium,long") 
    bodycolor=input("Body Color?:Red,white,black,gray,brown,gold,purple,blue,cyan") 
    bodypensize=input("Head pensize? 1-5") 
    tail=input("Tail: Yes or no") 
    accessories1=input("sword,staff,gun,bow") 

    endbody = 0 
    endarm_x = 0 
    endarm_y = 0 

    headfunc(headtype,headcolor, headpensize) 
    bodyfunc(bodytype,bodycolor, bodypensize, endbody, endarm_x, endarm_y) 
    tailfunc(tail,endbody) 
    accessories1func(accessories1, endarm_x, endarm_y) 

main() 
+5

你能減少一點嗎?這裏的代碼太多了。 – tacaswell

+0

不要發佈你的整個程序,只要求「幫助」。確切地告訴我們*出了什麼問題,並且只發布證明問題所需的代碼。 – Blorgbeard

+0

對SO有點遲來的歡迎。如果你願意幫助你,你會在這裏得到更好的幫助。請閱讀http://stackoverflow.com/help和http://sscce.org/ – tacaswell

回答

1

您不捕獲返回值。你需要做的是這樣的:

endbody, endarm_x, endarm_y = bodyfunc(bodytype,bodycolor, bodypensize, endbody, endarm_x, endarm_y) 

但它看起來像從bodyfunc您的返回類型是不相符所以這可能會給你的其他問題。

1

我認爲你最好通過創建一個類來服務。

class stickfigure(object): 
    def __init__(self): 
    self.headtype=input("Enter head(square,round,diamond)") 
    self.headcolor=input("Head Color?:Red,white,black,gray,brown,gold,purple,blue,cyan") 
    # you get the idea. 

這樣,您要保留的值就是您創建的每個棒圖的成員。