Я делаю программу для кого-то, чтобы они могли тренировать свои глаза, и я использую черепаху, чтобы она двигалась беспорядочно. Я хочу, чтобы черепаха отскакивала от стен, чтобы она не исчезла по сторонам, чтобы ее больше никогда не видели! Я посмотрел: TurtleGraphics Python: Отскакивает черепаха от стен? и использовал некоторый код от jnylen, так что ему следует отдать должное! В любом случае, вот мой старый и ужасный код (он сохранен для справки):
from random import *
from turtle import *
penup() # Get rid of those lines it leaves behind!
def main():
while True: # I want this to be infinite
a = randint(1,600)
print a
b = randint(1,359)
print b
c = randint(1,600)
print c
d = randint(1,359)
print d #Checking my randoms
forward(a)
edge() # Keep calling edge, so it will bounce on the edge.
left(b)
edge() # Keep calling edge, so it will bounce on the edge.
forward(c)
edge() # Keep calling edge, so it will bounce on the edge.
right(d)
edge() # Keep calling edge, so it will bounce on the edge.
def edge():
x, y = position()
top = window_height()/2
bottom = -top
right = window_width()/2
left = -right
if (x <= left and 90 <= heading() <= 270) or (right <= x and not 90 <= heading() <= 270):
f = 178 * h
left(f)
main()
elif (y <= bottom and heading() >= 180) or (top <= y and heading <= 180):
f = -2 * heading()
left(f)
main()
else:
main()
main()
Однако когда я запускаю его, я получаю результат:
189
199
553
152
26
175
597
263
119
201
582
329
231
267
344
28
Traceback (most recent call last):
File "C:/Users/George/Desktop/Eyes.py", line 39, in <module>
main()
File "C:/Users/George/Desktop/Eyes.py", line 15, in main
edge()
File "C:/Users/George/Desktop/Eyes.py", line 38, in edge
main()
File "C:/Users/George/Desktop/Eyes.py", line 15, in main
edge()
File "C:/Users/George/Desktop/Eyes.py", line 38, in edge
main()
File "C:/Users/George/Desktop/Eyes.py", line 15, in main
edge()
File "C:/Users/George/Desktop/Eyes.py", line 38, in edge
main()
File "C:/Users/George/Desktop/Eyes.py", line 15, in main
edge()
File "C:/Users/George/Desktop/Eyes.py", line 31, in edge
left(f)
TypeError: 'int' object is not callable
Пожалуйста, кто-нибудь может помочь мне это исправить. Я пробовал установить f
на float
, string
и int
, но ничего не работает! Вероятно, это что-то действительно очевидное, так что, если это так, извините.
Вот мой новый и, надеюсь, правильный код:
from random import *
from turtle import *
penup() # Get rid of those lines it leaves behind!
def main():
while True: # I want this to be infinite
a = randint(1,600)
print a
b = randint(1,359)
print b
c = randint(1,600)
print c
d = randint(1,359)
print d #Checking my randoms
forward(a)
x, y = position()
top = window_height()/2
bottom = -top
right = window_width()/2
l = -right
if (x <= l and 90 <= heading() <= 270) or (right <= x and not 90 <= heading() <= 270):
f = 178 * heading()
left(f)
print "1"
elif (y <= bottom and heading() >= 180) or (top <= y and heading <= 180):
f = -2 * heading()
left(f)
print "2"
else:
print "3"
left(b)
x, y = position()
top = window_height()/2
bottom = -top
right = window_width()/2
l = -right
if (x <= l and 90 <= heading() <= 270) or (right <= x and not 90 <= heading() <= 270):
f = 178 * heading()
left(f)
print "1"
elif (y <= bottom and heading() >= 180) or (top <= y and heading <= 180):
f = -2 * heading()
left(f)
print "2"
else:
print "3"
forward(c)
x, y = position()
top = window_height()/2
bottom = -top
right = window_width()/2
l = -right
if (x <= l and 90 <= heading() <= 270) or (right <= x and not 90 <= heading() <= 270):
f = 178 * heading()
left(f)
print "1"
elif (y <= bottom and heading() >= 180) or (top <= y and heading <= 180):
f = -2 * heading()
left(f)
print "2"
else:
print "3"
right(d)
x, y = position()
top = window_height()/2
bottom = -top
right = window_width()/2
l = -right
if (x <= l and 90 <= heading() <= 270) or (right <= x and not 90 <= heading() <= 270):
f = 178 * heading()
left(f)
print "1"
elif (y <= bottom and heading() >= 180) or (top <= y and heading <= 180):
f = -2 * heading()
left(f)
print "2"
else:
print "3"
main()
main
, который вызываетedge
, который снова вызываетmain
и т. Д.). - person BartoszKP   schedule 21.10.2013from <module> import *
, причина ваших проблем, вероятно, была бы более очевидной. - person Nick T   schedule 24.10.2013