Форум сайта python.su
0
Возникла ошибка:NameError: name ‘catcher’ is not defined
Код:
Отредактировано JohnMc (Дек. 26, 2019 13:12:43)
Прикреплённый файлы:
egg_cather.py (3,4 KБ)
Офлайн
44
ну наверное в том что итaпретатор не знает такой пременной как catcher в пространстве имен этой функции (check_catch)
и вставьте ссылку на его url Отредактировано AD0DE412 (Дек. 26, 2019 10:33:33)
Офлайн
72
Потому что в 26 строке в слове cather отсутствует “c”.
Офлайн
0
ramiСпасибо исправил.
Потому что в 26 строке в слове cather отсутствует “c”.
Офлайн
0
AD0DE412А каким образом это исправить?
ну наверное в том что итaпретатор не знает такой пременной как catcher в пространстве имен этой функции (check_catch)
Офлайн
44
двайте так
""" закаментируем все функции и связаное с ними конечно """
и вставьте ссылку на его url Отредактировано AD0DE412 (Дек. 26, 2019 12:59:50)
Офлайн
0
AD0DE412Я не понял ,могли бы вы указать это место в коде или в частичке кода
двайте так
Офлайн
44
ну вся идея в том что бы проверить переменную catcher избавившись на время проверки от ее исползования в коде уж не знаю что тут показывать
и вставьте ссылку на его url Офлайн
0
В любом случае пишет ошибку даже если так
Отредактировано JohnMc (Дек. 26, 2019 13:33:01)
Офлайн
44
УМВР
import random from itertools import cycle from tkinter import Tk,Canvas,messagebox,font canvas_width = 800 canvas_height = 400 root = Tk() root.title('Яйцелов') c = Canvas(root,width = canvas_width,height = 400,background = 'deep sky blue') c.create_rectangle(-5,canvas_height - 100,canvas_width + 5,canvas_height + 5,fill = 'sea green',width = 0) c.create_oval(-80,-80,120,120,fill = 'orange',width = 0) c.pack() color_cycle = cycle(['light blue','light green','light yellow','light cyan','white']) egg_width = 45 egg_height = 55 egg_score = 10 egg_speed = 500 egg_interval = 4000 difficulty_factor = 0.95 catcher_color = 'blue' catcher_width = 100 catcher_height = 100 catcher_start_x = canvas_width / 2 - catcher_width / 2 catcher_start_y = canvas_height - catcher_height - 20 catcher_start_x2 = catcher_start_x + catcher_width catcher_start_y2 = catcher_start_y + catcher_height catcher = c.create_arc(catcher_start_x,catcher_start_y,catcher_start_x2,catcher_start_y2,\ start = 200,extent = 140,style = 'arc',outline = catcher_color,width = 3) game_font = font.nametofont('TkFixedFont') game_font.config(size = 18) score = 0 score_text = c.create_text(10,10,anchor = 'nw',font = game_font,fill = 'dark blue',text = 'Счёт: ' + str(score)) lives_remaining = 3 lives_text = c.create_text(canvas_width - 10,10,anchor = 'ne',font = game_font,fill = 'darkblue',\ text = 'Жизней: ' + str(lives_remaining)) eggs = [] def create_egg(): x = random.randrange(10,740) y = 40 new_egg = c.create_oval(x,y,x + egg_width,y + egg_height,fill = next(color_cycle),width = 0) eggs.append(new_egg) root.after(egg_interval,create_egg) def move_eggs(): for egg in eggs: (egg_x,egg_y,egg_x2,egg_y2,) = c.coords(egg) c.move(egg,0,5) if egg_y2 > canvas_height: egg_dropped(egg) root.after(egg_speed,move_eggs) def egg_dropped(egg): eggs.remove(egg) c.delete(egg) lose_a_life() if lives_remaining == 0: messagebox.showinfo('Конец игры !','Итоговый счёт: ' + str(score)) root.destroy() def lose_a_life(): global lives_remaining lives_remaining -= 1 c.itemconfigure(lives_text,text = 'Жизней: ' + str(lives_remaining)) def check_catch(): (catcher_x,catcher_y,catcher_x2,catcher_y2) = c.coords(catcher) return catcher for egg in eggs: (egg_x,egg_y,egg_x2,egg_y2,) = c.coords(egg) if x < egg_x and egg_x2 < x2 and y2 - egg_y2 < 40: eggs.remove(egg) c.delete(egg) increase_score(egg_score) root.after(100,check_catch) def increase_score(points): global score,egg_speed,egg_interval score += points egg_speed = int(egg_speed * difficulty_factor) egg_interval = int(egg_interval * difficulty_factor) c.itemconfigure(score_text,text = 'Счёт: ' + str(score)) def move_left(event): (x1,y1,x2,y2) = c.coords(catcher) if catcher_x1 > 0: c.move(catcher,-20,0) def move_right(event): (x1,y1,x2,y2) = c.coords(catcher) if x2 < canvas_width: c.move(catcher,20,0) c.bind('<Left>',move_left) c.bind('<Right>',move_right) c.focus_set() root.after(1000,create_egg) root.after(1000,move_eggs) root.after(1000,check_catch) root.mainloop()
и вставьте ссылку на его url Отредактировано AD0DE412 (Дек. 26, 2019 14:22:04)
Офлайн