栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Python乌龟游戏中检测碰撞

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Python乌龟游戏中检测碰撞

与实际编程相比,这段代码似乎更让人想不到:

def is_collided_with(self, run):    return self.rect.colliderect(run.rect)runner = run(10, 10, 'my_run')follower = follow(20, 10)if follow.is_collided_with(run):    print 'collision!'

乌龟没有

.rect()
方法。您不能
is_collided_with()
使用此
def
语句简单地将方法添加到现有类。没有
run()
follow()
功能。每次运动后,如果需要,该碰撞测试将只执行一次。让我们尝试挽救我们可以做的工作:

from turtle import Turtle, ScreenplayGround = Screen()playGround.screensize(250, 250)playGround.title("Turtle Keys")run = Turtle("turtle")run.color("blue")run.penup()run.setposition(250, 250)follow = Turtle("turtle")follow.color("red")follow.penup()follow.setposition(-250, -250)def k1():    run.forward(45)def k2():    run.left(45)def k3():    run.right(45)def k4():    run.backward(45)def quitThis():    playGround.bye()def is_collided_with(a, b):    return abs(a.xcor() - b.xcor()) < 10 and abs(a.ycor() - b.ycor()) < 10def follow_runner():    follow.setheading(follow.towards(run))    follow.forward(min(follow.distance(run), 8))    if is_collided_with(follow, run):        print('Collision!')        quitThis()    else:        playGround.ontimer(follow_runner, 10)playGround.onkey(k1, "Up")  # the up arrow keyplayGround.onkey(k2, "Left")  # the left arrow keyplayGround.onkey(k3, "Right")  # you get it!playGround.onkey(k4, "Down")playGround.listen()follow_runner()playGround.mainloop()

我根据乌龟光标的大小使用10作为碰撞半径,可以根据需要进行调整。该代码只是在游戏结束时给出一条消息,当发生碰撞时,您可能想做一些更复杂的事情。您可以考虑将碰撞逻辑设为自己的功能,以便在每次击键后使用,以防跑步者不小心撞到跟随者!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/610820.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号