#python
#python
Вопрос:
Я пишу проект о шашках (1 на 1). Когда я пытаюсь переместить солдата, он печатает ту же доску, что я делаю не так? Спасибо
Пример: я пытаюсь перейти от 2X3 к 3X4
rows = 8
cols = 8
board = [['B', '-', 'B', '-', 'B', '-', 'B', '-'], ['-', 'B', '-', 'B', '-', 'B', '-', 'B'],
['B', '-', 'B', '-', 'B', '-', 'B', '-'], ['-', '-', '-', '-', '-', '-', '-', '-'],
['-', '-', '-', '-', '-', '-', '-', '-'], ['-', 'w', '-', 'w', '-', 'w', '-', 'w'],
['w', '-', 'w', '-', 'w', '-', 'w', '-'], ['-', 'w', '-', 'w', '-', 'w', '-', 'w']]
def create_game_board(): ##### this function create the game board#####
for i in range(rows):
list = []
for j in range(cols):
list.append(" ")
board.append(list)
return board
validTurn = True
def valid_Move_position(board):
currentRowCube = input("what is the row of the player that you want to move? ")
currentColCube = input("what is the col of the player that you want to move? ")
targetRowCube = input("which cube do you want to move to? ")
targetColCube = input("which cube do you want to move to? ")
#def move(,targetColCube, targetRowCube ):
#if (targetRowCube, targetColCube =="-"):
#currentRowCube = "B"
#currentColCube = "B"
def print_board(board): #####This function is drawing the board#####
print(" 0 1 2 3 4 5 6 7 ")
print(" A B C D E F G H ")
for i in range(cols):
print(i, " |", end="")
for j in range(rows):
current_cell = board[i][j]
print(current_cell "|", end="")
print("")
Ответ №1:
Ваша функция create_game_board
работает неправильно. Если ваша цель — создать копию доски по умолчанию, то для этого вы можете использовать однострочники. Вместо этого ваша функция добавляет список из 8×8 пробелов к доске по умолчанию, тем самым изменяя его.
Я предлагаю вам попробовать это:
def create_game_board():
return [[v for v in line] for line in board]
Ответ №2:
Ваша функция перемещения не работает, вы никогда не перемещаете фигуры, когда устанавливаете currentRowCube = "B"
в функции move , которая назначает ее только локально, и вы не можете ожидать, что это изменит ее в списке.