codebreaker_kub 0.1.2 → 0.1.7

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: '00487c62abc4952a11b6642171dbf979e0c2fb332caadc94cc4ac33a8fe44d3e'
4
- data.tar.gz: 3e2317e7d2a990423f1b29fb913b5e9bf1dc389c452af61d83c34ba986133f7e
3
+ metadata.gz: 368897134f5e57306064d5dcc9b5ad197a11e77070d3b1923b8c9250160af688
4
+ data.tar.gz: 918822ffa12cd59fa3744487b0b22415d98fc09c2e38d6f4e6fb7dbfd9d9daa7
5
5
  SHA512:
6
- metadata.gz: 7f35577693fd2bf9737ddb14339c5ea4bd77b7ab711c1dae80b4cac497f8743c6cf715e8d77f800a0933d9dab91048d188fa7aca7cdf8b68339b652576392e1d
7
- data.tar.gz: 39b6c0b237fa522fac0cfdf5f17fe3cd9a6810b755365238b70131e53be19ef6963f9711586ff464275e2f1d107f1e45d9ccb842ad69d6bbab05e3343f3dc562
6
+ metadata.gz: 2caf1d95e69d331e6de3d39f65007d5d3402388f550475cda78a53b8504a1d65f65ed3e63d72380a199163a4d731d4906c46c57de31443bb2cc0b6cb83d2dba6
7
+ data.tar.gz: 58b74baba40482c14d058334ba18cc57b490c468c97e68f7c39dacc0ef52b22dda652637dc37724a291a697970e02e485bd3e966893fbd5fff70c26adc17b030
@@ -0,0 +1,57 @@
1
+ version: 2.1
2
+
3
+ executors:
4
+ default:
5
+ working_directory: ~/repo
6
+ description: The official CircleCI Ruby Docker image
7
+ docker:
8
+ - image: circleci/ruby:2.7.0
9
+ caches:
10
+ - &bundle_cache v1-repo-{{ checksum "Gemfile.lock" }}
11
+ commands:
12
+ run_linters:
13
+ description: command to start linters
14
+ steps:
15
+ - run:
16
+ name: rubocop
17
+ command: bundle exec rubocop
18
+ run_specs:
19
+ steps:
20
+ - run:
21
+ name: run specs
22
+ command: |
23
+ mkdir /tmp/test-results
24
+ TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)"
25
+ bundle exec rspec --format progress \
26
+ --out /tmp/test-results/rspec.xml \
27
+ $TEST_FILES
28
+ setup_environment:
29
+ steps:
30
+ - checkout
31
+ - restore_cache:
32
+ key: *bundle_cache
33
+ - run: bundle install --path vendor/bundle
34
+ - save_cache:
35
+ key: *bundle_cache
36
+ paths:
37
+ - vendor/bundle
38
+ jobs:
39
+ lintering:
40
+ executor: default
41
+ steps:
42
+ - setup_environment
43
+ - run_linters
44
+ run_specs:
45
+ executor: default
46
+ steps:
47
+ - setup_environment
48
+ - run_specs
49
+
50
+ workflows:
51
+ version: 2
52
+ build:
53
+ jobs:
54
+ - lintering
55
+ - run_specs:
56
+ requires:
57
+ - lintering
data/.gitignore CHANGED
@@ -1,2 +1,3 @@
1
1
  .rvmrc
2
2
  /coverage/
3
+ .rspec_status
@@ -5,7 +5,7 @@ Style/Documentation:
5
5
  Enabled: false
6
6
 
7
7
  Layout/LineLength:
8
- Max: 100
8
+ Max: 110
9
9
 
10
10
  Style/FrozenStringLiteralComment:
11
11
  Enabled: false
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- codebreaker_kub (0.0.1)
4
+ codebreaker_kub (0.1.6)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -5,10 +5,10 @@
5
5
  - Load game statistics - puts 'stats'\n
6
6
  - Exit from game - puts 'exit'\n"
7
7
  goodbye: "Bye bye!\n"
