我有下面的代码,觉得它可以更有效。这意味着这是3x3板,可以手动完成,但如果它是一个30x30板或更大?你知道吗
x = [[1, 2, 0],[2, 1, 0],[2, 1, 0]]
for y in range (3):
if ((x[0][0] == x[1][0] == x[2][0] == y) or
(x[0][1] == x[1][1] == x[2][1] == y) or
(x[0][2] == x[1][2] == x[2][2] == y) or
(x[0][0] == x[0][1] == x[0][2] == y) or
(x[1][0] == x[1][1] == x[1][2] == y) or
(x[2][0] == x[2][1] == x[2][2] == y) or
(x[0][0] == x[1][1] == x[2][2] == y) or
(x[0][2] == x[1][1] == x[2][0] == y)):
if y==1:
print('Player 1 won!!!')
if y==2:
print('Player 2 won!!!')
if y==0:
print('Nobody won')
有没有办法让状况更好?你知道吗
如果您不介意导入numpy,这将适用于任何正方形网格和任意数量的播放器:
我不确定它是否更快,但“如果”更少:
你可以使用这样的函数生成器:
所以您可以调用
cell_owner(1)
来获得一个函数,该函数接受一个值并检查它是否为1。 这似乎没用,但使用这样的函数,您可以使用all和map检查一行中的整个单元格组:在此之前,您可以准备一个可获胜的单元格组列表,然后对每个组应用all/map函数迭代该列表,以确定是否有玩家获胜。你知道吗
下面是一个完整的示例,其中包含一些用于测试pupose的额外函数:
注意:此代码适用于任何大小的正方形网格。你知道吗
相关问题 更多 >
编程相关推荐