codeguessing 0.4.4 → 0.4.5
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 +4 -4
- data/lib/codeguessing/console.rb +20 -19
- data/lib/codeguessing/game.rb +39 -46
- data/lib/codeguessing/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 61b21ffaab19a1a63dcb02b74ae830577b491f19
|
4
|
+
data.tar.gz: 06fbebd32d6c8d8cc650fe6a5a10b6aa97f2ce77
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 96063313e8e199857583e99e07bdfc69849648a156c44e12281364b642e19cee3b6dff54d6f8d7f8cc497994e765451da7d62ed058c330755ba6e73fd7691ec2
|
7
|
+
data.tar.gz: a87df9cec2e9f84de0535190c2ca1cb37046b5b055990c64ca97f3d836971d85e8faab851c4f66539187c5483af29f7a53bdb16da5ee8d73cb5f4714d757649b
|
data/lib/codeguessing/console.rb
CHANGED
@@ -2,36 +2,37 @@ module Codeguessing
|
|
2
2
|
class Console
|
3
3
|
attr_reader :game, :scores, :path
|
4
4
|
|
5
|
+
RULES = [
|
6
|
+
'-----------------Rules!----------------------',
|
7
|
+
"You need guess secret code. This four-digit number with symbols from 1 to 6",
|
8
|
+
"You have #{Game::MAX_ATTEMPTS} attempt(s) and #{Game::MAX_HINT} hint(s)",
|
9
|
+
"If you want get hint write 'hint'",
|
10
|
+
'---------------------------------------------'
|
11
|
+
]
|
12
|
+
|
5
13
|
def initialize(opt = {})
|
6
14
|
@path = File.join(File.dirname(__FILE__), 'scores.yml')
|
7
15
|
@scores = load(@path)
|
8
16
|
@game = Game.new(opt)
|
9
17
|
end
|
10
18
|
|
11
|
-
def go(
|
12
|
-
rules
|
19
|
+
def go(knowed = false)
|
20
|
+
rules unless knowed
|
13
21
|
puts "Attempt(s): #{@game.attempts} | Hint(s): #{@game.hint_count}"
|
14
|
-
case @game.
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
22
|
+
case @game.win?
|
23
|
+
when true
|
24
|
+
win
|
25
|
+
when false
|
26
|
+
loose
|
27
|
+
else
|
28
|
+
gaming
|
21
29
|
end
|
22
30
|
end
|
23
31
|
|
24
32
|
def rules
|
25
33
|
puts "Do you know rules? (Y/N)"
|
26
|
-
rules = [
|
27
|
-
'-----------------Rules!----------------------',
|
28
|
-
"You need guess secret code. This four-digit number with symbols from 1 to 6",
|
29
|
-
"You have #{@game.attempts} attempt(s) and #{@game.hint_count} hint(s)",
|
30
|
-
"If you want get hint write 'hint'",
|
31
|
-
'---------------------------------------------'
|
32
|
-
]
|
33
34
|
unless confirm?
|
34
|
-
puts
|
35
|
+
puts RULES.join("\n")
|
35
36
|
end
|
36
37
|
end
|
37
38
|
|
@@ -59,7 +60,7 @@ module Codeguessing
|
|
59
60
|
end
|
60
61
|
|
61
62
|
def save!(name = 'Anonim')
|
62
|
-
|
63
|
+
unless @game.win?
|
63
64
|
return puts 'You cant save game'
|
64
65
|
end
|
65
66
|
name.chomp!
|
@@ -96,7 +97,7 @@ module Codeguessing
|
|
96
97
|
puts 'Do you want start again? (Y/N)'
|
97
98
|
if confirm?
|
98
99
|
@game = Game.new
|
99
|
-
return go(
|
100
|
+
return go(true)
|
100
101
|
else
|
101
102
|
puts '-----------Scores----------'
|
102
103
|
p @scores
|
data/lib/codeguessing/game.rb
CHANGED
@@ -14,59 +14,42 @@ module Codeguessing
|
|
14
14
|
@answer = opt[:answer] || ''
|
15
15
|
end
|
16
16
|
|
17
|
-
def guess(code)
|
18
|
-
loose unless check?(use_attempt)
|
17
|
+
def guess(code)
|
18
|
+
@state = 'loose' unless check?(use_attempt)
|
19
|
+
@state = 'win' if code == secret_code
|
20
|
+
@answer = get_mark(code)
|
21
|
+
end
|
22
|
+
|
23
|
+
def get_mark(code)
|
19
24
|
return false unless valid?(code)
|
20
25
|
hash = {}
|
21
|
-
res = ''
|
22
|
-
remaine_chars = code
|
23
|
-
right_chars = []
|
26
|
+
res = ''
|
24
27
|
secret_code.each_char.with_index do |char, i|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
hash
|
31
|
-
when remaine_chars.include?(char)
|
32
|
-
hash[char] = '-'
|
28
|
+
if code[i] == char
|
29
|
+
res += '+'
|
30
|
+
code[i] = '_'
|
31
|
+
hash.delete(char)
|
32
|
+
elsif code.include?(char)
|
33
|
+
hash[char] = '-'
|
33
34
|
end
|
34
35
|
end
|
35
36
|
res += hash.values.join('')
|
36
|
-
win if res == '+' * MAX_SIZE
|
37
|
-
@answer = res
|
38
37
|
end
|
39
38
|
|
40
39
|
def hint
|
41
|
-
res = ''
|
42
|
-
need_index = rand(0...MAX_SIZE)
|
43
|
-
secret_code.each_char.with_index do |char, index|
|
44
|
-
if index == need_index
|
45
|
-
res += char
|
46
|
-
else
|
47
|
-
res += '*'
|
48
|
-
end
|
49
|
-
end
|
50
40
|
return '' unless check?(hint_count)
|
51
41
|
use_hint
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
self.instance_variables.each do |k, v|
|
58
|
-
new_k = k.to_s.gsub('@','').to_sym
|
59
|
-
hash[new_k] = self.instance_variable_get(k)
|
60
|
-
end
|
61
|
-
hash
|
42
|
+
hint = '*' * MAX_SIZE
|
43
|
+
index = rand(0...MAX_SIZE)
|
44
|
+
code_char = secret_code[index]
|
45
|
+
hint[index] = code_char
|
46
|
+
hint
|
62
47
|
end
|
63
48
|
|
64
49
|
def cur_score(name = 'Anonim')
|
65
50
|
hash = cur_game
|
66
51
|
hash[:name] = name
|
67
52
|
hash[:date] = Time.now.to_i
|
68
|
-
hash.delete(:answer)
|
69
|
-
hash.delete(:state)
|
70
53
|
hash
|
71
54
|
end
|
72
55
|
|
@@ -75,11 +58,6 @@ module Codeguessing
|
|
75
58
|
false
|
76
59
|
end
|
77
60
|
|
78
|
-
def check?(varible)
|
79
|
-
return false if varible == 0
|
80
|
-
true
|
81
|
-
end
|
82
|
-
|
83
61
|
def use_attempt
|
84
62
|
@attempts -= 1
|
85
63
|
end
|
@@ -88,13 +66,19 @@ module Codeguessing
|
|
88
66
|
@hint_count -= 1
|
89
67
|
end
|
90
68
|
|
91
|
-
def win
|
92
|
-
@state
|
69
|
+
def win?
|
70
|
+
case @state
|
71
|
+
when 'win' then true
|
72
|
+
when 'loose' then false
|
73
|
+
end
|
93
74
|
end
|
94
75
|
|
95
|
-
|
96
|
-
|
97
|
-
|
76
|
+
private
|
77
|
+
|
78
|
+
def check?(varible)
|
79
|
+
return false if varible == 0
|
80
|
+
true
|
81
|
+
end
|
98
82
|
|
99
83
|
def random
|
100
84
|
code = ''
|
@@ -102,5 +86,14 @@ module Codeguessing
|
|
102
86
|
code
|
103
87
|
end
|
104
88
|
|
89
|
+
def cur_game
|
90
|
+
hash = {}
|
91
|
+
self.instance_variables.each do |k, v|
|
92
|
+
new_k = k.to_s.gsub('@','').to_sym
|
93
|
+
hash[new_k] = self.instance_variable_get(k)
|
94
|
+
end
|
95
|
+
hash
|
96
|
+
end
|
97
|
+
|
105
98
|
end
|
106
99
|
end
|
data/lib/codeguessing/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: codeguessing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- bezrukavyi
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-11-
|
11
|
+
date: 2016-11-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|