8
+ available_commands: "Enter 'start', 'rules', 'stats' or 'exit'"
8
9
  rules: "GAME RULES:\n
9
10
  # Codebreaker is a logic game in which a code-breaker tries to break a secret code created by a code-maker. The\n codemaker, which will be played by the application we’re going to write, creates a secret code.\n
10
11
  # The codebreaker gets some number of chances to break the code (depends on chosen difficulty). In each turn, the\n codebreaker makes a guess. The codemaker then marks the guess with special symbols.\n
11
- Number of minuses - 2 (second and fourth position)\n
12
12
  # If codebreaker inputs the exact number as a secret number - codebreaker wins the game. If all attempts are spent - codebreaker loses.\n
13
13
  # Codebreaker also has some number of hints(depends on chosen difficulty). If a user takes a hint - he receives back a\n
14
14
  separate digit of the secret code.\n
@@ -76,8 +76,8 @@ module Codebreaker
76
76
  attempts: difficulty_option[:attempts],
77
77
  hints: difficulty_option[:hints],
78
78
  code: @code,
79
- attempts_left: @attempts_left,
80
- hints_left: @hints_left,
79
+ used_attempts: difficulty_option[:attempts] - @attempts_left,
80
+ used_hints: difficulty_option[:hints] - @hints_left,
81
81
  win: win?
82
82
  }
83
83
  end
@@ -1,15 +1,12 @@
1
1
  module Codebreaker
2
2
  module Loader
3
- PATH = 'lib/codebreaker/data/'.freeze
3
+ PATH = File.join(File.dirname(__FILE__), 'data/').freeze
4
4
  EXTENCTION = '.yml'.freeze
5
5
  def self.load(file_name)
6
6
  file_name = PATH + file_name + EXTENCTION.to_s
7
- if File.exist?(file_name)
8
- YAML.load_file(file_name)
9
- else
10
- File.new(file_name, 'w')
11
- []
12
- end
7
+ raise LoadError, 'No such file to load' unless File.exist?(file_name)
8
+
9
+ YAML.load_file(file_name)
13
10
  end
14
11
 
15
12
  def self.save(obj, file_name)
@@ -1,13 +1,20 @@
1
1
  module Codebreaker
2
2
  class Output
3
+ attr_reader :stats
3
4
  def initialize
4
- I18n.load_path << Dir[File.expand_path('./lib/codebreaker/data/locales') + '/*.yml']
5
+ I18n.load_path << Dir[File.expand_path(File.join(File.dirname(__FILE__), 'data/locales/')) + '/*.yml']
6
+ I18n.config.available_locales = :en
7
+ @stats = Codebreaker::Loader.load('stat')
5
8
  end
6
9
 
7
10
  def greeting
8
11
  puts I18n.t(:hey)
9
12
  end
10
13
 
14
+ def available_commands
15
+ puts I18n.t(:available_commands)
16
+ end
17
+
11
18
  def choose_name
12
19
  puts I18n.t(:choose_name)
13
20
  end
@@ -20,12 +27,23 @@ module Codebreaker
20
27
  puts I18n.t(:rules)
21
28
  end
22
29
 
30
+ def sort_stats
31
+ @stats = @stats.sort_by do |game|
32
+ [game[:attempts], game[:used_attempts],
33
+ game[:used_hints]]
34
+ end
35
+ end
36
+
23
37
  def show_stats
24
- stats.each do |game|
38
+ sort_stats
39
+ @stats.each_with_index do |game, index|
25
40
  puts "Hey, #{game[:name]}
26
- Chosen difficulty: #{game[:difficulty]}
41
+ Rating: #{index + 1}
27
42
  Attempts: #{game[:attempts]}
28
- Hints: #{game[:hints]}"
43
+ Hints: #{game[:hints]}
44
+ Chosen difficulty: #{game[:difficulty]}
45
+ Used attempts: #{game[:used_attempts]}
46
+ Used hints: #{game[:used_hints]}"
29
47
  end
30
48
  end
31
49
 
@@ -67,7 +85,7 @@ module Codebreaker
67
85
  end
