Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как перенести информацию из одного цикла в другой

Кирилл У Ученик (146), на голосовании 2 недели назад
как сделать так что бы X и Y при нажатии кнопки менялись во все циклах. т.е. что бы изменения касались ни одного цикла if, а всех

def move_oval(key):

oval_x1, oval_y1, oval_x2, oval_y2 = c.coords(oval)
y = 2
x = 2
print(lab[x][y])
if key.char == 'a' or key.char == 'ф':
x -= 1
if lab[y][x] == 's':
return
else:
c.move(oval, -10, 0)
elif key.char == 'd' or key.char == 'в':
x += 1
if lab[y][x] == 's':
return
else:
c.move(oval, 10, 0)
elif key.char == 'w' or key.char == 'ц':
y -= 1
if lab[y][x] == 's':
return
else:
c.move(oval, 0, -10)
elif key.char == 's' or key.char == 'ы':
y += 1
if lab[y][x] == 's':
return
else:
c.move(oval, 0, 10)
Голосование за лучший ответ
робот д24 Мудрец (19531) 1 месяц назад
Через глобальные переменные
Кирилл УУченик (146) 1 месяц назад
Выдаёт ошибку 'name 'x' is used prior to global declaration'
робот д24 Мудрец (19531) Кирилл У, надо правильно код писать, а не неправильно
Кирилл Матков Ученик (206) 1 месяц назад
 # Глобальные переменные 
x = 2
y = 2

def move_oval(key):
global x, y # Объявляем x и y как глобальные

oval_x1, oval_y1, oval_x2, oval_y2 = c.coords(oval)
print(lab[x][y]) # Печатаем текущее состояние лабиринта на позиции (x, y)

if key.char == 'a' or key.char == 'ф':
x -= 1
if lab[y][x] == 's':
x += 1 # Возвращаем x, если перемещение невозможно
return
else:
c.move(oval, -10, 0)

elif key.char == 'd' or key.char == 'в':
x += 1
if lab[y][x] == 's':
x -= 1 # Возвращаем x, если перемещение невозможно
return
else:
c.move(oval, 10, 0)

elif key.char == 'w' or key.char == 'ц':
y -= 1
if lab[y][x] == 's':
y += 1 # Возвращаем y, если перемещение невозможно
return
else:
c.move(oval, 0, -10)

elif key.char == 's' or key.char == 'ы':
y += 1
if lab[y][x] == 's':
y -= 1 # Возвращаем y, если перемещение невозможно
return
else:
c.move(oval, 0, 10)

# Ваш код для установки клавиатурного ввода и других функций
Jurijus Zaksas Искусственный Интеллект (442894) 1 месяц назад
Во-первых, перестать называть ветвления циклами.
Во-вторых, убрать все эти else и elif и сделать читаемый код. У тебя взаимоисключающие условия, нафига они нужны? А еще лучше воспользоваться оператором match.
А затем, посмотрев на похорошевший код, решить, что тебе, старче, надобно. Например, инициализация твоих переменных происходит при каждом вызове этого фрагмента кода. Оно тебе туда надо? Вот от этого и пляши.
Похожие вопросы