2017-10-18 7 views
0

Donc ce que je veux faire, est l'affichage: La distance d'Alex d'Alice est: (distance I calculé déjà)(Turtle/Python3) Comment faire une boucle while qui fonctionne indépendamment pour toujours dans Tortue?

J'ai besoin que cela soit affiché en haut de l'écran .. pour toujours, rafraîchissant, genre de comme les statistiques PING dans les jeux montre sur le dessus là ..

Je suppose que ce serait une boucle while? J'ai besoin du reste du fonctionnement du programme alors que cette affiche en permanence et rafraîchissante ..

+0

Bienvenue empiler le débordement. Qu'avez-vous déjà essayé de faire cela? Veuillez consulter [Combien d'effort de recherche est attendu?] (Https://meta.stackoverflow.com/questions/261592/how-much-research-effort-is-expected-of-stack-overflow-users). Stack Overflow n'est pas un service de codage. Vous devez rechercher votre problème et tenter d'écrire le code vous-même avant de le publier. Si vous êtes bloqué sur quelque chose de spécifique, revenez et incluez un [exemple minimal, complet et vérifiable] (https://stackoverflow.com/help/mcve) et un résumé de ce que vous avez essayé, afin que nous puissions vous aider. – Sand

Répondre

0

Voici mon approche minimaliste de ce problème (bien, pas tout à fait, je ne jette dans quelques raffinements):

from turtle import Turtle, Screen 

FONT_SIZE = 24 
FONT = ('Arial', FONT_SIZE, 'normal') 

def turtle_drag(turtle, other, x, y): 
    turtle.ondrag(None) # disable event hander in event hander 
    turtle.goto(x, y) 
    display.undo() # erase previous distance 
    distance = turtle.distance(other) 
    display.write('Distance: {:.1f}'.format(distance), align='center', font=FONT) 
    turtle.setheading(turtle.towards(other)) # make them always look 
    other.setheading(other.towards(turtle)) # lovingly at each other 
    turtle.ondrag(lambda x, y: turtle_drag(turtle, other, x, y)) # reenable 

screen = Screen() 
screen.setup(500, 500) 

display = Turtle(visible=False) 
display.penup() 
display.goto(0, screen.window_height()/2 - FONT_SIZE * 2) 
display.write('', align='center', font=FONT) # garbage for initial .undo() 

Alex = Turtle('turtle') 
Alex.speed('fastest') 
Alex.color('blue') 
Alex.penup() 

Alice = Turtle('turtle') 
Alice.speed('fastest') 
Alice.color('red') 
Alice.penup() 

turtle_drag(Alex, Alice, -50, -50) # initialize position and event hander 
turtle_drag(Alice, Alex, 50, 50) 

screen.mainloop() 

Lorsque vous faites glisser Alex ou Alice, leur distance centre-centre en haut de l'écran est mise à jour. Celui-ci utilise une tortue fixe, invisible, séparée, qui manipule l'affichage et qui fait .undo() pour effacer une valeur précédente et .write() pour en afficher une nouvelle. Faire les tortues se tournent vers l'autre après l'affichage à distance est mis à jour assure qu'ils ne sont pas piégés sous la tortue d'affichage invisible (c.-à-undragable) afin qu'ils puissent même être postitioned au-dessus du texte:

enter image description here