如何为我的乌龟屏幕添加边框?
How do I add borders to my turtle screen?
所以我正在创建贪吃蛇游戏的代码版本。我想添加一段代码,如果蛇触及屏幕边界的任一侧,则游戏结束并且程序关闭。我已经知道如何设置屏幕大小等等。我查看了很多资源来帮助我解决这个问题,但其中 none 帮助了我。我什至查看了 python 目录,但没有帮助。如果有哪一行代码让我设置这些边框,当蛇碰到这些边框时取消程序,我将不胜感激。
我认为您搜索得还不够深入,像 "python turtle collision detection" returns 之类的东西有很多您想要的示例。此外,规则说明 post 您的问题的 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。
虽然 @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
在视觉上,您会发现 minX
、maxX
等并不完美,因为 chrome(边框、标题栏、滚动条等)在 window 上。由于标题栏的大小,您会发现 Y 维度更差。除了猜测之外,我不知道乌龟内部有什么方法可以计算这种差异。在底层的 tkinter 库中可能会找到解决方案。
所以我正在创建贪吃蛇游戏的代码版本。我想添加一段代码,如果蛇触及屏幕边界的任一侧,则游戏结束并且程序关闭。我已经知道如何设置屏幕大小等等。我查看了很多资源来帮助我解决这个问题,但其中 none 帮助了我。我什至查看了 python 目录,但没有帮助。如果有哪一行代码让我设置这些边框,当蛇碰到这些边框时取消程序,我将不胜感激。
我认为您搜索得还不够深入,像 "python turtle collision detection" returns 之类的东西有很多您想要的示例。此外,规则说明 post 您的问题的 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。
虽然 @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
在视觉上,您会发现 minX
、maxX
等并不完美,因为 chrome(边框、标题栏、滚动条等)在 window 上。由于标题栏的大小,您会发现 Y 维度更差。除了猜测之外,我不知道乌龟内部有什么方法可以计算这种差异。在底层的 tkinter 库中可能会找到解决方案。