Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # implementation of card game - Memory
- #after a pair, got an card flipped --check error
- import simplegui
- import random
- list1=[]
- list2=[]
- exposed=[]
- turned_card1=-1
- turned_card2=-1
- counter=0
- def exposed_generator():
- exposed=[]
- for i in range(0,16):
- exposed.append(False)
- return exposed
- def list_generator():
- for i in range(0,8):
- list1.append(random.randint(0, 8))
- list2.append(random.randint(0, 8))
- return list1+list2
- # helper function to initialize globals
- def new_game():
- global full_list,state,exposed,counter, turned_card1,turned_card2
- full_list=list_generator()
- exposed=exposed_generator()
- state=0
- turned_card1=-1
- turned_card2=-1
- counter=0
- label.set_text('Turns: 0')
- # define event handlers
- def mouseclick(pos):
- # add game state logic here
- global state, exposed,click_pos,turned_card1,turned_card2,counter
- click_pos=pos[0]//50
- if state==0:
- if exposed[click_pos]==False:
- state=1
- exposed[click_pos]=True
- turned_card1=click_pos
- counter+=1
- elif state==1:
- if exposed[click_pos]==False:
- state=2
- exposed[click_pos]=True
- turned_card2=click_pos
- counter+=1
- else:
- if exposed[click_pos]==False:
- if full_list[turned_card1]==full_list[turned_card2]:
- #if two cards match, display numbers
- exposed[click_pos]=True
- turned_card1=click_pos
- turned_card2=-1
- else:
- exposed[turned_card1]=False
- exposed[turned_card2]=False
- exposed[click_pos]=True
- turned_card1=click_pos
- counter+=1
- state=1
- label.set_text('Turns: '+str(counter))
- # cards are logically 50x100 pixels in size
- def draw(canvas):
- global full_list,pos1,exposed
- horizontal_position=25
- for i in range(16):
- if exposed[i]:
- canvas.draw_text(str(full_list[i]), [horizontal_position+i*50,50], 16, 'Red')
- else:
- canvas.draw_polygon([[i*50, 0], [(i+1)*50, 0], [(i+1)*50, 100],[i*50, 100]], 1, "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)
- # get things rolling
- new_game()
- frame.start()
- # Always remember to review the grading rubric
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement