Compare commits
5
Commits
b2cef2f27c
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3f7a3a5f98 | ||
|
|
1736f62660 | ||
|
|
7049ba14b4 | ||
|
|
55030af64d | ||
|
|
629429e1f2 |
No files matched your search
@@ -48,5 +48,36 @@
|
|||||||
# => { action: :invalid }
|
# => { action: :invalid }
|
||||||
|
|
||||||
def parse_command(input)
|
def parse_command(input)
|
||||||
# À compléter.
|
response = {}
|
||||||
|
parts = input.strip.split
|
||||||
|
|
||||||
|
case parts[0]
|
||||||
|
when "help"
|
||||||
|
if parts.size == 1
|
||||||
|
response[:action] = :help
|
||||||
|
else
|
||||||
|
response[:action] = :invalid
|
||||||
|
end
|
||||||
|
when "quit"
|
||||||
|
if parts.size == 1
|
||||||
|
response[:action] = :quit
|
||||||
|
else
|
||||||
|
response[:action] = :invalid
|
||||||
|
end
|
||||||
|
when "play"
|
||||||
|
if parts.size == 2 && parts[1].match?(/\A\d+\z/) && parts[1].to_i > 0
|
||||||
|
response[:action] = :play
|
||||||
|
response[:card] = parts[1].to_i
|
||||||
|
else
|
||||||
|
response[:action] = :invalid
|
||||||
|
end
|
||||||
|
else
|
||||||
|
response[:action] = :invalid
|
||||||
|
end
|
||||||
|
|
||||||
|
response
|
||||||
end
|
end
|
||||||
|
|
||||||
|
print "Entrez une action : "
|
||||||
|
input = gets.chomp
|
||||||
|
puts parse_command(input)
|
||||||
@@ -36,5 +36,14 @@ meals = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
def meal_totals(meals)
|
def meal_totals(meals)
|
||||||
# À compléter.
|
total = {}
|
||||||
|
meals.each do |meal|
|
||||||
|
unless total.key?(meal[:food])
|
||||||
|
total[meal[:food]] = 0
|
||||||
|
end
|
||||||
|
total[meal[:food]] += meal[:quantity]
|
||||||
|
end
|
||||||
|
total
|
||||||
end
|
end
|
||||||
|
|
||||||
|
puts meal_totals(meals)
|
||||||
+31
-12
@@ -15,34 +15,53 @@
|
|||||||
# Le score doit être accessible en lecture mais pas modifiable directement.
|
# Le score doit être accessible en lecture mais pas modifiable directement.
|
||||||
|
|
||||||
class Player
|
class Player
|
||||||
# À compléter.
|
attr_reader :name, :score
|
||||||
|
|
||||||
|
def initialize(name)
|
||||||
|
@name = name
|
||||||
|
@score = 0
|
||||||
|
end
|
||||||
|
|
||||||
|
def add_points(points)
|
||||||
|
if points.is_a?(Integer) && points.positive?
|
||||||
|
@score += points
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def winner?
|
||||||
|
@score >= 5
|
||||||
|
end
|
||||||
|
|
||||||
|
def reset_score
|
||||||
|
@score = 0
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
player = Player.new("Alice")
|
player = Player.new("Alice")
|
||||||
|
|
||||||
# Résultats attendus :
|
# Résultats attendus :
|
||||||
#
|
#
|
||||||
# player.name
|
puts player.name
|
||||||
# => "Alice"
|
# => "Alice"
|
||||||
#
|
#
|
||||||
# player.score
|
puts player.score
|
||||||
# => 0
|
# => 0
|
||||||
#
|
#
|
||||||
# player.add_points(2)
|
player.add_points(2)
|
||||||
# player.score
|
puts player.score
|
||||||
# => 2
|
# => 2
|
||||||
#
|
#
|
||||||
# player.add_points(-1)
|
player.add_points(-1)
|
||||||
# player.score
|
puts player.score
|
||||||
# => 2
|
# => 2
|
||||||
#
|
#
|
||||||
# player.winner?
|
puts player.winner?
|
||||||
# => false
|
# => false
|
||||||
#
|
#
|
||||||
# player.add_points(3)
|
player.add_points(3)
|
||||||
# player.winner?
|
puts player.winner?
|
||||||
# => true
|
# => true
|
||||||
#
|
#
|
||||||
# player.reset_score
|
player.reset_score
|
||||||
# player.score
|
puts player.score
|
||||||
# => 0
|
# => 0
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
class PeopleDirectory
|
||||||
|
def initialize(people)
|
||||||
|
@people = people
|
||||||
|
end
|
||||||
|
|
||||||
|
def find_people(name)
|
||||||
|
@people.select { |person| person[:name] == name }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class UserInput
|
||||||
|
def ask_name
|
||||||
|
print "De quelle personne souhaites-tu connaître l'âge ? "
|
||||||
|
gets.chomp
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class PeopleView
|
||||||
|
def hello_everybody(people)
|
||||||
|
people.each do |person|
|
||||||
|
puts "Hello #{person[:name]}!"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def show_people(people)
|
||||||
|
if people.empty?
|
||||||
|
puts "Aucune personne trouvée."
|
||||||
|
else
|
||||||
|
people.each do |person|
|
||||||
|
puts "#{person[:name]} qui a #{person[:age]} ans"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Données
|
||||||
|
people = [
|
||||||
|
{ name: "Alice", age: 30},
|
||||||
|
{ name: "Bob", age: 27},
|
||||||
|
{ name: "Alice", age: 22}
|
||||||
|
]
|
||||||
|
|
||||||
|
# Instancier les classes
|
||||||
|
directory = PeopleDirectory.new(people)
|
||||||
|
input = UserInput.new
|
||||||
|
view = PeopleView.new
|
||||||
|
|
||||||
|
# Saluer tout le monde
|
||||||
|
view.hello_everybody(people)
|
||||||
|
|
||||||
|
# Demander un nom
|
||||||
|
name = input.ask_name
|
||||||
|
|
||||||
|
# Rechercher
|
||||||
|
matches = directory.find_people(name)
|
||||||
|
|
||||||
|
# Afficher
|
||||||
|
view.show_people(matches)
|
||||||
|
|
||||||
Reference in new issue
Block a user