68
86
 
69
87
  def goodbye
70
- I18n(:goodbye)
88
+ puts I18n.t(:goodbye)
71
89
  end
72
90
 
73
91
  def game_over
@@ -1,3 +1,3 @@
1
1
  module Codebreaker
2
- VERSION = '0.1.2'.freeze
2
+ VERSION = '0.1.7'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: codebreaker_kub
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - katia kub
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-07-09 00:00:00.000000000 Z
11
+ date: 2020-07-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fasterer
@@ -87,10 +87,10 @@ executables: []
87
87
  extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
+ - ".circleci/config.yml"
90
91
  - ".fasterer.yml"
91
92
  - ".gitignore"
92
93
  - ".overcommit.yml"
93
- - ".rspec_status"
94
94
  - ".rubocop.yml"
95
95
  - ".ruby-version"
96
96
  - CODE_OF_CONDUCT.md
@@ -1,30 +0,0 @@
1
- example_id | status | run_time |
2
- ------------------------------------------ | ------ | --------------- |
3
- ./spec/codebreaker/game_spec.rb[1:1] | passed | 0.00066 seconds |
4
- ./spec/codebreaker/game_spec.rb[1:2] | passed | 0.00069 seconds |
5
- ./spec/codebreaker/game_spec.rb[1:3] | passed | 0.00095 seconds |
6
- ./spec/codebreaker/game_spec.rb[1:4] | passed | 0.00124 seconds |
7
- ./spec/codebreaker/game_spec.rb[1:5] | passed | 0.00033 seconds |
8
- ./spec/codebreaker/game_spec.rb[1:6] | passed | 0.0052 seconds |
9
- ./spec/codebreaker/game_spec.rb[1:7] | passed | 0.00059 seconds |
10
- ./spec/codebreaker/game_spec.rb[1:8] | passed | 0.00034 seconds |
11
- ./spec/codebreaker/game_spec.rb[1:9] | passed | 0.00029 seconds |
12
- ./spec/codebreaker/game_spec.rb[1:10:1] | passed | 0.00059 seconds |
13
- ./spec/codebreaker/game_spec.rb[1:10:2] | passed | 0.00028 seconds |
14
- ./spec/codebreaker/game_spec.rb[1:10:3] | passed | 0.00026 seconds |
15
- ./spec/codebreaker/game_spec.rb[1:10:4] | passed | 0.00025 seconds |
16
- ./spec/codebreaker/game_spec.rb[1:10:5] | passed | 0.00027 seconds |
17
- ./spec/codebreaker/game_spec.rb[1:10:6] | passed | 0.00026 seconds |
18
- ./spec/codebreaker/game_spec.rb[1:10:7] | passed | 0.00026 seconds |
19
- ./spec/codebreaker/game_spec.rb[1:10:8] | passed | 0.00027 seconds |
20
- ./spec/codebreaker/game_spec.rb[1:10:9] | passed | 0.00038 seconds |
21
- ./spec/codebreaker/game_spec.rb[1:10:10] | passed | 0.00036 seconds |
22
- ./spec/codebreaker/game_spec.rb[1:10:11] | passed | 0.00034 seconds |
23
- ./spec/codebreaker/loader_spec.rb[1:1] | passed | 0.00079 seconds |
24
- ./spec/codebreaker/validation_spec.rb[1:1] | passed | 0.00023 seconds |
25
- ./spec/codebreaker/validation_spec.rb[1:2] | passed | 0.00014 seconds |
26
- ./spec/codebreaker/validation_spec.rb[1:3] | passed | 0.00013 seconds |
27
- ./spec/codebreaker/validation_spec.rb[1:4] | passed | 0.00008 seconds |
28
- ./spec/codebreaker/validation_spec.rb[1:5] | passed | 0.00009 seconds |
29
- ./spec/codebreaker/validation_spec.rb[1:6] | passed | 0.00013 seconds |
30
- ./spec/codebreaker_spec.rb[1:1] | passed | 0.00009 seconds |