codebracker_simb 0.1.8 → 0.2.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0e68585db1780f68c71384bfcc7daa1520be4a81a6832d102ab05f2c7e249f73
4
- data.tar.gz: a1edd6963b2a4718bb471dec3b114891d5ecec097eb851697bc8baee1fca60f2
3
+ metadata.gz: 41d2ae7582e4269dd938a13388bde20ae9a730d253f1f2840fa1a640a51fbfb1
4
+ data.tar.gz: 2eb8ae53ad3e1c7c96e413f048f3af593d6571fdcc2a75bec5ff465ef7187255
5
5
  SHA512:
6
- metadata.gz: 12d35b75120ab80a1dcf48704b1ef24b4ad0fdfb800bb0736ef21755cf7ec44083c400433701f5b189781d79fd3266a4cce3aa8f1d2560c8202129537c1a0bd1
7
- data.tar.gz: d7699f2722e3aedd6a1b79c1354086e36652e0e0e0f0b21c791f204349ee5ab0b00c3275c18c9bd3406ab499111b2e5a8ae7c8481ab21dd4883b59c980d18037
6
+ metadata.gz: 0a67a32536b83cd6bf595fc3cf3a110d53439f208975777a552e5cea68a1afba782855dd8ca3c5854943747c13ccab1c1d6f2879a609e09d170c979e5a8f8986
7
+ data.tar.gz: dcca1b7a53e9ce24bfc10f05049cd04b91b2ad62f5ae6281d14f76065891d4ba54f722db98a3adf4a63d533dacca44a9e3d11e63010e8cb118c32077153f73ba
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
@@ -21,5 +21,5 @@ Gem::Specification.new do |spec|
21
21
  spec.bindir = "exe"
22
22
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
23
23
  spec.require_paths = ["lib"]
24
-
24
+ spec.add_development_dependency 'rspec'
25
25
  end
@@ -42,6 +42,7 @@ module CodebrackerSimb
42
42
  each_with_index do |line, i|
43
43
  line.each_with_index do |_el, j|
44
44
  if @code[i] == @ans[j] && !line[j] && !@filled_column.include?(j)
45
+ next if line.include? :minus
45
46
  line[j] = :minus
46
47
  @filled_column << j
47
48
  end
@@ -0,0 +1,13 @@
1
+ module CodebrackerSimb
2
+ class CodeValidator
3
+
4
+ def self.included(base)
5
+ base.extend(CodeValidator)
6
+ end
7
+
8
+ def valid_code?(code)
9
+ code =~ /^[1-6]{4}$/
10
+ end
11
+
12
+ end
13
+ end
@@ -2,37 +2,37 @@
2
2
 
3
3
  require_relative './code'
4
4
  require_relative './checker'
5
-
5
+ require 'rspec'
6
6
  module CodebrackerSimb
7
7
  # game cl
8
8
  class Game
9
9
  attr_reader :code
10
10
  attr_reader :attempts
11
+ attr_reader :player
11
12
  attr_accessor :answer
12
13
 
14
+ include Codebracker::CodeValidator
15
+ include Codebracker::NameValidator
16
+
13
17
  ERR_UNEXPECTED_COMPLEXITY = 'complexity could be easy, medium or hard'
14
18
  IS_OVER = 'Game is over, you lose'
15
19
  GREETING = 'Hello! Welcome to CodeBracker Game! Have fun!'
16
20
  CONGRATULATIONS = 'Congratulations! You broked a code, master!'
17
21
 
18
- def initialize(complexity)
19
- @attempts = set_attempts(complexity)
22
+ def initialize(complexity, player)
23
+ @attempts = set_options(complexity)[:attempts]
24
+ @hints = set_options(complexity)[:hints]
25
+ @player = player
20
26
  end
21
27
 
22
- def play
23
- define_code
24
- loop do
25
- input_answer
26
- result = Checker.new(code, answer).compare
27
- refresh_attempts_quantity
28
- break if win? || @attempts == 0
29
- end
30
- end
31
-
32
28
  def input_answer(input)
33
29
  @answer = Code.new(input)
34
30
  end
35
31
 
32
+ def check_answer
33
+ Checker.new(code, answer).compare
34
+ end
35
+
36
36
  def define_code
37
37
  @code = Array.new(4) { rand(1..6) }
38
38
  end
@@ -47,18 +47,21 @@ module CodebrackerSimb
47
47
  message = "#{@attempts} left"
48
48
  end
49
49
  end
50
+
51
+ private
50
52
 
51
- def set_attempts(complexity)
53
+ def set_options(complexity)
52
54
  case complexity
53
55
  when 'easy'
54
- 14
56
+ {attempts: 14, hints: 2}
55
57
  when 'medium'
56
- 10
58
+ {attempts: 10, hints: 1}
57
59
  when 'hard'
58
- 5
60
+ {attempts: 5, hints: 1}
59
61
  else
60
62
  raise ERR_UNEXPECTED_COMPLEXITY
61
63
  end
62
64
  end
63
65
  end
64
66
  end
67
+
@@ -0,0 +1,13 @@
1
+ module CodebrackerSimb
2
+ class NameValidator
3
+
4
+ def self.included(base)
5
+ base.extend(NameValidator)
6
+ end
7
+
8
+ def valid_name?(name)
9
+ name.is_a?(String) && name.length > 3 && name.length < 20
10
+ end
11
+
12
+ end
13
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CodebrackerSimb
4
- VERSION = "0.1.8"
4
+ VERSION = "0.2.1"
5
5
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: codebracker_simb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - max
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-08-28 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2022-08-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  description: Write a longer description or delete this line.
14
28
  email:
15
29
  - laterty@gmail.com
@@ -17,11 +31,14 @@ executables: []
17
31
  extensions: []
18
32
  extra_rdoc_files: []
19
33
  files:
34
+ - Gemfile
20
35
  - codebracker_simb.gemspec
21
36
  - lib/codebracker_simb.rb
22
37
  - lib/codebracker_simb/checker.rb
23
38
  - lib/codebracker_simb/code.rb
39
+ - lib/codebracker_simb/code_validator.rb
24
40
  - lib/codebracker_simb/game.rb
41
+ - lib/codebracker_simb/name_validator.rb
25
42
  - lib/codebracker_simb/version.rb
26
43
  homepage:
27
44
  licenses: