ep-codebreaker 0.3.0 → 0.3.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
  SHA1:
3
- metadata.gz: df569d53a25a9bba58af838e126fee3a25a1e40b
4
- data.tar.gz: 9d7a811469c15ad6f16cae37b157d2c2db6a6509
3
+ metadata.gz: 9d8b421d3c5caf1b37d80b9d168a7ebc32820b58
4
+ data.tar.gz: 26c7ee1e48c44513879769ebce8984bc6b9d5e7f
5
5
  SHA512:
6
- metadata.gz: 9ee584683852d4ae74869e58c0b26a26004b2f7e06739166e45441016ea55ee57618e44a8613db8a851d4a3e790c4339121007318ff19f247f90016d57cc5a60
7
- data.tar.gz: be34d258ca8cd75712cd5419da51ef4dfd6bea0564a9fb94741d75958706fa8f834e1cb94ea99834826486825826fc00553940dfdc9a676af820741664709195
6
+ metadata.gz: f7e0278325eabc82ccfa08f38035df512801f64ef8270521b3ade44ad4a1bf3fe869bdec67adba03c481be69b2e5a8713491419181dfea4d67edd063acf1ec6c
7
+ data.tar.gz: a84d3cf7b3136cec8df57365cc71ef2262b1d43a60ec6496b62a9edce86c947a7b985c22b4a443975dc64325e41f79aa85c9e891be510c3cbaa050a8bf51b663
data/README.md CHANGED
@@ -19,7 +19,6 @@ Or install it yourself as:
19
19
  ## Usage
20
20
 
21
21
  ```ruby
22
- require 'bundler/setup' # if you use bundler
23
22
  require 'ep-codebreaker'
24
23
  require 'ep-codebreaker/console_app'
25
24
 
@@ -1,7 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative 'player'
4
+ require_relative 'game_writer'
5
+
3
6
  module Codebreaker
4
7
  class Game
8
+ include GameWriter
9
+
5
10
  MIN = 1
6
11
  MAX = 6
7
12
  LENGTH = 4
@@ -42,10 +47,7 @@ module Codebreaker
42
47
  @hints_left -= 1
43
48
  define_stage
44
49
 
45
- index = @indexes_for_hint.delete(@indexes_for_hint.sample)
46
- hint = '_' * LENGTH
47
- hint[index] = @code[index]
48
- hint
50
+ generate_hint
49
51
  end
50
52
 
51
53
  def finished?
@@ -60,18 +62,12 @@ module Codebreaker
60
62
  @code if finished?
61
63
  end
62
64
 
63
- def save_score(name, file_name = 'scores.yml')
64
- player = Player.new(name, @tries_left, @hints_left)
65
-
66
- scores = process_file(file_name)
67
- scores << player
68
- scores = scores.max_by(10, &:points)
69
-
70
- File.open(file_name, 'w') { |f| f.write scores.to_yaml }
65
+ def save_score(name)
66
+ write Player.new(name, @tries_left, @hints_left)
71
67
  end
72
68
 
73
- def high_scores(file_name = 'scores.yml')
74
- process_file file_name
69
+ def high_scores
70
+ process_file
75
71
  end
76
72
 
77
73
  def as_json
@@ -105,6 +101,13 @@ module Codebreaker
105
101
  ('+' * num_of_pluses) + ('-' * num_of_minuses)
106
102
  end
107
103
 
104
+ def generate_hint
105
+ hint = '_' * LENGTH
106
+ index = @indexes_for_hint.delete(@indexes_for_hint.sample)
107
+ hint[index] = @code[index]
108
+ hint
109
+ end
110
+
108
111
  def define_stage(result = '')
109
112
  if result == ('+' * LENGTH)
110
113
  @finished = true
@@ -114,11 +117,6 @@ module Codebreaker
114
117
  end
115
118
  end
116
119
 
117
- def process_file(file_name)
118
- return [] if !File.exist?(file_name) || File.zero?(file_name)
119
- YAML.load_file(file_name)
120
- end
121
-
122
120
  def verify(input)
123
121
  msg = "Guesses must consist of #{LENGTH} digits from #{MIN} to #{MAX}"
124
122
  raise(ArgumentError, msg) if !input.is_a?(String) || !input.match?(REGEXP)
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'yaml'
4
+
5
+ module Codebreaker
6
+ module GameWriter
7
+ private
8
+
9
+ FILE_NAME = 'scores.yml'.freeze
10
+
11
+ def write(player)
12
+ scores = process_file
13
+ scores << player
14
+ scores = scores.max_by(10, &:points)
15
+ File.open(FILE_NAME, 'w') { |f| f.write scores.to_yaml }
16
+ end
17
+
18
+ def process_file
19
+ return [] if !File.exist?(FILE_NAME) || File.zero?(FILE_NAME)
20
+ YAML.load_file(FILE_NAME)
21
+ end
22
+ end
23
+ end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Codebreaker
4
- class Messages
4
+ module Messages
5
5
  class << self
6
6
  def logo
7
7
  puts " ]]]] ]]]] ]]]]] ]]]]] \n" \
@@ -1,3 +1,3 @@
1
1
  module Codebreaker
2
- VERSION = '0.3.0'.freeze
2
+ VERSION = '0.3.1'.freeze
3
3
  end
@@ -1,6 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'yaml'
4
- require 'ep-codebreaker/version'
5
- require 'ep-codebreaker/player'
6
- require 'ep-codebreaker/game'
3
+ require_relative 'ep-codebreaker/version'
4
+ require_relative 'ep-codebreaker/game'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ep-codebreaker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eugene Poberezhny
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-06-19 00:00:00.000000000 Z
11
+ date: 2017-06-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -75,6 +75,7 @@ files:
75
75
  - lib/ep-codebreaker.rb
76
76
  - lib/ep-codebreaker/console_app.rb
77
77
  - lib/ep-codebreaker/game.rb
78
+ - lib/ep-codebreaker/game_writer.rb
78
79
  - lib/ep-codebreaker/messages.rb
79
80
  - lib/ep-codebreaker/player.rb
80
81
  - lib/ep-codebreaker/version.rb