=======================第一版=============================
# implementation of card game - Memory
import simplegui
import random
num = []
state=0
fst_index=0
sec_index=0
turn=0
mark = 0
# helper function to initialize globals
def new_game():
global num, exposed, turn, mark
num = range(0,8)
num.extend(range(0,8))
random.shuffle(num)
exposed = [False] *16
turn = 0
mark = 0
# define event handlers
def mouseclick(pos):
global exposed, state, fst_index, sec_index, turn, mark
index = pos[0]/50
if not exposed[index]:
exposed[index] = True
turn += 1
if turn%2 != 0:
mark += 1
if state == 0:
state = 1
fst_index = index
elif state == 1:
sec_index = index
state = 2
elif state == 2:
if num[fst_index] != num[sec_index]:
exposed[fst_index] = False
exposed[sec_index] = False
fst_index = index
state = 1
# cards are logically 50x100 pixels in size
def draw(canvas):
global num
position = 0
index = 0
label.set_text("Turns = " + str(mark))
for n in num:
if exposed[index] == True:
canvas.draw_text(str(n), (position, 90), 100, "White")
else:
canvas.draw_polygon([(position, 0), (position, 100),
(position+50, 100),(position+50, 0)],
1, "Gray", "Silver")
position += 50
index += 1
# create frame and add a button and labels
frame = simplegui.create_frame("Memory", 800, 100)
frame.add_button("Reset", new_game, 100)
label = frame.add_label("Turns = 0")
# register event handlers
frame.set_mouseclick_handler(mouseclick)
frame.set_draw_handler(draw)
# get things rolling
new_game()
frame.start()
# Always remember to review the grading rubric