GemCodebreaker 0.1.9 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +1 -0
- data/lib/gem_codebreaker/classes/game.rb +11 -5
- data/lib/gem_codebreaker/classes/user.rb +1 -1
- data/lib/gem_codebreaker/errors/{unknow_level_error.rb → inclusion_error.rb} +1 -1
- data/lib/gem_codebreaker/errors/{name_length_error.rb → length_error.rb} +3 -3
- data/lib/gem_codebreaker/gem_codebreaker.rb +2 -3
- data/lib/gem_codebreaker/modules/validator.rb +4 -4
- data/lib/gem_codebreaker/version.rb +1 -1
- metadata +4 -5
- data/lib/gem_codebreaker/errors/incorrect_length_error.rb +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8d128beb164e21cd400d768f1471fa4773bd12d298dc01e35f20aa2821e9f41b
|
4
|
+
data.tar.gz: 390ddb056e6a40e21e0303204a41e51569209a4868e534aa50db930ef72a0f07
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ff237177856acb512ccd3ac35c8ae5faeae3620b92975f9f150f2fc78625de14deda329bf98f816bd92909261992e3d97a6a933ac986ccc47f397092846b4468
|
7
|
+
data.tar.gz: e43687095f316b8a66019666ea56e1c195ef99789bf23ec012378fb3b804e533cdafa07af65c83b967362a39543959ccbbdf3e3ef8b781c90e2886ec0d174b71
|
data/.rspec
CHANGED
@@ -11,10 +11,7 @@ module GemCodebreaker
|
|
11
11
|
def initialize(user, level)
|
12
12
|
@config = GameConfig.new(user, level)
|
13
13
|
@statistic = []
|
14
|
-
|
15
|
-
|
16
|
-
def secrete_code
|
17
|
-
@secrete_code ||= (1..LENGTH_OF_SECRET_CODE).map { rand DIGIT_RANGE }
|
14
|
+
secrete_code
|
18
15
|
end
|
19
16
|
|
20
17
|
def guess_start(input_code)
|
@@ -36,6 +33,10 @@ module GemCodebreaker
|
|
36
33
|
@config.attempts_used? && win_game? == false
|
37
34
|
end
|
38
35
|
|
36
|
+
def show_secrete_code
|
37
|
+
@secrete_code if win_game? || game_over?
|
38
|
+
end
|
39
|
+
|
39
40
|
def hint
|
40
41
|
raise GemCodebreaker::NoHintsError if @config.hints_used?
|
41
42
|
|
@@ -45,6 +46,7 @@ module GemCodebreaker
|
|
45
46
|
|
46
47
|
def restart_game
|
47
48
|
@config.reset_user_attempts_hints
|
49
|
+
@secrete_code = false
|
48
50
|
secrete_code
|
49
51
|
end
|
50
52
|
|
@@ -56,12 +58,16 @@ module GemCodebreaker
|
|
56
58
|
|
57
59
|
def guess_valid?(user_code)
|
58
60
|
validate_class(user_code, String)
|
59
|
-
raise GemCodebreaker::
|
61
|
+
raise GemCodebreaker::LengthError, I18n.t('errors.incorrect_length') if user_code.length != LENGTH_OF_SECRET_CODE
|
60
62
|
unless user_code[/\A[#{DIGIT_RANGE.first}-#{DIGIT_RANGE.last}]{#{LENGTH_OF_SECRET_CODE}}\z/]
|
61
63
|
raise GemCodebreaker::ValueRangeError
|
62
64
|
end
|
63
65
|
|
64
66
|
true
|
65
67
|
end
|
68
|
+
|
69
|
+
def secrete_code
|
70
|
+
@secrete_code ||= (1..LENGTH_OF_SECRET_CODE).map { rand DIGIT_RANGE }
|
71
|
+
end
|
66
72
|
end
|
67
73
|
end
|
@@ -2,11 +2,10 @@
|
|
2
2
|
|
3
3
|
require 'gem_codebreaker/config/i18n_locales'
|
4
4
|
require 'gem_codebreaker/version'
|
5
|
-
require 'gem_codebreaker/errors/
|
6
|
-
require 'gem_codebreaker/errors/name_length_error'
|
5
|
+
require 'gem_codebreaker/errors/length_error'
|
7
6
|
require 'gem_codebreaker/errors/no_attempts_error'
|
8
7
|
require 'gem_codebreaker/errors/no_hints_error'
|
9
|
-
require 'gem_codebreaker/errors/
|
8
|
+
require 'gem_codebreaker/errors/inclusion_error'
|
10
9
|
require 'gem_codebreaker/errors/value_range_error'
|
11
10
|
require 'gem_codebreaker/errors/wrong_class_error'
|
12
11
|
require 'gem_codebreaker/modules/validator'
|
@@ -2,16 +2,16 @@
|
|
2
2
|
|
3
3
|
module GemCodebreaker
|
4
4
|
module Validator
|
5
|
-
def validate_inclusion(
|
6
|
-
raise GemCodebreaker::
|
5
|
+
def validate_inclusion(valid_values, check_value)
|
6
|
+
raise GemCodebreaker::InclusionError unless valid_values.include?(check_value)
|
7
7
|
end
|
8
8
|
|
9
9
|
def validate_class(user_code, klass)
|
10
10
|
raise GemCodebreaker::WrongClassError unless user_code.is_a?(klass)
|
11
11
|
end
|
12
12
|
|
13
|
-
def validate_length(
|
14
|
-
raise GemCodebreaker::
|
13
|
+
def validate_length(check_value, valid_values, errors_message)
|
14
|
+
raise GemCodebreaker::LengthError, errors_message unless valid_values.member?(check_value.length)
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: GemCodebreaker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vasyl
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-08-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fasterer
|
@@ -148,11 +148,10 @@ files:
|
|
148
148
|
- lib/gem_codebreaker/classes/serializer_deserializer.rb
|
149
149
|
- lib/gem_codebreaker/classes/user.rb
|
150
150
|
- lib/gem_codebreaker/config/i18n_locales.rb
|
151
|
-
- lib/gem_codebreaker/errors/
|
152
|
-
- lib/gem_codebreaker/errors/
|
151
|
+
- lib/gem_codebreaker/errors/inclusion_error.rb
|
152
|
+
- lib/gem_codebreaker/errors/length_error.rb
|
153
153
|
- lib/gem_codebreaker/errors/no_attempts_error.rb
|
154
154
|
- lib/gem_codebreaker/errors/no_hints_error.rb
|
155
|
-
- lib/gem_codebreaker/errors/unknow_level_error.rb
|
156
155
|
- lib/gem_codebreaker/errors/value_range_error.rb
|
157
156
|
- lib/gem_codebreaker/errors/wrong_class_error.rb
|
158
157
|
- lib/gem_codebreaker/gem_codebreaker.rb
|