# implementation of card game - Memory
import simplegui
import random
card_list = []
frame_width = 800
card_number = 16
card_width = frame_width / card_number
turn = 0
current = []
# helper function to initialize globals
def new_game():
global card_list, turn, current, label
turn = 0
current = []
label.set_text("Turns = " + str(turn))
lst = range(card_number)
random.shuffle(lst)
lst1 = [x if x < 8 else x-8 for x in lst]
card_list = [[(x+0.5)* card_width, lst1[x], False] for x in range(card_number)]
# define event handlers
def mouseclick(pos):
# add game state logic here
global card_list, current, turn, label
idx = pos[0] / card_width
if not card_list[idx][2]:
card_list[idx][2] = True
if turn % 2 == 0:
if len(current) > 0 and card_list[current[0]][1] != card_list[current[1]][1]:
card_list[current[0]][2] = False
card_list[current[1]][2] = False
label.set_text("Turns = " + str(turn / 2 + 1))
current = [idx]
else:
current.append(idx)
turn += 1
# cards are logically 50x100 pixels in size
def draw(canvas):
for card in card_list:
canvas.draw_polygon([[card[0] - card_width / 2, 0], [card[0] + card_width / 2, 0],
[card[0] + card_width / 2, 100], [card[0] - card_width / 2, 100]],
1, 'Red',
'White' if card[2] else 'Green')
if card[2]:
canvas.draw_text(str(card[1]), [card[0] - 10, 70], 50, 'Black')
# create frame and add a button and labels
frame = simplegui.create_frame("Memory", frame_width, 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)
# get things rolling
new_game()
frame.start()
import simplegui
import random
card_list = []
frame_width = 800
card_number = 16
card_width = frame_width / card_number
turn = 0
current = []
# helper function to initialize globals
def new_game():
global card_list, turn, current, label
turn = 0
current = []
label.set_text("Turns = " + str(turn))
lst = range(card_number)
random.shuffle(lst)
lst1 = [x if x < 8 else x-8 for x in lst]
card_list = [[(x+0.5)* card_width, lst1[x], False] for x in range(card_number)]
# define event handlers
def mouseclick(pos):
# add game state logic here
global card_list, current, turn, label
idx = pos[0] / card_width
if not card_list[idx][2]:
card_list[idx][2] = True
if turn % 2 == 0:
if len(current) > 0 and card_list[current[0]][1] != card_list[current[1]][1]:
card_list[current[0]][2] = False
card_list[current[1]][2] = False
label.set_text("Turns = " + str(turn / 2 + 1))
current = [idx]
else:
current.append(idx)
turn += 1
# cards are logically 50x100 pixels in size
def draw(canvas):
for card in card_list:
canvas.draw_polygon([[card[0] - card_width / 2, 0], [card[0] + card_width / 2, 0],
[card[0] + card_width / 2, 100], [card[0] - card_width / 2, 100]],
1, 'Red',
'White' if card[2] else 'Green')
if card[2]:
canvas.draw_text(str(card[1]), [card[0] - 10, 70], 50, 'Black')
# create frame and add a button and labels
frame = simplegui.create_frame("Memory", frame_width, 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)
# get things rolling
new_game()
frame.start()