2012-11-17 3 views
2

Я пытаюсь создать игру, похожую на змею. Разница заключается в том, что рацион питания получают с помощью randint, и тогда игрок сможет выбрать, в каком направлении должна расти змея, также выбирается случайная позиция. Поле игры построено с матрицей, и поэтому можно «расти» в стенах, путем выбора направления роста, из-за чего список выходит за пределы диапазона.Создание оператора if с помощью indexerror - Python

Мой вопрос, если это возможно, чтобы создать если statemant, что бы закончить игру с «игра закончена», если игрок выбрал расти таким образом, что делает список выходят из диапазона, что-то вроде:

if IndexError: list index out of range : 
     print("Game over") 

с обработкой моего кода будет выглядеть примерно так: исключением

try : 

    if p == 0: 
     table[x][y] = "+" 
    elif p == 1: 
     table[x][y] = "+" 
     table[x][y+1] = "+" 
    elif p == 2: 
     table[x][y] = "+" 
     table[x][y+1] = "+" 
     table[x][y+2] = "+" 
    else: 
     table[x][y] = "+" 
     table[x][y+1] = "+" 
     table[x][y+2] = "+" 
     table[x][y+3] = "+" 
except IndexError : 
       print ("Game Over") 

Но я получаю ошибку «Unindent не соответствует ни уровню отступа наружного видного»

+0

Это потому, что ваш код неправильно отступил. –

+0

Убедитесь, что операторы try и except имеют одинаковый отступ, что все из if/elif/else внутри них имеют одинаковый отступ и что все содержимое каждого состояния if/elif/else имеет одинаковый отступ , Даже одно место все испортит! – ApproachingDarknessFish

+0

О! Я не знал, что в отпечатке был тот importan! Большое спасибо, похоже, что он работает сейчас! – Nekroz

ответ

6

Использовать exception handling:

try : 
    #your code 
except IndexError: 
    print "Game Over" 
+0

попытка: если р == 0: таблица [х] [у] = "+" Элиф р == 1: таблица [х] [у] = "+" таблица [х] [у + 1] = "+" elif p == 2: таблица [x] [y] = "+" таблица [x] [y + 1] = "+" таблица [x] [y + 2] = «+» : таблица [x] [y] = "+" таблица [x] [y + 1] = "+" таблица [x] [y + 2] = "+" таблица [x ] [y + 3] = "+" кроме IndexError: print ("Game Over") – Nekroz

+0

Извините за это! Я спрашиваю, можно ли написать инструкцию if в обработке исключений? Мой код, который я хочу в обработке исключений, выглядит так, как я писал выше! – Nekroz

+0

@ user1832337 не размещайте свой код в комментариях, это трудно понять. Лучше опубликуйте его в теле вопроса. –

Смежные вопросы