Где вы кодируете:
if -width/2 <= x <= width/2 and -height/2 <= y <= height/2:
Вы действительно имеете в виду «если точка (x, y) находится внутри разрешенной области». Таким образом, когда «разрешенной областью» является «круг с радиусом 50 с центром в начале координат», сравнивая квадраты расстояний и радиуса (это более ясно, чем брать квадратные корни ...! -), вы получите:
if (x*x + y*y) <= 50*50:
оставляя весь остальной код без изменений.
Редактировать : поскольку ОП отметил, что это не работает для него, я изменил if / else на:
x, y = turtle.position()
# if -width/3 <= x <= width/3 and -height/3 <= y <= height/3:
if (x*x + y*y) <= 50*50:
pass
else: # turn around!
print 'Bounce', step, x, y
turtle.left(180)
turtle.forward(step_size)
и запустил его как bounded_random_walk(200, 10, 30)
из Terminal.App в Mac OS X, чтобы отобразился print
. В результате я получаю от 50 до 60 отпечатков «Bounce», и черепаха явно ОГРАНИЧЕНА внутри желаемого круга, как говорят логика и геометрия.
Так что я надеюсь, что ОП отредактирует свой собственный ответ по этим направлениям (в идеале в системе и в такой схеме, где он может увидеть результаты print
или каким-либо другим способом предоставления результатов и в идеале показать их нам), так что что я могу помочь ему отладить его код.