codebreaker_bo 0.1.6 → 0.1.7

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: 41c74c3d34c0613fd1561253030059a6ab61222e8aad34dc7d99e0b31f767456
4
- data.tar.gz: 1d2d4570474a1e19262905b22a126e61e43dc9c9f97446b2984984f8a5b6b4c9
3
+ metadata.gz: 4bb25b1b330862296d60fc3cd1951db75a602b1d1825225ee953e5705d00206b
4
+ data.tar.gz: 81349b8524f6e3e43e79c1b857dccb7497997ccdd4564c60dc8d044d3903eb60
5
5
  SHA512:
6
- metadata.gz: c6665492feee77e52af8e1838178520bb331d95c0964510ebf53f0f7624aa79baa157ada381223c480471efc40be6f2c7c9b8f9367bccbcb60a18419c6685370
7
- data.tar.gz: c5ad83a10e7fd5948d97ec0ddcbe123bd84a88efb2780e2bd1d98584fb47abedfd80a1098ea246f8a3a0b0f1189b285cc28b10a7972cd2a00c6d15685b74edb7
6
+ metadata.gz: 57c2eeb143123b112fb6a834e7a5886674610144e3e581d9136ee6fcc53a752b07d84ef3d5c842ba2ae36614f81058a21fcefe1ff603863b747ead192310e0b6
7
+ data.tar.gz: cf100f7e81e06e78c859d4f1a773dd0c0c84ef67240eff7ec93823b6fedba88de5abf8f1df97861165ed885992c8b5fa4b5aa8ee5e12ce6ca1904cee008d8df2
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- codebreaker_bo (0.1.6)
4
+ codebreaker_bo (0.1.7)
5
5
  json (~> 2.6.1)
6
6
 
7
7
  GEM
data/data/statistic.yml CHANGED
@@ -1,13 +1,13 @@
1
- ---
2
- - :user_name: WEWEE
3
- :difficulty: easy
4
- :attempts_total: 15
5
- :attempts_used: 15
6
- :hints_total: 2
7
- :hints_used: 2
8
- - :user_name: TWTWTWT
9
- :difficulty: medium
10
- :attempts_total: 10
11
- :attempts_used: 10
12
- :hints_total: 1
13
- :hints_used: 1
1
+ #---
2
+ #- :user_name: WEWEE
3
+ # :difficulty: easy
4
+ # :attempts_total: 15
5
+ # :attempts_used: 15
6
+ # :hints_total: 2
7
+ # :hints_used: 2
8
+ #- :user_name: TWTWTWT
9
+ # :difficulty: medium
10
+ # :attempts_total: 10
11
+ # :attempts_used: 10
12
+ # :hints_total: 1
13
+ # :hints_used: 1
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+ # # frozen_string_literal: true
3
+ #
4
+ # require_relative 'const'
5
+ # require 'yaml'
6
+ # require_relative 'rules'
7
+ # require 'terminal-table'
8
+ # require_relative 'console'
@@ -0,0 +1,125 @@
1
+ # frozen_string_literal: true
2
+ # # frozen_string_literal: true
3
+ #
4
+ # require 'codebreaker'
5
+ # require_relative 'config'
6
+ # class Console
7
+ # # include Rules
8
+ #
9
+ # attr_accessor :game
10
+ #
11
+ # def initialize
12
+ # @game = Codebreaker::Game.new
13
+ # end
14
+ #
15
+ # def start_game
16
+ # puts 'Welcome to game'
17
+ # choose_action
18
+ # end
19
+ #
20
+ # def game_process(number)
21
+ # puts game.check_guess(number)
22
+ # if game.check_guess(number) == game.win
23
+ # save_game
24
+ # choose_action
25
+ # elsif game.used_attempts.zero?
26
+ # lose
27
+ # new_process
28
+ # else
29
+ # game_actions
30
+ # end
31
+ # end
32
+ #
33
+ # private
34
+ #
35
+ # def game_actions
36
+ # puts 'use [hint, guess, exit]'
37
+ #
38
+ # case input
39
+ # when Constants::GAME_ACTIONS[:hint] then show_hints
40
+ # when Constants::GAME_ACTIONS[:guess] then enter_number
41
+ # else p 'Wrong action'
42
+ # game_actions
43
+ # end
44
+ # end
45
+ #
46
+ # def make_registration
47
+ # puts 'Enter your name'
48
+ # name = input.to_s
49
+ # game.difficulties
50
+ # # puts "What difficulty? #{game.difficulties}"
51
+ # level = input.to_s
52
+ # game.create_settings(name, level)
53
+ # end
54
+ #
55
+ # def choose_action
56
+ # menu
57
+ # case input
58
+ # when Constants::USER_ACTIONS[:start] then process
59
+ # when Constants::USER_ACTIONS[:rules] then rules
60
+ # when Constants::USER_ACTIONS[:stats] then take_stats
61
+ # else
62
+ # p 'Wrong text'
63
+ # choose_action
64
+ # end
65
+ # end
66
+ #
67
+ # def rules
68
+ # show_rules
69
+ # choose_action
70
+ # end
71
+ #
72
+ # def new_process
73
+ # choose_action
74
+ # end
75
+ #
76
+ # def process
77
+ # registration = make_registration
78
+ # registration.is_a?(Array) && !registration.empty? ? registration : game_actions
79
+ # p registration
80
+ # choose_action
81
+ # end
82
+ #
83
+ # def enter_number
84
+ # puts 'Enter number'
85
+ # number = gets.chomp.to_i
86
+ # game_process(number)
87
+ # end
88
+ #
89
+ # def input
90
+ # input = gets.chomp
91
+ # input == Constants::USER_ACTIONS[:exit] ? exit : input
92
+ # end
93
+ #
94
+ # def menu
95
+ # puts 'make a choice'
96
+ # new_menu = Constants::USER_ACTIONS
97
+ # p new_menu.values
98
+ # end
99
+ #
100
+ # def save_game
101
+ # puts 'If save game enter: yes'
102
+ # input == Constants::ACTIONS_FOR_DATABASE[:save_player] ? game.save_stats : new_process
103
+ # end
104
+ #
105
+ # def show_hints
106
+ # p game.use_hint
107
+ # game_actions
108
+ # end
109
+ #
110
+ # def lose
111
+ # puts "You lose,secret code -> #{game.secret_code} enter start to start a new game."
112
+ # end
113
+ #
114
+ # def exit
115
+ # puts 'goodbye'
116
+ # abort
117
+ # end
118
+ #
119
+ # def take_stats
120
+ # headings = Constants::HEADINGS
121
+ # rows = @game.load_stats.map { |key| key }
122
+ # puts Terminal::Table.new(headings: headings, rows: rows)
123
+ # choose_action
124
+ # end
125
+ # end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+ # # frozen_string_literal: true
3
+ #
4
+ # module Constants
5
+ # USER_ACTIONS = {
6
+ # start: 'start',
7
+ # rules: 'rules',
8
+ # stats: 'stats',
9
+ # exit: 'exit'
10
+ # }.freeze
11
+ # GAME_ACTIONS = {
12
+ # hint: 'hint',
13
+ # guess: 'guess'
14
+ # }.freeze
15
+ # ACTIONS_FOR_DATABASE = {
16
+ # save_player: 'yes'
17
+ # }.freeze
18
+ # HITS = {
19
+ # user_hits: 'hits'
20
+ # }.freeze
21
+ #
22
+ # HEADINGS = ['Rating', 'Name', 'Difficulty', 'Attempts Total', 'Attempts Used', 'Hints Total', 'Hints Used'].freeze
23
+ # DIFFICULTY = '[easy] [medium] [hell]'
24
+ # end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Codebreaker
4
4
  class Game < BaseClass
5
- attr_reader :secret_code, :total_attempts, :used_attempts, :total_hints, :used_hints, :stats, :level
5
+ attr_reader :secret_code, :total_attempts, :used_attempts, :total_hints, :used_hints, :stats, :level, :player_name
6
6
 
7
7
  def initialize
8
8
  super()
@@ -33,13 +33,13 @@ module Codebreaker
33
33
  end
34
34
 
35
35
  def create_settings(name, level)
36
- player_name(name)
36
+ user_name(name)
37
37
  create_level(level)
38
38
 
39
39
  show_errors unless valid?
40
40
  end
41
41
 
42
- def player_name(name)
42
+ def user_name(name)
43
43
  user = User.new(name)
44
44
  return @player_name = user.name if user.valid?
45
45
 
@@ -47,6 +47,7 @@ module Codebreaker
47
47
  end
48
48
 
49
49
  def accept_level(level)
50
+ @level = level
50
51
  current_level = Constants::LEVELS[level.to_sym]
51
52
  handle_errors('entered level is not present') unless current_level
52
53
  current_level
@@ -64,7 +65,6 @@ module Codebreaker
64
65
  end
65
66
 
66
67
  def add_level(choice_level)
67
- @level = level
68
68
  @used_hints = choice_level[:hints]
69
69
  @total_hints = choice_level[:hints]
70
70
  @total_attempts = choice_level[:attempts]
@@ -3,23 +3,27 @@
3
3
  module Codebreaker
4
4
  class Statistic
5
5
  def collect_statistic(hash)
6
+ game_date = Time.new.strftime '%Y/%m/%d'
6
7
  @stat = [{
7
8
  user_name: hash[:user_name],
8
9
  difficulty: hash[:difficulty],
9
10
  attempts_total: hash[:attempts_total],
10
11
  attempts_used: hash[:attempts_used],
11
12
  hints_total: hash[:hints_total],
12
- hints_used: hash[:hints_used]
13
+ hints_used: hash[:hints_used],
14
+ date: game_date
13
15
  }]
14
16
  save_statistic
15
17
  end
16
18
 
17
19
  def show_statistic
18
20
  @items = YAML.load_file(Constants::PATH)
19
- @items.sort_by! { |game| [game[:difficulty], game[:attempts_used], game[:hints_used]] }
21
+ return if @items.nil?
22
+
23
+ @items.sort_by! { |game| [game[:difficulty].reverse, game[:attempts_used], game[:hints_used]] }
20
24
  @items.each_with_index.map do |stat, index|
21
25
  [index.next, stat[:user_name], stat[:difficulty], stat[:attempts_total],
22
- stat[:attempts_used], stat[:hints_total], stat[:hints_used]]
26
+ stat[:attempts_used], stat[:hints_total], stat[:hints_used], stat[:date]]
23
27
  end
24
28
  end
25
29
 
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ # require 'codebreaker'
4
+ # require_relative 'console'
5
+ # require 'pry'
6
+ #
7
+ # c = Console.new
8
+ # c.start_game
9
+
10
+ # p c.registration
11
+ # p c
12
+ # p c.game_process
13
+
14
+ # frozen_string_literal: true
15
+
16
+ # require 'yaml'
17
+ #
18
+ # require 'codebreaker'
19
+ # require_relative 'console'
20
+ # require 'pry'
21
+ #
22
+ # c = Console.new
23
+ # c.choose_action
24
+ # c.take_stats
25
+
26
+ # p c.registration
27
+ # p c
28
+ # p c.game_process
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Codebreaker
4
- VERSION = '0.1.6'
4
+ VERSION = '0.1.7'
5
5
  end
data/lib/codebreaker.rb CHANGED
@@ -8,4 +8,5 @@ module Codebreaker
8
8
  require 'codebreaker/user'
9
9
  require 'codebreaker/validation'
10
10
  require 'codebreaker/statistic'
11
+ require 'date'
11
12
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: codebreaker_bo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oladko Bohdan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-04-08 00:00:00.000000000 Z
11
+ date: 2022-04-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json