Python Turtle: обработка двух последовательных экранов для двух последовательных игровых функций, управляемых прослушиваPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Python Turtle: обработка двух последовательных экранов для двух последовательных игровых функций, управляемых прослушива

Сообщение Anonymous »

Я новичок в Python и пробую Turtle с помощью руководств. Этот вопрос оказался многословным, моя вина.
Я разработал 2 игры, обрабатываемые 2 функциями (в отдельном модуле), которые вызываются из MAIN:

F1: играет в игру «Зарисовка эскиза», в которой пользовательские действия используются для перемещения
Черепахи для рисования

F2: Играет в черепаховую гонку, где 5 Черепахи (я
использовал список для управления 5 объектами) движутся со случайной скоростью, чтобы увидеть, кто
победит.

Проблема :
  • Игры работают нормально по отдельности на первой итерации, но у меня в MAIN есть цикл, в котором пользователь может выбирать игры несколько раз. На второй итерации появляется экран, но я не вижу черепах, и когда я нажимаю, я получаю ошибку Turtle Terminator.
  • Я инициализировал create_screen () в отдельном файле config.py, который я импортирую в каждый FN для создания экрана. Затем я использую exitonclick(), чтобы завершить отображение. Mainloop() здесь не сработал. (Следует ли мне использовать Global — просто хотел посмотреть, как заставить его работать БЕЗ Global)
  • Мне нужно, чтобы FN1 прекратил прослушивание, и спросить пользователя, хочет ли он FN2, затем перейти к FN2, и я Кажется, это невозможно сделать без exitonclick() на FN1. Как я могу сохранить экран живым, отображаемым и готовым к FN2? Это единственная причина, по которой я использую Screen в файле конфигурации и создаю его с помощью FN. Я уверен, что способ есть, просто я его еще не знаю.
Решения, которые я проверил, указывают на Turtle._RUNNING = True Flag, который можно изменить, но как лучше реализовать это без изменения переменной класса (или использования Global)? Если кто-то может указать мне на некоторые источники (кроме TURTLE DOCS) для прослушивателей экрана и событий, чтобы решить эту проблему, я сам изучу!
Скелет кода: я загружаю config.py в модуль FN и игровые функции из MAIN
# Module : config.py

from turtle import Turtle, Screen

squad = []
for i in range(0, 5): # List of Turtle Objects available to all Modules
raphael = Turtle()
raphael.speed(0)
squad.append(raphael)

def create_screen():
"""Creates and Returns a screen Object"""
screen = Screen()
screen.screensize(400, 400)
screen.colormode(255)
return screen

# Module : gamefunction.py

from config import squad, create_screen

def etch_sketch_game():
"""Plays the Etch a Sketch Game"""

screen_fn = create_screen()

def forwards(): # Other FNs designed but not included for this Question
squad[0].fd(30)

screen_fn.listen()
screen_fn.onkey(key="w", fun=forwards)
screen_fn.exitonclick()

def turtle_race(): # Only adde
"""Plays the Turtle Race Game"""

screen_fn = create_screen()

squad[0].setpos(-200, 30)
squad[1].setpos(-200, 20)
squad[2].setpos(-200, 0)
squad[3].setpos(-200, -20)
squad[4].setpos(-200, -30)

def forwards(): # Other FNs designed but not included for this Question
squad[0].fd(30)

screen_fn.onkey(key="w", fun=forwards)
screen.exitonclick()


Подробнее здесь: https://stackoverflow.com/questions/785 ... nt-listene
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»