我正在创建游戏,但在检测碰撞时遇到问题。是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()
我试图在谷歌上查找它,但没有用。我不知道为什么。如果有人能提出解决方案,我将不胜感激!