这是一个来自 The Rice的课程 An Introduction to Interactive Programming in Python (Part 2)的记忆力翻纸牌游戏,废话不多说,直接上代码。
源代码
# implementation of card game - Memory
import simplegui
import random
# helper function to initialize globals
def new_game():
global new_lis, state, exposed, turn
turn = 0
exposed = [False] * 16
state = 0
new_lis = range(0, 8) + range(0, 8)
random.shuffle(new_lis)
# define event handlers
def mouseclick(pos):
# add game state logic here
global exposed, state, pos1, pos2, turn, tex
if exposed[pos[0]//50] == False:
if state == 0:
state = 1
turn = 1
pos1 = pos[0]//50
exposed[pos1] = True
elif state == 1:
state = 2
pos2 = pos[0]//50
exposed[pos2] = True
else:
state = 1
turn += 1
if new_lis[pos1] != new_lis[pos2]:
exposed[pos1] = False
exposed[pos2] = False
pos1 = pos[0]//50
exposed[pos1] = True
label.set_text('Turns = ' + str(turn))
# cards are logically 50x100 pixels in size
def draw(canvas):
for i in range(len(new_lis)):
canvas.draw_text(str(new_lis[i]), (15+50*i, 65), 40, 'Black')
for j in range(len(new_lis)):
canvas.draw_polygon([[50*j, 0], [50*j, 100], [50*j+50, 100],[50*j+50, 0]], 2, 'Black')
if not exposed[j]:
canvas.draw_polygon([[50*j, 0], [50*j, 100], [50*j+50, 100],[50*j+50, 0]], 2, 'Black', 'Green')
# create frame and add a button and labels
frame = simplegui.create_frame("Memory", 800, 100)
frame.add_button("Reset", new_game)
label = frame.add_label('Turns = 0')
# register event handlers
frame.set_mouseclick_handler(mouseclick)
frame.set_draw_handler(draw)
frame.set_canvas_background('White')
# get things rolling
new_game()
frame.start()
# Always remember to review the grading rubric
运行结果示例