class Board:
def __init__(self, N):
'''Board for a Connect-N game, the board will have N+2 Col and N+3 Rows'''
self.num_row = N + 3
self.num_col = N + 2
self.cols = [Column(self.num_row) for i in range(self.num_col)]
self.row = [Column(self.num_col) for i in range(self.num_row)]
pass
#return
def display(self):
'''display the board'''
print ('\u26AA' '\u26AB')
#for rown in range(3):
# for col in range(2):
# btn = tk.Button(width = '5',height = '2', text = '')
# btn.bind("<Button-1>", on_btn_click)
# btn.grid(row = rown, column = col )
def drop_disk(self, c):
'''drop a disk at column c'''
pass
def check_winning_condition(self):
'''check if there is a winner'''
return True
class Column:
def __init__(self, r):
'''each column has r rows'''
self.rows = [0]*r
N = 4 #standard Connect-4
board = Board(N)
board.display()我正在尝试创建一个连接-4游戏,但不确定如何做。我得到了一些大纲,但不知道如何创建它。我正在尝试创建一个2列3行的板。这张照片是我想要的样子,但没有用。

发布于 2020-11-07 09:30:01
您可以使用__str__方法打印您的板:
一旦游戏按照您需要的方式工作,您可以轻松地在一个单独的文件集中构建一个带有tkinter的图形用户界面。
在下面的示例中,我使用list of lists来表示董事会。我更改了设置,以表示传统的连接-4的6行和7列。
class Board:
def __init__(self, N):
'''Board for a Connect-N game, the board will have N+2 Col and N+3 Rows'''
self.num_row = N + 2
self.num_col = N + 3
self.cells = [[None for _ in range(self.num_col)] for _ in range(self.num_row)]
def __str__(self):
res = []
for row in self.cells:
for cell in row:
c = cell
if cell is None:
c = '.'
res.append(f'{c} ')
res.append('\n')
return ''.join(res)
def drop_disk(self, c, player='X'):
'''drop a disk at column c
return True if successful
'''
for r, row in enumerate(self.cells):
if row[c] is None:
continue
elif r == 0:
break
self.cells[r-1][c] = player
return True
else: # this executes when there is `no break`
self.cells[r][c] = player
return True
return False
def check_winning_condition(self):
'''check if there is a winner'''
return True
N = 4 #standard Connect-4
board = Board(N)
print(board)输出:
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . . 为了测试输出,我还添加了drop_disk方法;如果成功播放了磁盘,则返回True,否则返回False。
print(board.drop_disk(3, 'X'))
print(board)
print(board.drop_disk(3, 'O'))
print(board)
print(board.drop_disk(4, 'X'))
print(board)
print(board.drop_disk(5, 'O'))
print(board)
print(board.drop_disk(3, 'X'))
print(board)
print(board.drop_disk(3, 'O'))
print(board)
print(board.drop_disk(3, 'X'))
print(board)
print(board.drop_disk(3, 'O'))
print(board)
print(board.drop_disk(3, 'X'))
print(board)
print(board.drop_disk(3, 'O'))
print(board)输出:
True
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . X . . .
True
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . O . . .
. . . X . . .
True
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . O . . .
. . . X X . .
True
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . O . . .
. . . X X O .
True
. . . . . . .
. . . . . . .
. . . . . . .
. . . X . . .
. . . O . . .
. . . X X O .
True
. . . . . . .
. . . . . . .
. . . O . . .
. . . X . . .
. . . O . . .
. . . X X O .
True
. . . . . . .
. . . X . . .
. . . O . . .
. . . X . . .
. . . O . . .
. . . X X O .
True
. . . O . . .
. . . X . . .
. . . O . . .
. . . X . . .
. . . O . . .
. . . X X O .
False
. . . O . . .
. . . X . . .
. . . O . . .
. . . X . . .
. . . O . . .
. . . X X O .
False
. . . O . . .
. . . X . . .
. . . O . . .
. . . X . . .
. . . O . . .
. . . X X O .https://stackoverflow.com/questions/64725965
复制相似问题