COLUMNS = 5
ROWS = 4
def empty_board():
board_rows =["| \t\t |"] * ROWS
board_columns = [" ___ "] * COLUMNS
for i in range (ROWS):
print(board_rows[i])
print("+", end= " " )
for i in range(COLUMNS):
print(board_columns[i], end="")
print
print("+")
for i in range(COLUMNS):
column_number = i+1
print(" " + str(column_number), end = " ")
def column_choice():
player = 1
if player % 2 != 0 :
column = input("Player 1, please choose a column to make your next move ")
else:
column = input("Player 2, please choose a column to make your next move ")
player += 1
return column
def new_board(column):
moves = 0
column = int(column) - 1
if moves % 2 == 0:
key = "X"
else:
key = "O"
board_rows = ["| \t\t |"] * ROWS
board_columns = [" ___ "] * COLUMNS
for i in range (ROWS):
print(board_rows[i])
board_rows.pop(column)
board_rows = board_rows.insert(column, key)
print(board_rows)
print("+", end= " " )
for i in range(COLUMNS):
print(board_columns[i], end="")
print("+")
for i in range(COLUMNS):
column_number = i+1
print(" " + str(column_number), end = " ")
if __name__ == "__main__":
print()
print("Welcome to Connect 4")
print()
new_board(column_choice())我必须创建一个具有给定的列和行尺寸的connect 4板(目前)。我目前已经创建了电路板,但我不太清楚如何让X或O放在正确的位置。例如,现在当我运行程序时,X将出现在整个列中。如果你能提供任何帮助,我将不胜感激!
发布于 2015-12-03 09:23:48
board_rows =["| \t\t |"] * ROWS
board_columns = [" ___ "] * COLUMNS将列表中的每个条目/项目指向相同的内存地址,因此更改一列会更改所有条目/项目,因为它们都指向相同的位置。
for row in board_rows:
print id(row)使用列表理解或for循环来获取列表中的不同项(内存位置)。
board_rows =["| \t\t |" for row in ROWS]
for row in board_rows:
print id(row)发布于 2015-12-03 09:23:00
老实说,这是一种非常复杂的表示文本板的方式。如果可能的话,我建议使用面向对象的方法,比如将板子做成一个列表,其中列表中的每个条目都是代表一行的字符串列表,并使用__repr__方法来帮助更容易地将其可视化。这是我写的一个例子。
class Board(object):
def __init__(self, rows, columns):
self.rows = rows
self.columns = columns
self.board = [['_' for i in range(self.columns)] for i in range(self.rows)]
def __repr__(self):
board = ''
for row in self.board:
board += ''.join(row) + '\n'
return board
f = Board(5, 5)
=> None
f
=> _____
_____
_____
_____
_____这样,一个空白板被表示为一个双重列表理解,其中你的rows参数是垂直长度,而你的columns参数是水平长度。
使用这段代码,尝试编写一个方法,通过在不是对手棋子的列中找到最低点,将棋子添加到棋盘上。
https://stackoverflow.com/questions/34056049
复制相似问题