我制作的程序有两只海龟,一只是用户(玩家),另一只是玩家 2,它们通过一个名为 checkcollision 的函数运行,该函数确定海龟是否相交,从而将第二只海龟的 x 和 -250,250 移动到 -250,250 的随机位置y 坐标。然而问题是我希望第二只乌龟(非用户)在屏幕上沿直线移动,我将其设置为 2,并且我也尝试将其设置为正常,这样所有的操作都不会使乌龟移动。
import turtle
import random
wn = turtle.Screen()
wn.setup(width = 450, height = 450)
player = turtle.Turtle()
player2 = turtle.Turtle()
def up():
y = player.ycor()
y = y + 5
player.sety(y)
if y>=310:
player.sety(y-15)
checkcollision(player,player2)
def down():
y = player.ycor()
y = y - 5
player.sety(y)
if y<-310:
player.sety(y+15)
checkcollision(player,player2)
def left():
x = player.xcor()
x = x - 5
player.setx(x)
if x<=-625:
player.setx(x+15)
checkcollision(player,player2)
def right():
x = player.xcor()
x = x + 5
player.setx(x)
if x>=625:
player.setx(x-15)
checkcollision(player,player2)
player.penup()
player.setpos(0,0)
player.showturtle()
player.shape("square")
wn.bgcolor("green")
player2.shape("turtle")
player2.penup()
player2.setpos(300,300)
player2.showturtle()
player2.setheading(-100)
player2.speed(2)
turtle.listen()
turtle.onkeypress(up,"Up")
turtle.onkeypress(left,"Left")
turtle.onkeypress(right,"Right")
turtle.onkeypress(down, "Down")
def checkcollision(t1,t2):
if abs(t1.xcor() - t2.xcor()) < 10 and abs(t1.ycor() - t2.ycor()) < 10:
player2.setpos(random.randint(-250,250), random.randint(-250,250))
checkcollision(player,player2)
您的代码有多个问题,我很惊讶它竟然能按上面所述运行。 (它应该只是落在代码的底部,关闭海龟窗口并返回到控制台。)例如,它似乎不理解它自己的坐标系——x坐标从-425到+425,但是我们正在测试海龟的 x 坐标是否为<= -625
。以下是我为解决您的问题和其他问题而进行的修改:
from turtle import Screen, Turtle
from random import randint
def up():
y = player.ycor() + 5
if y < 200:
player.sety(y)
checkcollision()
def down():
y = player.ycor() - 5
if y > -200:
player.sety(y)
checkcollision()
def left():
x = player.xcor() - 5
if x > -200:
player.setx(x)
checkcollision()
def right():
x = player.xcor() + 5
if x < 200:
player.setx(x)
checkcollision()
def checkcollision():
if player.distance(player2) < 20:
player2.setpos(randint(-200, 200), randint(-200, 200))
screen = Screen()
screen.setup(width=450, height=450)
screen.bgcolor('green')
player = Turtle()
player.shape('square')
player.speed('fastest')
player.penup()
player2 = Turtle()
player2.shape('square')
player2.speed('slowest')
player2.color('yellow')
player2.penup()
checkcollision()
screen.onkeypress(up, 'Up')
screen.onkeypress(left, 'Left')
screen.onkeypress(right, 'Right')
screen.onkeypress(down, 'Down')
screen.listen()
screen.mainloop()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)