Skip to content

Instantly share code, notes, and snippets.

@bgreg
Created August 4, 2013 19:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bgreg/3e9f1c04d33b0f572817 to your computer and use it in GitHub Desktop.
Save bgreg/3e9f1c04d33b0f572817 to your computer and use it in GitHub Desktop.
Intro to Rails, week one. Build a Flash card app Assignment .
module Flashcards
class Application
def initialize
@decks =[]
end
def << deck
@decks << deck
end
def display_decks
@decks.each { |deck| puts deck.name }
end
def get_deck
name = gets.chomp
@decks.detect { |deck| deck.name = name }
end
def play
display_decks
print "Pick a deck:"
deck = get_deck
deck.play
end
end
class Card
attr_accessor :front, :back
def initialize front, back
@front = front
@back = back
end
def correct? guess
guess == @back
end
def play
puts "Card play called"
print "#{front} >"
guess = gets.chomp
if correct? guess
puts "Correct"
else
puts "Incorrect, the answer was #{back}"
end
end
end
class Deck
attr_accessor :name, :cards
def initialize name
@name = name
@cards = []
end
def << card
@cards << card
end
def shuffle
@cards.shuffle!
end
def play
shuffle
@cards.each(&:play)
end
end
class MultipleAnswerCard < Card
def correct? guess
answers = @back.split(',')
answers.any? { |answer| answer == guess }
end
end
end
card = Flashcards::MultipleAnswerCard.new("Violin", "baoirin,viiorin")
# card1 = Flashcards::Card.new("cat","neko")
# card2 = Flashcards::Card.new("dog","inu")
# card3 = Flashcards::Card.new("snake","le snake")
japaneseDeck = Flashcards::Deck.new("j")
japaneseDeck << card
#japaneseDeck << card1
#japaneseDeck << card2
#japaneseDeck << card3
russianDeck = Flashcards::Deck.new("r")
app = Flashcards::Application.new
app << russianDeck
app << japaneseDeck
app.play
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment