alex_codebreaker 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1ed766ccc180a19700ccdb2fec162515ae5b51e9f2d7c88424af8ceae4bafa1a
4
- data.tar.gz: aaa26c5b86142266d6627d53f291de59a5241b989cdeb82f2c773275bb0a3e0b
3
+ metadata.gz: 27cd5b4709e1ed372047a4ddb854b71afffea2ca579a37fae4b4047b5b9fd47b
4
+ data.tar.gz: 2d87c18c9885633d9a96210dcf41b9dd391ed632495803d18ec067f1f108a254
5
5
  SHA512:
6
- metadata.gz: 785681dd0102056240fe6b62b976c1488e3c43d5a998b51079eae948515862af639f214a495522a5e9ba90d010e1f569ca0851e6383bd9c2a2a817e6da24967f
7
- data.tar.gz: c4a34a499ddc1a6b577c78aa523621d4ee3458b9ae0532f863adeb35a023a7f728041cf3950c248580f6d3f4ad402dae5850ad758afcacdc8535442cc72dab22
6
+ metadata.gz: eaf51702ae8b5704f84b16d6986d8cc8c7e47339f45f15053c2bd32a563db555a7004b64076d94959439badae83f474e278b51e4bf8041393d685a5fa45c1d6a
7
+ data.tar.gz: d6dac500500615a3c9655bd1ff85c1571300968397b147e489eaef7557c780b7f3b1c0e70529bd6191c020be0e60c33a1c6d7e938884f19e891b1df58b58779e
@@ -7,8 +7,8 @@ require_relative 'alex_codebreaker/modules/difficulty_levels'
7
7
  require_relative 'alex_codebreaker/modules/validators'
8
8
  require_relative 'alex_codebreaker/modules/arguments_validation'
9
9
  require_relative 'alex_codebreaker/secret_code_generator'
10
- require_relative 'alex_codebreaker/id_generator'
11
10
  require_relative 'alex_codebreaker/comparison'
12
11
  require_relative 'alex_codebreaker/players_rating'
13
12
  require_relative 'alex_codebreaker/session'
13
+ require_relative 'alex_codebreaker/game_manager'
14
14
  require_relative 'alex_codebreaker/game'
@@ -1,34 +1,23 @@
1
1
  module AlexCodebreaker
2
2
  class Game
3
3
  include AlexCodebreaker::Modules::ArgumentsValidation
4
- FILENAME_EXTENSION = '.yml'.freeze
4
+
5
5
  STATUS = { in_game: :in_game, win: :win, lose: :lose }.freeze
6
6
 
7
7
  attr_reader :secret_code, :session, :game_id, :status, :used_hints, :current_comparison
8
8
 
9
- def initialize(outer_id: nil)
10
- @game_id = outer_id if outer_id
9
+ def initialize
11
10
  @secret_code = AlexCodebreaker::SecretCodeGenerator.new.secret_code
12
11
  @secret_code_for_hint = @secret_code.clone.uniq
13
12
  @session = Session.new
14
13
  @used_hints = []
15
14
  @status = STATUS[:in_game]
16
- save_game
17
- end
18
-
19
- def add_name(name)
20
- save_game if @session.add_name(name)
21
- end
22
-
23
- def add_difficulty(difficulty)
24
- save_game if @session.add_difficulty(difficulty)
25
15
  end
26
16
 
27
17
  def hint
28
18
  return unless @session.check_hints
29
19
 
30
20
  process_hint
31
- save_game
32
21
  end
33
22
 
34
23
  def guess(user_input)
@@ -36,7 +25,6 @@ module AlexCodebreaker
36
25
 
37
26
  compare_codes(user_input)
38
27
  check_win_lose
39
- save_game
40
28
  end
41
29
 
42
30
  private
@@ -66,17 +54,5 @@ module AlexCodebreaker
66
54
 
67
55
  @status = STATUS[:lose] unless checking_result
68
56
  end
69
-
70
- def save_game
71
- @game_id ||= AlexCodebreaker::IDGenerator.new.unique_id
72
- unless File.directory?(AlexCodebreaker.configuration.games_folder_path)
73
- FileUtils.mkdir_p(AlexCodebreaker.configuration.games_folder_path)
74
- end
75
- File.open(save_game_path, 'w') { |file| file.write(to_yaml) }
76
- end
77
-
78
- def save_game_path
79
- "#{AlexCodebreaker.configuration.games_folder_path}#{@game_id}#{FILENAME_EXTENSION}"
80
- end
81
57
  end
82
58
  end
@@ -0,0 +1,28 @@
1
+ module AlexCodebreaker
2
+ class GameManager
3
+ FILENAME_EXTENSION = '.yml'.freeze
4
+
5
+ def initialize(game_id)
6
+ @game_id = game_id
7
+ end
8
+
9
+ def save(game)
10
+ unless File.directory?(AlexCodebreaker.configuration.games_folder_path)
11
+ FileUtils.mkdir_p(AlexCodebreaker.configuration.games_folder_path)
12
+ end
13
+ File.open(game_file_path, 'w') { |file| file.write(game.to_yaml) }
14
+ end
15
+
16
+ def load
17
+ return unless File.exist?(game_file_path)
18
+
19
+ YAML.load_file(game_file_path)
20
+ end
21
+
22
+ private
23
+
24
+ def game_file_path
25
+ "#{AlexCodebreaker.configuration.games_folder_path}#{@game_id}#{FILENAME_EXTENSION}"
26
+ end
27
+ end
28
+ end
@@ -1,5 +1,5 @@
1
1
  module AlexCodebreaker
2
2
  module Version
3
- VERSION = '0.2.0'.freeze
3
+ VERSION = '0.2.1'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alex_codebreaker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oleksandr Loza
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-04-06 00:00:00.000000000 Z
11
+ date: 2020-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -163,7 +163,7 @@ files:
163
163
  - lib/alex_codebreaker/comparison.rb
164
164
  - lib/alex_codebreaker/configuration.rb
165
165
  - lib/alex_codebreaker/game.rb
166
- - lib/alex_codebreaker/id_generator.rb
166
+ - lib/alex_codebreaker/game_manager.rb
167
167
  - lib/alex_codebreaker/modules/arguments_validation.rb
168
168
  - lib/alex_codebreaker/modules/difficulty_levels.rb
169
169
  - lib/alex_codebreaker/modules/settings.rb
@@ -1,18 +0,0 @@
1
- module AlexCodebreaker
2
- class IDGenerator
3
- MIN_NUMBER = 1
4
- MAX_NUMBER = 9_999_999_999
5
-
6
- attr_reader :unique_id
7
-
8
- def initialize
9
- @unique_id = generate_id
10
- end
11
-
12
- private
13
-
14
- def generate_id
15
- rand(MIN_NUMBER..MAX_NUMBER)
16
- end
17
- end
18
- end