首页 > 解决方案 > Python字典宾果游戏。需要帮助检查垂直胜利

问题描述

我正在写一个宾果游戏作为课堂作业。到目前为止,我对此感到非常自豪,但它并没有取得一些胜利。

下面是生成卡片的代码:

def generate_card():
    card = {
        "B": [],
        "I": [],
        "N": [],
        "G": [],
        "O": [],
    }
    min = 1
    max = 15
    for letter in card:
        card[letter] = random.sample(range(min, max), 5)
        min += 15
        max += 15
        if letter == "N":
            card[letter][2] = "X" # free space!
    return card

这是检查胜利的方法:

def check_win(card):
    win = False
    if card["B"][0] == "X" and card["I"][1] == "X" and card["N"][2] == "X" and card["G"][3] == "X" and card["O"][4] == "X":
        win = True
    elif card["O"][0] == "X" and card["G"][1] == "X" and card["N"][2] == "X" and card["I"][3] == "X" and card["B"][4] == "X":
        win = True
    elif card["B"][0] == "X" and card["O"][4] == "X" and card["B"][4] == "X" and card["O"][0] == "X":
        win = True
    for letter in card:
        if(len(set(card[letter]))==1):
            win = True
    for letter in card:
        for number in letter:
            i = 0
            if card[letter][i] == "X":
                i += 1
        if i == 5:
            win == True
            break
    return win

它首先检查对角线获胜,然后是四角获胜,然后检查水平获胜,最后是垂直获胜。我刚刚测试过,看起来检查垂直获胜的代码不起作用。我不知道为什么,但我知道很难绞尽脑汁为它编写代码。任何帮助表示赞赏!

另外,如果您发现任何其他问题,请告诉我!我发现这个超级难测试。

标签: python

解决方案


Maybe this:

for i in range(5):
    cnt = 0
    for letter in card:
        if letter[i] == "X":
            cnt += 1
    if cnt == 5:
        win == True
        break

推荐阅读