Python:尝试编写连接四的变体:获胜条件不会停止

时间:2016-11-17 21:27:29

标签: python arrays for-loop matrix infinite-loop

我一直在尝试为我的编程类编程连接四的变体。该板尺寸为6x8。在变体中,我试图对获胜条件进行编程实际上是构建一个L。

这意味着形式的任何结构
X
X
X X
是一个胜利的条件 我一直在尝试创建一个函数来连续检查每个列的相同符号以构建一对。并且每个Row都有相同的功能。通过这两个函数,我将检查2对是否是连续的,因为无论你如何组合垂直和水平对,它总是会构建一个' L'。

使用

创建一个清晰的电路板
def ClearBoardSingle():
global Board
Board = [['0' for i in range(8)] for i in range(6)]
BoardPrint()
PlayerMoveSingle()

对于我的界面我使用

def BoardPrint():
global Board
global GameMoves
global PlayerTurn
global Player1Symbol
global Player2Symbol
print('\n\nMoves done: ' + str(GameMoves))
print('To Restart: R | To Quit: Q')
print('Valid choices: 1, 2, 3, 4, 5, 6, 7, 8')
if PlayerTurn == 0:
    print('It\'s ' +str(Player1Symbol) + '\'s Turn')
if PlayerTurn == 1:
    print('It\'s ' +str(Player2Symbol) + '\'s Turn')
print(Board[0])
print(Board[1])
print(Board[2])
print(Board[3])
print(Board[4])
print(Board[5])

我已经想出了如何更改董事会内部的变量,而且我已经完成了很多工作,我唯一不知道如何实施的是胜利条件。我为Rows尝试了这个函数

def VerticalList(Column):
global Board
global Choice
global Row0
Column = int(Column)
Choice = int(Choice)
print(Column,' C')
while Column > 0:
    for Board[Column][Choice] in range(Column):
        Row0.append(Board[Column][Choice])
        if Column ==6 or Column == -1:
            break
        else:
            VerticalList(Column-1)
    if Column ==0:
        break
    else:
        continue
if Column == 0:
    Column += 1
    while Column < 5:
        Column +=1
        if Row0[Column] == Row0[Column-1]:
            print('Pair')
        else:
            print('No Pair')
            pass
else:
    pass

但它以无尽的循环结束 我对如何实现获胜条件没有任何想法。如果您希望我发布整个代码或其他类型的代码片段,我会感激任何形式的帮助或想法。

感谢您的期待!

1 个答案:

答案 0 :(得分:0)

很酷的问题,下面看起来像很多代码,但事实并非如此。我没有广泛检查过,所以我不相信它没有发现误报,但它似乎找到它应该找到的L's。我做的主要是使用/bin/sh来取得X的位置的所有4个大小的组,然后检查它们是否看起来像我期待的L's模式。在itertools.combinations中,我会查看行和列中的差异。

check_four_group