Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # implementation of card game - Memory
- import simplegui
- import random
- # helper function to initialize globals
- def new_game():
- global card_index1, card_index2, resulting_list, state, turns, exposed
- label.set_text('Turns = 0')
- exposed = [False for i in range(16)]
- nums1, nums2 = range(8), range(8)
- resulting_list = nums1 + nums2
- random.shuffle(resulting_list)
- card_index1 = 0
- card_index2 = 0
- state = 0
- turns = 0
- # Uncomment the following line for debugging purposes
- # print "New list:", resulting_list
- # define event handlers
- def mouseclick(pos):
- # add game state logic here
- global state, card_index1, card_index2, turns
- location = list(pos)
- card_index = pos[0] // 50
- if not exposed[card_index]:
- if state == 0:
- exposed[card_index] = True
- card_index1 = card_index
- state = 1
- elif state == 1:
- card_index2 = card_index
- exposed[card_index2] = True
- state = 2
- elif state == 2:
- if resulting_list[card_index1] != resulting_list[card_index2]:
- exposed[card_index1] = False
- exposed[card_index2] = False
- exposed[card_index] = True
- card_index1 = card_index
- turns += 1
- label.set_text('Turns = ' + str(turns))
- state = 1
- else:
- state = 1
- # cards are logically 50x100 pixels in size
- def draw(canvas):
- text_pos_list = []
- num_pos = [10, 75]
- index = 0
- for pos in range(len(resulting_list)):
- canvas.draw_text(str(resulting_list[index]), num_pos, 80, "White")
- num_pos[0] += 50
- index += 1
- exp_index = 0
- rect_pos = [[0, 0], [50, 0], [50, 100], [0, 100]]
- for i in range(len(exposed)):
- if exposed[exp_index] == False:
- canvas.draw_polygon(rect_pos, 2, "Black", "Green")
- rect_pos[0][0] += 50
- rect_pos[1][0] += 50
- rect_pos[2][0] += 50
- rect_pos[3][0] += 50
- exp_index += 1
- # 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)
- # get things rolling
- new_game()
- frame.start()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement