Python 中的海龟碰撞问题

问题描述 投票:0回答:0

我正在创建游戏,但在检测碰撞时遇到问题。是python turtles,代码很长。如果有我想知道的 pip 模块,否则创建一个检测碰撞的函数。这只是代码的一个片段。如果您需要更多代码,请询问。我不得不删除一些代码,因为它不会让我用 1100 行代码大声笑发布这个问题。

注意:所有碰撞功能均无效,如果您确实建议有效,请回答!

这里是我使用碰撞的部分


    #walls and collisions
    def new_wall(x1,y1,x2,y2,color,outline=0):
        wn.tracer(999)
        new_wall_collisionless(x1,y1,x2,y2,color,outline)
        wn.tracer(1)
    
    #player checking system
    def check_xcor():
        if p.xcor() >= 300:
            return 2
        elif p.xcor() <= -300:
            return 1
        return False
    def check_collision():
        lst = [wall, wall2]
        d = math.sqrt(math.pow(p.xcor()-t.xcor(),2) + math.pow(p.ycor()-t.ycor(),2))
        for t in lst:
            if d < (int(p.width()*15) + int(t.width()*15)):
                return True
        return False

    #movement engine
    def right():
        if get_state() == 0 and (check_xcor() == 1 or check_xcor() == False):
            set_state(2)
            for n in range(1,8):
                x = p.xcor()
                x += 2*n
                p.setx(x)
            for n in range(1,5):
                x = p.xcor()
                x += 2/n
                p.setx(x)
            set_state(0)

    def left():
        if get_state() == 0 and (check_xcor() == 2 or check_xcor() == False):
            check_xcor()
            set_state(2)
            for n in range(1,8):
                x = p.xcor()
                x -= 2*n
                p.setx(x)
            for n in range(1,5):
                x = p.xcor()
                x -= 2/n
                p.setx(x)
            set_state(0)
            
    def up():
        if get_state() == 0:
            set_state(1)
            for i in range(1,10):
                y = p.ycor()
                y += 2*i
                p.sety(y)
            for loop in range(100):
                if check_collision == True:
                    return 0
            for i in range(1,10):
                y = p.ycor()
                y -= 2*i
                p.sety(y)
                if check_collision == True:
                    set_state(0)
                    return 0
            set_state(0)

    turtle.listen()
    turtle.onkeypress(right, 'd')
    turtle.onkeypress(right, 'D')
    turtle.onkeypress(left, 'a')
    turtle.onkeypress(left, 'A')
    turtle.onkeypress(up, 'w')
    turtle.onkeypress(up, 'W')

    if era == 1:
        turtle.listen()
        turtle.onkeypress(right, 'd')
        turtle.onkeypress(right, 'D')
        turtle.onkeypress(left, 'a')
        turtle.onkeypress(left, 'A')
        turtle.onkeypress(up, 'w')
        turtle.onkeypress(up, 'W')
        
        while alive.xcor() == 0:
            delay()

我试图在谷歌上查找它,但没有用。我不知道为什么。如果有人能提出解决方案,我将不胜感激!

python-3.x collision-detection turtle-graphics collision python-turtle
© www.soinside.com 2019 - 2024. All rights reserved.