matthew-number-guess 0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b2fde13e21120230c99909a16ccf10c1f6fe8d16
4
+ data.tar.gz: 4da436e969d42c61c730b368e2f2a4a97829b09b
5
+ SHA512:
6
+ metadata.gz: fb044d7eb3f79becfb77c4270783e7185da69deb39ac75d5037af54502ba5ac8d6a814826b102e77361895d95a02b30643a8bfafb0f59298dbdb6b677fd9e7d3
7
+ data.tar.gz: f48bad96541c1349bfdfbbaabe5a0a37bbb0ee506afbc84d07da35172a81753bf833efa9833db8cd0aef96f74890340605343f25c5c3016d78fd299d93b8ec7d
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative "../lib/guess_the_number_game.rb"
4
+ require_relative "../lib/guess_checker.rb"
5
+ require_relative "../lib/output_handler.rb"
6
+
7
+ guess_checker = GuessChecker.new
8
+ output_handler = OutputHandler.new
9
+
10
+ game = GuessTheNumberGame.new(guess_checker, output_handler)
11
+ game.play
12
+
@@ -0,0 +1,18 @@
1
+ require_relative "./message_manager.rb"
2
+
3
+ class GuessChecker
4
+ attr_reader :message_manager
5
+
6
+ def initialize
7
+ @message_manager = MessageManager.new
8
+ end
9
+
10
+ def clue_for(number, user_guess)
11
+ if user_guess > number
12
+ message_manager.smaller_clue
13
+ elsif user_guess < number
14
+ message_manager.bigger_clue
15
+ end
16
+ end
17
+
18
+ end
@@ -0,0 +1,33 @@
1
+ require_relative "./message_manager.rb"
2
+
3
+ class GuessTheNumberGame
4
+
5
+ attr_reader :message_manager, :guess_checker
6
+
7
+ MAX_NUMBER = 10
8
+
9
+ def initialize(guess_checker, output_handler)
10
+ @random_number = 1 + rand(MAX_NUMBER)
11
+ @message_manager = MessageManager.new
12
+ @guess_checker = guess_checker
13
+ @output_handler = output_handler
14
+ end
15
+
16
+ def play
17
+ loop do
18
+ user_guess = request_and_get_guess
19
+ clue = guess_checker.clue_for(@random_number, user_guess)
20
+ clue ? @output_handler.show(clue) : break
21
+ end
22
+
23
+ @output_handler.show(message_manager.correct)
24
+ end
25
+
26
+ private
27
+
28
+ def request_and_get_guess
29
+ @output_handler.show(message_manager.instructions)
30
+ gets.to_i
31
+ end
32
+
33
+ end
@@ -0,0 +1,15 @@
1
+ require "yaml"
2
+
3
+ class MessageManager
4
+
5
+ attr_reader :messages
6
+
7
+ def initialize
8
+ @messages = YAML.load_file("lib/strings.yml")["messages"]
9
+ end
10
+
11
+ def method_missing(m)
12
+ messages[m] ? messages[m] : super
13
+ end
14
+
15
+ end
@@ -0,0 +1,7 @@
1
+ class OutputHandler
2
+
3
+ def show(message)
4
+ puts message
5
+ end
6
+
7
+ end
data/lib/strings.yml ADDED
@@ -0,0 +1,5 @@
1
+ messages:
2
+ :instructions: Adivine el numero (1-10)
3
+ :bigger_clue: El numero es mayor
4
+ :smaller_clue: El numero es menor
5
+ :correct: Felicidades, has adivinado el numero
metadata ADDED
@@ -0,0 +1,49 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: matthew-number-guess
3
+ version: !ruby/object:Gem::Version
4
+ version: '0'
5
+ platform: ruby
6
+ authors:
7
+ - matthew
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-09-12 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Simple number guessing game
14
+ email:
15
+ executables:
16
+ - matthew-number-guess
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - bin/matthew-number-guess
21
+ - lib/guess_checker.rb
22
+ - lib/guess_the_number_game.rb
23
+ - lib/message_manager.rb
24
+ - lib/output_handler.rb
25
+ - lib/strings.yml
26
+ homepage:
27
+ licenses: []
28
+ metadata: {}
29
+ post_install_message:
30
+ rdoc_options: []
31
+ require_paths:
32
+ - lib
33
+ required_ruby_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ required_rubygems_version: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - '>='
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ requirements: []
44
+ rubyforge_project:
45
+ rubygems_version: 2.2.2
46
+ signing_key:
47
+ specification_version: 4
48
+ summary: Number guessing game
49
+ test_files: []