# Remember shoes - a memory clone # by jonelf at gmail.com # 2008-11-18 # License: http://en.wikipedia.org/w/index.php?title=MIT_License&oldid=250217282 Shoes.app(:title => "Remember Shoes", :width => 1280, :height =>960, :resizable => false) { background white filenames = %w(1001.jpg 2001.jpg 3001.jpg 4001.jpg 5001.jpg 6001.jpg 7001.jpg 8001.jpg) @back_image = "img/back.jpg" stack (:height=>0) { @nomatch = video "sounds/sad.wav" @paired = video "sounds/paired.mp3" @gamedone = video "sounds/hallonsaft.mp3" } @number_of_images = filenames.length @found_pairs = 0 @clicks = 0 @viewed_card = nil @in_click_event = false @in_no_match = false @memories = (filenames*2).collect {|filename| Memorycard.new(filename)} @memories.each do |m| m2 = @memories[(rand(srand)%@memories.length)] mf = m.filename m.filename = m2.filename m2.filename = mf m.image = image @back_image, :click => proc { card_click(m) }, :width=>320, :height=>240 end def card_click(memcard) if !(memcard.paired? || memcard.flipped?) @clicks+=1 memcard.image.path = "img/#{memcard.filename}" if !@viewed_card.nil? if (@viewed_card.filename==memcard.filename) memcard.paired = true @viewed_card.paired = true @viewed_card = nil @found_pairs+=1 if @found_pairs==@number_of_images @gamedone.play sleep 5 if confirm("You finished in " + @clicks.to_s + " clicks.\n\nPlay again?") @clicks=0 @memories.each do |m| m.paired = false m.flipped = false m.image.path = @back_image m2 = @memories[(rand(srand)%@memories.length)] mf = m.filename m.filename = m2.filename m2.filename = mf end @found_pairs = 0 @gamedone.stop else exit() end end @paired.play else @in_no_match = true @nomatch.play timer (1) { memcard.image.path = @back_image memcard.flipped = false @viewed_card.image.path = @back_image @viewed_card.flipped = false @viewed_card = nil @in_no_match = false @in_click_event = false } end else @viewed_card = memcard memcard.flipped = true end end end } class Memorycard attr_accessor :filename, :paired, :flipped, :image def initialize(filename) @filename = filename @paired = false @flipped = false end def paired? @paired end def flipped? @flipped end end