#python #module #turtle-graphics #key-bindings
#python #модуль #черепаха-графика #привязки клавиш
Вопрос:
Я нахожусь в процессе модуляции своего кода для игры, которую я написал. Когда я модулировал класс player, я добавлял все дополнительные параметры / аргументы, чтобы его можно было разделить. Я сохранил привязку клавиш в основном игровом модуле.
Код привязки ключей выглядит следующим образом
turtle.listen()
a=turtle.onkey(player.go_left(walls), "Left")
b=turtle.onkey(player.go_right(walls), "Right")
c=turtle.onkey(player.go_up(walls), "Up")
d=turtle.onkey(player.go_down(walls), "Down")
e=turtle.onkey(player.headright(missile,lives), "d")
f=turtle.onkey(player.headleft(missile,lives), "a")
g=turtle.onkey(player.headdown(missile,lives),"s")
h=turtle.onkey(player.headup(missile,lives),"w")
i=turtle.onkey(player.headright(missile,lives),"D")
j=turtle.onkey(player.headleft(missile,lives), "A")
k=turtle.onkey(player.headdown(missile,lives),"S")
l=turtle.onkey(player.headup(missile,lives),"W")
o=turtle.onkey(player.drink(info),"space")
m=turtle.onkey(player.fireball(missile2,info,lives),"z")
n=turtle.onkey(player.fireball(missile2,info,lives),"Z")
Игра запускается без ошибок, но клавиши не реагируют на действие.
Вы можете найти код в
https://github.com/Ninedeadeyes/7-Dungeons-Deep/tree/master
Код привязки клавиш находится в игре (версия mod)
Все функции находятся внутри ‘player.py ‘
Любая помощь была бы отличной.
Комментарии:
1. Почему вы фиксируете возвращаемое значение из
onkey
переменных in? Это всегда None? Почему вы вызываетеonkey
иlisten
turtle
обычноonkey
вызываетсяscreen
?2. Я пытался что-то сделать, но даже если вы удалите переменные, это не будет иметь никакого значения. Как onkey, так и listen являются методами turtle.. Вы можете использовать что-то еще с этими методами, но если вы используете библиотеку turtle, это должно сработать.. Это работает, когда я написал игру в одном файле, но мне пришлось добавить дополнительные дополнения из-за модуляции кода. Если вы можете предоставить некоторые отзывы о том, что это должно быть, вместо turtle. onkey, я буду благодарен
3. Прочитав немного больше, я думаю, что могу добавить функцию только без аргументов, чтобы она работала docs.python.org/2/library/turtle.html#turtle . onkey
4. следовательно, почему мой исходный код работает, в то время как, когда я разделяю код и добавляю дополнения к функции onkey, он больше не работает.
5. Поскольку вы не предоставили пример кода
player.go_left(walls)
etc., Я предположил, что он вернул соответствующий тип (т. Е. Функцию обратного вызова без параметров) — но да, это должна быть функция. Если на ваш вопрос по существу дан ответ, либо напишите хороший ответ и примите его, либо закройте вопрос.
Ответ №1:
Функция onkey разрешает только функцию без аргументов, поэтому невозможно использовать функции с аргументами, поэтому она не работает.
https://docs.python.org/2/library/turtle.html#turtle .onkey
Но… Если вы используете
черепаха.onkey((lambda:player.go_left(стены)), «Левый»)
это будет работать, потому что вы создаете функцию внутри функции, которая будет выражать выходные данные так, как если бы у нее не было аргументов.