-3

このプログラムでは、カスタマイズ可能な棒人間を作成できます。私は python にかなり慣れていません。これは、学校のコンピューター サイエンス以外で初めての大きなプロジェクトです。ボディ アームの座標は異なる場所で終了するため、bodyfunc、ショート、ミディアム、ロングの座標が必要です。このプログラムは機能しますが、何らかの理由で値を取得せず、それを my tail/accessory 関数に渡しません。私のプログラムを見て、助けてください!

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()
4

2 に答える 2

1

戻り値をキャプチャしません。次のようなことをする必要があります:

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

bodyfuncしかし、戻り値の型が一貫していないように見えるため、他の問題が発生する可能性があります。

于 2013-09-23T02:51:19.440 に答える
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.

このように、保持したい値は、作成した各棒線図のメンバーです。

于 2013-09-23T02:54:37.290 に答える