2017-01-09 5 views
-4

Так что я развиваю игру, подключаю 4, и мне нужно избавиться от отрицательного индексации, потому что это заставляет игру действовать смешно. В принципе, столбец, к которому обращается игрок, основан на группе списка, объединенной в один единственный список, чтобы сформировать массив. напримерМожно ли отключить отрицательную индексацию?

grid1 = ['A','B','C','1'] 
    grid2 = ['D','E','F','2'] 
    grid3 = ['G','H','I','3'] 
    grid4 = ['J','K','L','4'] 

    # Now if we combine all three lists, we get 
    Total_Grid = [['A','B','C','1'] 
        ['D','E','F','2'] 
        ['G','H','I','3'] 
        ['J','K','L','4']] 
    # We have a total of 4 columns and 4 rows in this grid 
    # Here is the format of how we access values in list Total_Grid[row][col] 

Так к письму доступа 'G', мы делаем Total_Grid [2] [0]. потому что «G» в строке 2, столбец 0. Рисунок из фактической сетки, мы имеем:

| | | | | 
    ------------- 
    | | | | | 
    ------------- 
    | | | | | 
    ------------- 
    | | | | | 
    ------------- 
    # As you can see, the grid is 4x4 

Теперь, потому что в Connect 4, вы не можете выбрать то, что грести счетчик переходит в (его обычно падает до нижней части сетки), мы будем обозначать значение для строки.

row = 3 
    # Lets ask the user for input 
    col = input("What column would you like to drop your counter in? ") 
    # let's say user inputs 3, the counter will drop to [3][3] in the grid 
    col = 3 

    | | | | | 
    ----------------- 
    | | | | | 
    ----------------- 
    | | | | | 
    ----------------- 
    | | | | X | 
    -----------------   

Моя проблема сейчас возникает потому, что, например, если пользователь вводит отрицательное число для значения столбца, он по-прежнему работает, потому что он индексирует отсталые, но я хочу, чтобы отключить это, потому что это портит игру, когда пытается AI блокировать игрока от 4 точки подключения

+2

Вы пробовали 'if i <0'? –

+2

Который вы хотите? Ошибка или игнорирование? Вы упомянули обоим. – roganjosh

+1

Можете ли вы изменить код ?, Я имею в виду, можете ли вы заменить 'print' для любого другого пользовательского метода? –

ответ

1
for i in range(5): 
    if i<0: 
     print('ERROR:VALUE IS NEGATIVE') 
     pass 
    else: 
     # Do something 
+0

, но 'i' не может быть <0 в этом цикле ... –

+0

В этом конкретном примере да, и проблем не будет. В общем случае, когда список содержит положительные и отрицательные числа, это будет ловить его –

2

Вы можете инкапсулировать ваши проверки и печати функций в одном вызываемую функцию:

def print_only_if_non_negative(x): 
    if x >= 0: 
     print(x) 

for i in range(5): 
    print_only_if_non_negative(i-5) 
0
for i in range(5): 
     if((i-5)>=0): 
      print(i-5) 

Обратите внимание, что в этом случае ничего не будет напечатано, так как все числа отрицательны и будут игнорировать отрицательные числа.

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