Как сделать так, чтобы вся программа полностью останавливалась после 5 попыток (щелчок) не имеет значения, находятся ли они на черепахе или нет, но программа после того, как вы написали, что у вас нет попыток, должна сломаться, и при нажатии не ставьте черную или красную точку, просто делайте ничего. Вот код:
from turtle import *
from random import *
import time
reset()
penup()
hideturtle()
speed(0)
bandymai = 0 #tries
taskai = 0 #points
info = Turtle()
info.penup()
info.goto(-180, 160)
info.color("Blue")
def gaudom(x, y):
goto(x, y)
if distance(beglys.pos()) < 10:
color('red') #hit color
global taskai
global bandymai
taskai = taskai + 1
info.clear()
info.write(taskai, font = ("Arial", 20, "bold"))
bandymai = bandymai + 1
else:
color('black') #miss color
dot(20)
bandymai = bandymai + 1
screen = getscreen()
screen.onclick( gaudom )
beglys = Turtle()
beglys.color('green')
beglys.shape('square')
for n in range(100):
x = randint(-200, 200)
y = randint(-200, 200)
beglys.penup()
beglys.clear()
beglys.goto(x, y)
time.sleep(1)
if taskai == 3:
info.write('you win!!!', font = ("Arial", 80, "bold"))
break
elif bandymai == 5:
info.write('you are out of trys', font = ("Arial", 50, "bold"))
break
Добавьте 2 строки в конце кода.
screen.onclick(None) #Do nothing when clicking the screen.
screen.mainloop() #Must be last statement in a turtle graphics program.
Вместо того, чтобы накладывать пластырь на код, давайте разберем его на части и реконструируем так, чтобы он был совместим с событиями (т. е. события черепашьего таймера вместо time.sleep()
). Мы также сделаем неявную черепаху по умолчанию явной, удалим несколько пустых операций и вообще настроим стиль:
from turtle import Screen, Turtle
from random import randint
bandymai = 0 # tries
taskai = 0 # points
def gaudom(x, y):
global taskai, bandymai
screen.onclick(None) # disable handler inside handler
turtle.goto(x, y)
if turtle.distance(beglys.pos()) < 10:
taskai += 1
info.clear()
info.write(taskai, font=('Arial', 20, 'bold'))
else:
turtle.color('black') # miss color
turtle.dot(20)
bandymai += 1
screen.onclick(gaudom) # reenable handler
ticks = 100
def play():
global ticks
x = randint(-200, 200)
y = randint(-200, 200)
beglys.goto(x, y)
if taskai == 3:
screen.onclick(None) # Do nothing when clicking the screen.
info.write("You win!", font=('Arial', 80, 'bold'))
return
if bandymai == 5:
screen.onclick(None) # Do nothing when clicking the screen.
info.write("You are out of trys.", font=('Arial', 50, 'bold'))
return
ticks -= 1
if ticks:
screen.ontimer(play, 1000) # 1 second (1000 milliseconds)
screen = Screen()
turtle = Turtle()
turtle.hideturtle()
turtle.speed('fastest')
turtle.penup()
info = Turtle()
info.color('blue')
info.penup()
info.goto(-180, 160)
beglys = Turtle()
beglys.color('green')
beglys.shape('square')
beglys.penup()
screen.onclick(gaudom)
play()
screen.mainloop() # Must be last statement in a turtle graphics program.