2014-02-04 2 views
0

Мне нужно напечатать двумерный список для подключения четырех игр с 7 столбцами и 6 строками. Вот мой код, но он печатает только таблицу 6x6. Глобальные константы из модуля являются Четыре в ряд: BOARD_ROWS = 6 и BOARD_COLUMNS = 7Печать 7x6 двумерный список

def print_board(game_state: list)-> None: 
     for i in range(connectfour.BOARD_ROWS): 
      for j in range(connectfour.BOARD_COLUMNS): 
       if j != connectfour.BOARD_COLUMNS -1: 
        if game_state[j][i] == connectfour.NONE: 
         print('.', end=' ') 
        elif game_state[j][i] == connectfour.RED: 
         print('R', end=' ') 
        elif game_state[j][i] == connectfour.YELLOW: 
         print('Y', end=' ') 
       else: 
        print('\n',end='') 

Это выход я получаю:

. . . . . . 
    . . . . . . 
    Y . . . . . 
    R . . . . . 
    R . . . . . 
    R R R Y Y Y 

Как вы можете видеть, что есть только 6 столбцов. Однако я знаю, что 7-й из них существует, потому что в этом конкретном выпуске игрок «Y» выиграл после того, как сбросил кусок в 7-й колонке. Я просто не понимаю, почему он не печатает 7-й столбец. Заранее спасибо за помощь.

+0

вы должны взглянуть на модуль [curses] (http://docs.python.org/2/library/curses.html). Вы можете нарисовать части экрана без необходимости повторной печати платы каждый раз. – mhlester

+0

Спасибо за предложение, но для этой программы мне специально предлагается обновить и распечатать доску после каждого хода. –

ответ

0

if j != connectfour.BOARD_COLUMNS -1: означает, что вы конкретно исключаете последнюю колонку. Снимите это if и сделайте следующее if s, и вы должны быть хорошими.

+0

Спасибо! это сработало. Один из моих преподавателей в лаборатории сказал мне, чтобы я поставил эту линию, но я не совсем понял, что это сделал, я попытался вынуть -1, но он просто напечатает одну большую строку. Это сработало, хотя спасибо. Я хочу, чтобы панель выглядела чище, но нумеруя столбцы сверху, так что: –

+0

Извините, я не мог набрать ее, но в основном ряд в верхней части доски с «1 2 3 4 5 6 7». Любая помощь в том, как это сделать? –

+0

Как первая строка вашей функции '' print_board'', сделайте следующее: '' print ("1 2 3 4 5 6 7") '' – Wolf

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