Python中内存游戏的索引分配问题

3bygqnnd  于 2023-01-04  发布在  Python
关注(0)|答案(1)|浏览(121)

我有一个记忆游戏,我已经实现了使用状态,使用16张卡的列表;状态0等同于第一张卡被点击、显示并将其索引保存到变量card 1,状态1翻转被点击的第二张卡并将其保存到card2。最后,状态3检查第一和第二张卡是否匹配,如果不匹配,则取消翻转(分配False值)它们并返回到状态1。
我的代码从状态0和状态1开始工作,card1和card2的索引都被正确保存。当转到状态3时,card1和card2的值变为card1的值,这是错误的。
代码:

def mouseclick(pos):
    # add game state logic here
    global state , exposed, cards
    card1 = 0
    card2 = 0
    current_card = 0
    
    index = pos[0] // 50
    
    if state == 0:
        card1 = index
        exposed[card1] = True
        state = 1
        print(card1)

    elif state == 1:
        if exposed[index] == False:
            card2 = index
            exposed[card2] = True
            state = 2
            print(card2)
            
    elif state == 2:
        print(cards[card1], cards[card2])
        print(card1, card2)
        if exposed[index] == False:
            exposed[index] = True
            if cards[card1] == cards[card2]:
                exposed[card1] = True
                exposed[card2] = True
            else:
                exposed[card1] = False
                exposed[card2] = False
            card1 = index
            exposed[card1] = True
            state = 1
            print(exposed)

所展示的列表是16个假值的范围,其中假对应于未翻转(未示出),而真对应于翻转(示出)。纸牌是混洗纸牌的列表(1到8 + 1到8)。基于打印语句的示例输出是:

0
1
4 4
0 0
[True, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False]

索引0和1处的卡不匹配,因此在exposed列表中应为False值。

hwamh0ep

hwamh0ep1#

好的,通过将card1和card2变量设置为全局变量,我们已经解决了这个问题。

相关问题