Advertisement
ansakoy

Memory

Oct 19th, 2014
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.44 KB | None | 0 0
  1. # implementation of card game - Memory
  2.  
  3. import simplegui
  4. import random
  5.  
  6. # helper function to initialize globals
  7. def new_game():
  8.     global card_index1, card_index2, resulting_list, state, turns, exposed
  9.     label.set_text('Turns = 0')
  10.     exposed = [False for i in range(16)]
  11.     nums1, nums2 = range(8), range(8)
  12.     resulting_list = nums1 + nums2
  13.     random.shuffle(resulting_list)
  14.     card_index1 = 0
  15.     card_index2 = 0
  16.     state = 0
  17.     turns = 0
  18.     # Uncomment the following line for debugging purposes
  19.     # print "New list:", resulting_list
  20.      
  21. # define event handlers
  22. def mouseclick(pos):
  23.     # add game state logic here
  24.     global state, card_index1, card_index2, turns
  25.     location = list(pos)
  26.     card_index = pos[0] // 50
  27.     if not exposed[card_index]:
  28.         if state == 0:
  29.             exposed[card_index] = True
  30.             card_index1 = card_index
  31.             state = 1
  32.         elif state == 1:
  33.             card_index2 = card_index
  34.             exposed[card_index2] = True
  35.             state = 2
  36.         elif state == 2:
  37.             if resulting_list[card_index1] != resulting_list[card_index2]:
  38.                 exposed[card_index1] = False
  39.                 exposed[card_index2] = False
  40.             exposed[card_index] = True
  41.             card_index1 = card_index
  42.             turns += 1
  43.             label.set_text('Turns = ' + str(turns))
  44.             state = 1
  45.         else:
  46.             state = 1
  47.                                  
  48. # cards are logically 50x100 pixels in size    
  49. def draw(canvas):
  50.     text_pos_list = []
  51.     num_pos = [10, 75]
  52.     index = 0
  53.     for pos in range(len(resulting_list)):
  54.         canvas.draw_text(str(resulting_list[index]), num_pos, 80, "White")
  55.         num_pos[0] += 50
  56.         index += 1
  57.    
  58.     exp_index = 0
  59.     rect_pos = [[0, 0], [50, 0], [50, 100], [0, 100]]
  60.     for i in range(len(exposed)):
  61.         if exposed[exp_index] == False:
  62.             canvas.draw_polygon(rect_pos, 2, "Black", "Green")
  63.         rect_pos[0][0] += 50
  64.         rect_pos[1][0] += 50
  65.         rect_pos[2][0] += 50
  66.         rect_pos[3][0] += 50
  67.         exp_index += 1
  68.                
  69. # create frame and add a button and labels
  70. frame = simplegui.create_frame("Memory", 800, 100)
  71. frame.add_button("Reset", new_game)
  72. label = frame.add_label("Turns = 0")
  73.  
  74. # register event handlers
  75. frame.set_mouseclick_handler(mouseclick)
  76. frame.set_draw_handler(draw)
  77.  
  78. # get things rolling
  79. new_game()
  80. frame.start()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement