简单的Python射箭游戏

2024-10-01 09:24:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚开始用Python,我想做一个小小的射箭游戏。但是,它会在此时创建一个错误:d=数学硕士(x*x+y*y)(即新点与原圆心之间的距离)有什么想法可以解释为什么这不起作用?在

def archery():

    win = GraphWin("Archery Game", 500,500)
    win.setCoords(-50, -50, 50, 50)

    circle1 = Circle(Point(0,0), 40)
    circle1.setFill("white")
    circle1.draw(win)

    circle2 = Circle(Point(0,0), 35)
    circle2.setFill("black")
    circle2.draw(win)

    circle3 = Circle(Point(0,0), 30)
    circle3.setFill("blue")
    circle3.draw(win)

    circle4 = Circle(Point(0,0), 25)
    circle4.setFill("red")
    circle4.draw(win)

    circle5 = Circle(Point(0,0), 20)
    circle5.setFill("yellow")
    circle5.draw(win)

    score = 0

    for i in range(5):
        p = win.getMouse()
        p.draw(win)
        x = p.getX
        y = p.getY

        d = math.sqrt(x*x + y*y)

        if 40 >= d > 35:
            score = score + 1

        elif 35 >= d > 30:
            score = score + 3

        elif 30 >= d > 25:
            score = score + 5

        elif 25 >= d > 20:
            score = score + 7

        elif 20 >= d >= 0:
            score = score + 9
        else:
            score = score + 0

        print("Your current score is:", score)

    win.getMouse()
    win.close()

Tags: 游戏winpointscoredrawelifcircle射箭
2条回答
    x = p.getX
    y = p.getY

将返回函数getXgetY,而不是执行它。正如mikesteder所说,尝试getX(),这应该返回一个值。在

首先,您可能需要:

x = p.getX()
y = p.getY()

即调用函数并使用返回值,而不是使用函数本身。在

其次,您可以将math.sqrt(x*x + y*y)调用更改为:

^{pr2}$

相关问题 更多 >