Как добавить границы на мой экран черепахи? - PullRequest
0 голосов
/ 27 апреля 2019

Итак, я создаю кодовую версию игры со змеями. Я хочу добавить фрагмент кода, где, если змея касается обеих сторон границ экрана, игра заканчивается, и программа закрывается. Я уже знаю, как установить размер экрана и все такое. Я посмотрел на множество ресурсов, чтобы помочь мне решить эту проблему, но ни один из них не помог. Я даже посмотрел на каталог python, и это не помогло. Если у меня есть какая-нибудь строка кода для установки этих границ и отмены программы, когда змея касается этих границ, я был бы признателен за это.

Ответы [ 2 ]

1 голос
/ 27 апреля 2019

Хотя @ 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 и т. Д. Не идеальны из-за хрома (границы, строка заголовка, полосы прокрутки и т. Д.) В окне.Вы найдете, что это хуже в измерении Y из-за размера строки заголовка.Я не знаю, как внутри черепахи можно рассчитать эту разницу, кроме догадок.Возможно, решение найдено в базовой библиотеке tkinter.

0 голосов
/ 27 апреля 2019

Я не думаю, что вы искали достаточно усердно, так как что-то вроде "обнаружения столкновений с черепашкой питона" возвращает довольно много примеров того, что вы хотите. Кроме того, в правилах указывается минимальный проверяемый пример вашей проблемы, поэтому мы знаем, как помочь вам лучше - было бы полезно узнать, как определяется экран и т. Д ...

Кроме того, оно должно быть простым:

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

... от просмотра документации здесь: черепаха .

...