Я полагаю, что каждый из случаев представляет собой отдельную комнату в игре, и вы хотите вызывать разные функции для каждой комнаты.
Хорошим примером для этого является отделите ваши данные от кода . Рассматривайте координаты и функцию для каждой комнаты как data , извлеките их в какой-то список комнат. Все, что вам нужно для кода , это проверить координаты игрока, найти соответствующую функцию помещения и вызвать ее.
Данные
Словарь идеально подходит для поиска вещей , Давайте рассмотрим координаты x, y как ключи, а функции - как значения.
rooms = {
(1, 1): dothis,
(1, 2): dothat,
(1, 3): doANewThing,
(1, 4): doSomethingDif,
# etc.
}
Обратите внимание, что имена функций не имеют скобок после них. Это dothis
и dothat
, а не dothis()
и dothat()
. Мы только перечисляем названия функций здесь; на самом деле мы их не называем.
Код
try:
# Look up the function for the current room...
room_function = rooms[(x, y)]
# ...And call it.
room_function()
# Error! Didn't find an entry for (x, y).
except KeyError:
handle_error()
Что в этом хорошего, вы можете легко добавлять новые комнаты в словарь без необходимости писать какие-либо новые блоки if-else. На самом деле - это никаких блоков if-else!