Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python Turtle中引发冲突_Python_Python 3.x_Turtle Graphics - Fatal编程技术网

如何在Python Turtle中引发冲突

如何在Python Turtle中引发冲突,python,python-3.x,turtle-graphics,Python,Python 3.x,Turtle Graphics,我是Python3新手,目前正在制作一个海龟游戏,如果你击中一只红海龟,你就可以开始。我不知道如何让玩家移动以使他们碰撞。我的代码: from turtle import Turtle, Screen wn = Screen() wn.bgcolor("black") artist = Turtle() artist.color('white') artist.speed(0) artist.penup() artist.setposition(-300, -300) artist.pend

我是Python3新手,目前正在制作一个海龟游戏,如果你击中一只红海龟,你就可以开始。我不知道如何让玩家移动以使他们碰撞。我的代码:

from turtle import Turtle, Screen

wn = Screen()
wn.bgcolor("black")

artist = Turtle()
artist.color('white')
artist.speed(0)
artist.penup()
artist.setposition(-300, -300)
artist.pendown()
artist.pensize(4)
for side in range(4):
    artist.fd(600)
    artist.lt(90)
artist.hideturtle()

player = Turtle()
player.color("white")
player.penup()
player.setposition(260, 260)
player.speed(10)

enemy = Turtle('circle')
enemy.color('red')
enemy.penup()
enemy.speed(9)

if player.distance(enemy) < 5:
    player.hideturtle()
    player.setposition(260, 260)
    player.showturtle()
从海龟导入海龟,屏幕
wn=屏幕()
wn.bgcolor(“黑色”)
艺术家=乌龟()
艺术家颜色(“白色”)
艺术家速度(0)
艺术家彭普()
艺术家设置位置(-300,-300)
艺术家彭敦()
退休艺术家(4)
对于范围内的侧面(4):
艺术家fd(600)
艺术家lt(90)
艺术家希德图尔()
玩家=乌龟()
播放器颜色(“白色”)
player.penup()
玩家设置位置(260260)
速度(10)
敌人=乌龟(“圆圈”)
敌人。颜色(‘红色’)
敌人
敌人,速度(9)
如果玩家距离(敌人)<5:
player.hideturtle()
玩家设置位置(260260)
player.showturtle()
我不知道如何使它们碰撞并移动玩家,这不会发生 移动

由于OP使用了正确的turtle导入(用于turtle的面向对象API)并使用了
distance()
方法,而不是像许多人一样重新实现,+1

下面我重新编写了代码,以提供玩家移动,使其最终能够与敌人碰撞。为了保持这个示例的简约性,我将边界设置为圆形,而不是原来的矩形:

from turtle import Screen, Turtle

RADIUS = 300
CURSOR_RADIUS = 10
CURSOR_DIAMETER = CURSOR_RADIUS * 2
START = RADIUS / 2 ** 0.5 - CURSOR_DIAMETER

def move_forward():
    screen.onkey(None, 'Up')  # disable handler inside handler

    player.forward(CURSOR_RADIUS)
    if player.distance(0, 0) >= RADIUS:
        player.undo()

    if player.distance(enemy) < CURSOR_RADIUS:
        player.hideturtle()
        player.setposition(START, START)
        player.showturtle()

    screen.onkey(move_forward, 'Up')  # reenable handler

screen = Screen()
screen.bgcolor('black')

artist = Turtle(visible=False)
artist.color('white')
artist.speed('fastest')
artist.pensize(4)

artist.penup()
artist.sety(-RADIUS)
artist.pendown()

artist.circle(RADIUS)

artist.penup()
artist.setposition(START, START)
artist.pendown()

artist.dot(CURSOR_DIAMETER, 'green')

enemy = Turtle('circle')
enemy.color('red')
enemy.penup()

player = Turtle()
player.speed('fastest')
player.color('white')

player.penup()
player.setposition(START, START)
player.setheading(player.towards(enemy))

screen.onkey(lambda: player.right(45), 'Right')
screen.onkey(lambda: player.left(45), 'Left')
screen.onkey(move_forward, 'Up')

screen.listen()
screen.mainloop()
从海龟导入屏幕,海龟
半径=300
光标半径=10
光标直径=光标半径*2
起点=半径/2**0.5-光标直径
def向前移动()
screen.onkey(无,'Up')#禁用处理程序内部的处理程序
球员向前(光标半径)
如果玩家距离(0,0)>=半径:
player.undo()
如果玩家距离(敌人)<光标半径:
player.hideturtle()
播放器设置位置(开始,开始)
player.showturtle()
screen.onkey(向前移动,'Up')#可重入处理程序
screen=screen()
screen.bgcolor('黑色')
艺术家=乌龟(可见=假)
艺术家颜色(“白色”)
艺术家速度(“最快”)
退休艺术家(4)
艺术家彭普()
艺术家sety(-RADIUS)
艺术家彭敦()
艺术家圆(半径)
艺术家彭普()
艺术家设置位置(开始,开始)
艺术家彭敦()
艺术家点(光标直径“绿色”)
敌人=乌龟(“圆圈”)
敌人。颜色(‘红色’)
敌人
玩家=乌龟()
玩家速度(“最快”)
player.color('白色')
player.penup()
播放器设置位置(开始,开始)
玩家设置方向(玩家朝向(敌人))
screen.onkey(lambda:player.right(45),‘right’)
screen.onkey(lambda:player.left(45),‘left’)
screen.onkey(向前移动,'Up')
screen.listen()
screen.mainloop()

你可以用箭头键控制玩家。现在敌人需要做一些事情,而不是只是坐在中间。

请用正确的标签缩进编辑你的问题。