我有一个记忆游戏,我已经实现了使用状态,使用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值。
1条答案
按热度按时间hwamh0ep1#
好的,通过将card1和card2变量设置为全局变量,我们已经解决了这个问题。