如何在Python Turtle中引发冲突
我是Python3新手,目前正在制作一个海龟游戏,如果你击中一只红海龟,你就可以开始。我不知道如何让玩家移动以使他们碰撞。我的代码:如何在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
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()
你可以用箭头键控制玩家。现在敌人需要做一些事情,而不是只是坐在中间。请用正确的标签缩进编辑你的问题。