Python 尝试使用文本库创建connect 4游戏,然后稍后实现GUI 课程板: 定义初始化(self,N): “对于Connect-N游戏,棋盘将有N+2列和N+3行” self.num_行=N+3 self.num\u col=N+2 self.cols=[范围内i的列(self.num\u行)(self.num\u col)] self.row=[范围内i的列(self.num\u列)] 通过 #返回 def显示(自): ''显示板'' 打印('\u26AA'\u26AB') #对于范围(3)内的rown: #对于范围(2)中的列: #btn=tk.按钮(宽度为'5',高度为'2',文本为'') #btn.bind(“,单击时) #网格(行=行,列=列) def放置盘(自身,c): ''在c列放置磁盘'' 通过 def检查情况(自身): ''检查是否有赢家'' 返回真值 类别栏: 定义初始化(self,r): ''每列有r行'' self.rows=[0]*r N=4#标准连接-4 线路板=线路板(N) board.display()
我正在尝试创建一个connect-4游戏,但不确定如何实现。我有一些大纲,但不知道如何创建它。我正在尝试创建一个包含2列和3行的板。 图像是我想要的样子,但它没有工作Python 尝试使用文本库创建connect 4游戏,然后稍后实现GUI 课程板: 定义初始化(self,N): “对于Connect-N游戏,棋盘将有N+2列和N+3行” self.num_行=N+3 self.num\u col=N+2 self.cols=[范围内i的列(self.num\u行)(self.num\u col)] self.row=[范围内i的列(self.num\u列)] 通过 #返回 def显示(自): ''显示板'' 打印('\u26AA'\u26AB') #对于范围(3)内的rown: #对于范围(2)中的列: #btn=tk.按钮(宽度为'5',高度为'2',文本为'') #btn.bind(“,单击时) #网格(行=行,列=列) def放置盘(自身,c): ''在c列放置磁盘'' 通过 def检查情况(自身): ''检查是否有赢家'' 返回真值 类别栏: 定义初始化(self,r): ''每列有r行'' self.rows=[0]*r N=4#标准连接-4 线路板=线路板(N) board.display(),python,list,class,tkinter,Python,List,Class,Tkinter,我正在尝试创建一个connect-4游戏,但不确定如何实现。我有一些大纲,但不知道如何创建它。我正在尝试创建一个包含2列和3行的板。 图像是我想要的样子,但它没有工作 您可以使用\uuuu str\uuuu方法打印电路板: 一旦游戏按您需要的方式运行,您就可以轻松地在一组单独的文件中构建一个GUI,其中包含tkinter 在下面的示例中,我使用列表的列表来表示电路板。我更改了设置以表示connect-4的传统6行7列 class Board: def __init__(self,
您可以使用
\uuuu str\uuuu
方法打印电路板:一旦游戏按您需要的方式运行,您就可以轻松地在一组单独的文件中构建一个GUI,其中包含
tkinter
在下面的示例中,我使用列表的列表来表示电路板。我更改了设置以表示connect-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 + 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()
输出:
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)
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)
我还添加了drop\u disk
方法来测试输出;如果成功播放光盘,该方法返回True
,否则返回False
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
输出:
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)
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)
请提供预期的价格。显示中间结果与预期结果的偏差。我们应该能够将单个代码块粘贴到文件中,运行它,并重现您的问题。这也让我们可以在您的上下文中测试任何建议。“它不起作用”不是一个问题规范。您实际提出的问题“我不确定如何做”,超出了堆栈溢出的范围。您必须诚实地尝试解决方案,然后就您的实现提出具体问题。非常感谢您的时间和努力。我可以根据自己的喜好使用和更改代码吗?对于初学者来说,第一步应该是什么?我不知道如何将代码放入Tkinter。当绑定按钮时,它不工作。谢谢,非常欢迎@Sizzy。我的建议是首先在控制台中构建一个工作游戏(print
语句和input
);一旦游戏开始运行,就可以尝试构建gui。如果您的代码是模块化的,并且清楚地将输入/输出与游戏逻辑分开,那么就更容易了。当你陷入困境时,你可以问新问题,我或stack社区的人会很乐意帮助你。太好了,祝贺你。谢谢你,我确实创建了GUI,但它没有按照我想要的方式工作。我试图将文本库和Tkinter组合在一起,但它只是有一个问题。所以我创建了一个新的GUI。(下面是connect 4游戏)。非常感谢。