Ошибка Turtle.Terminator возникает после каждого другого успешного запуска - PullRequest
1 голос
/ 22 июня 2019

Я пытаюсь заставить программу Python работать непрерывно, с графикой черепахи, отображающей правильный ответ.Пока программа работает, после каждого успешного запуска она выдаст ошибку turtle.Terminator.Т.е. он будет запущен в первый раз с ошибкой turtle.Terminator, затем во второй раз он будет работать нормально без ошибок.

Я попытался использовать from turtle import Turtle и соответственно изменить переменные, но безрезультатно,Я также пытался создать функцию для создания окна и последующего вызова функции result(), но также безрезультатно.

import turtle 
import random

def result(x, comment):
    width = 450
    length = 335
    turtle.setup(width,length)
    turtle.bgcolor("black")
    turtle.title("Guess the number")
    fonts = ['times new roman', 'americana', 'verdana']
    turtle.hideturtle()
    turtle.penup()
    turtle.goto(0, 40)
    turtle.color("green")
    turtle.write(x, align = "center", font = (random.choice(fonts),30, 
    "italic"))
    turtle.pendown()
    turtle.penup()
    turtle.goto(0, -40)
    turtle.color("blue")
    turtle.write(comment, align = "center", font = (random.choice(fonts),30, 
    "italic"))
    turtle.pendown()
    #turtle.done()

p = 'y'
while p == 'y' or p == 'Y':
    bot = random.randint(1,1)
    p1 = int(input("Please enter a number: "))
    if bot == p1:
        r = "WINNER"
        c = "GREAT JOB"
        result(r,c)
    if bot != p1:
        r = "LOSER"
        i = "you're dumb as a rock"
        result(r, i)
    p = input("do you want to try again: " )
    if p == 'y' or p == 'Y':
        turtle.clear()
    else:
        turtle.done()
        break

1 Ответ

0 голосов
/ 22 июня 2019

Я вижу две проблемы: боуксинг между окном консоли и окном черепахи;не играет хорошо в мире событий черепахи.Мы можем решить обе проблемы, используя методы numinput() и textinput() черепахи Python 3 вместо input() и добавив события таймера:

from turtle import Screen, Turtle
from random import choice, randint

WIDTH, HEIGHT = 640, 480
MINIMUM, MAXIMUM = 1, 10
TITLE = "Guess the number"
FONTS = ['times new roman', 'americana', 'verdana']

def result(status, comment):

    turtle.goto(0, 40)
    turtle.color("green")
    turtle.write(status, align="center", font=(choice(FONTS), 30, "italic"))

    turtle.goto(0, -40)
    turtle.color("blue")
    turtle.write(comment, align="center", font=(choice(FONTS), 30, "italic"))

def play():
    turtle.clear()

    number = randint(MINIMUM, MAXIMUM)

    answer = screen.numinput(TITLE, "Please enter a number:", minval=MINIMUM, maxval=MAXIMUM)

    if number == answer:
        result("WINNER", "GREAT JOB")
    else:
        result("LOSER", "you're dumb as a rock")

    answer = screen.textinput(TITLE, "Do you want to try again?")

    screen.ontimer(play if answer in {'y', 'Y'} else screen.bye, 250)

screen = Screen()
screen.setup(WIDTH, HEIGHT)
screen.bgcolor("black")
screen.title(TITLE)

turtle = Turtle()
turtle.hideturtle()
turtle.penup()

play()

screen.mainloop()  # returns upon screen.bye()

Посмотрите, дает ли это взаимодействие, которое вы ищетедля.

...