68 lines
1.2 KiB
Ruby
68 lines
1.2 KiB
Ruby
# Défi : joueur et score
|
|
#
|
|
# Complète la classe `Player`.
|
|
#
|
|
# Règles :
|
|
# - un joueur possède un nom et un score ;
|
|
# - le score commence à 0 ;
|
|
# - `add_points(points)` ajoute des points ;
|
|
# - seuls les entiers strictement positifs sont acceptés ;
|
|
# - une valeur invalide ne doit pas modifier le score ;
|
|
# - `winner?` retourne true si le score est supérieur ou égal à 5 ;
|
|
# - `reset_score` remet le score à 0.
|
|
#
|
|
# Le nom doit être accessible en lecture mais pas modifiable directement.
|
|
# Le score doit être accessible en lecture mais pas modifiable directement.
|
|
|
|
class Player
|
|
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
|
|
|
|
player = Player.new("Alice")
|
|
|
|
# Résultats attendus :
|
|
#
|
|
puts player.name
|
|
# => "Alice"
|
|
#
|
|
puts player.score
|
|
# => 0
|
|
#
|
|
player.add_points(2)
|
|
puts player.score
|
|
# => 2
|
|
#
|
|
player.add_points(-1)
|
|
puts player.score
|
|
# => 2
|
|
#
|
|
puts player.winner?
|
|
# => false
|
|
#
|
|
player.add_points(3)
|
|
puts player.winner?
|
|
# => true
|
|
#
|
|
player.reset_score
|
|
puts player.score
|
|
# => 0
|