# 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