如何在乌龟屏幕上添加边框?

时间:2019-04-27 17:38:03

标签: python turtle-graphics

因此,我正在创建蛇游戏的代码版本。我想添加一段代码,如果蛇碰到屏幕边框的任何一侧,游戏结束并且程序关闭。我已经知道如何设置屏幕大小以及所有其他内容。我查看了很多资源来帮助我解决此问题,但没有一个有帮助。我什至查看了python目录,但没有帮助。如果有任何代码行让我设置这些边界并在蛇碰到这些边界时取消程序,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

尽管@ xen20解释了解决方案的要点,但我想确保您也了解window_width()window_height()方法:

import sys
import turtle

width, height = turtle.window_width(), turtle.window_height()

minX, maxX = -width/2, width/2
minY, maxY = -height/2, height/2

def repeated_code():

    turtle.forward(20)  # keep moving forward until we're out of window

    if not minX <= turtle.xcor() <= maxX or not minY <= turtle.ycor() <= maxY:
        turtle.bye()
        sys.exit("Finished.")  # if we don't exit() a Terminator will be raised

    turtle.ontimer(repeated_code, 100)  # repeat every 1/10th of a second

repeated_code()

turtle.mainloop()  # turn over control to tkinter event loop

从视觉上,您会发现minXmaxX等由于 chrome (边框,标题栏,滚动条等)而不理想。 )。您会发现,由于标题栏的大小,它在Y维度上更糟。除了猜测之外,我不知道乌龟内部有什么方法可以计算出这种差异。在基础的tkinter库中可能会找到解决方案。

答案 1 :(得分:0)

我认为您的搜索工作不够努力,因为“ python龟碰撞检测”之类的东西返回了很多您想要的示例。此外,规则规定要发布问题的minimal verifiable example,以便我们知道如何更好地为您提供帮助-了解屏幕的定义方式等很有用……

除此之外,它应该很简单:

if turtle.ycor() >= maxY or turtle.ycor() <= minY or turtle.xcor() >= maxX or turtle.xcor <= minX:
     turtle.bye()
     sys.exit(0)

...查看此处的文档:turtle