codeguessing 0.3.3 → 0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +0 -0
- data/.rspec +0 -0
- data/.travis.yml +0 -0
- data/CODE_OF_CONDUCT.md +0 -0
- data/Gemfile +0 -0
- data/LICENSE.txt +0 -0
- data/README.md +0 -0
- data/Rakefile +0 -0
- data/bin/console +0 -0
- data/bin/setup +0 -0
- data/codeguessing.gemspec +0 -0
- data/lib/codeguessing/console.rb +85 -72
- data/lib/codeguessing/game.rb +9 -7
- data/lib/codeguessing/scores.yml +18 -19
- data/lib/codeguessing/version.rb +1 -1
- data/lib/codeguessing.rb +0 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e2be5270a620c86f26d398e9c6af49b43aa5c8f4
|
4
|
+
data.tar.gz: 1327eb3f6a111ee3581cdc8593d350f1283ce728
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6c6db8055afff298cf5d5c4abc09d7f88f32679c425bf08bb42a1a31c8a4913f3c20f2b53820d6bec01fa725634eda7bd34cee8e8ec09dc2173c9b7e781e26fe
|
7
|
+
data.tar.gz: fbc530de9fe44ed38e626068f01643c5dc41ac34cb84384082728a5be3c6fd9b29bb3d5a90b10c5539a23a575011e05c21ab8b74a7f9ae90f78ddf4631e335bc
|
data/.gitignore
CHANGED
File without changes
|
data/.rspec
CHANGED
File without changes
|
data/.travis.yml
CHANGED
File without changes
|
data/CODE_OF_CONDUCT.md
CHANGED
File without changes
|
data/Gemfile
CHANGED
File without changes
|
data/LICENSE.txt
CHANGED
File without changes
|
data/README.md
CHANGED
File without changes
|
data/Rakefile
CHANGED
File without changes
|
data/bin/console
CHANGED
File without changes
|
data/bin/setup
CHANGED
File without changes
|
data/codeguessing.gemspec
CHANGED
File without changes
|
data/lib/codeguessing/console.rb
CHANGED
@@ -1,94 +1,107 @@
|
|
1
1
|
module Codeguessing
|
2
|
-
class Console
|
3
|
-
|
2
|
+
class Console
|
3
|
+
attr_reader :game, :scores, :path
|
4
|
+
|
5
|
+
def initialize(opt = {})
|
4
6
|
@path = File.join(File.dirname(__FILE__), 'scores.yml')
|
5
7
|
@scores = load(@path)
|
6
|
-
@game = Game.new(opt)
|
7
|
-
return start if again
|
8
|
-
knowing
|
9
|
-
end
|
10
|
-
|
11
|
-
def knowing
|
12
|
-
puts "Are you ready broke code? (Y/N)"
|
13
|
-
if confirm?
|
14
|
-
puts '-----------------Rules!----------------------'.yellow
|
15
|
-
puts "You need guess secret code. This four-digit number with symbols from 1 to 6".yellow
|
16
|
-
puts "You have #{@game.attempts} attempt(s) and #{@game.hint_count} hint(s)".yellow
|
17
|
-
puts "If you want get hint write 'hint'".yellow
|
18
|
-
puts '---------------------------------------------'.yellow
|
19
|
-
return start
|
20
|
-
else
|
21
|
-
puts 'Goodbie!'
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def start
|
26
|
-
puts "Attempt(s): #{@game.attempts} | Hint(s): #{@game.hint_count}"
|
27
|
-
return loose if @game.state == 'false'
|
28
|
-
return win if @game.state == 'true'
|
29
|
-
|
30
|
-
action = gets.chomp
|
31
|
-
if action == 'hint'
|
32
|
-
puts @game.hint
|
33
|
-
return start
|
34
|
-
end
|
35
|
-
unless @game.valid?(action)
|
36
|
-
puts 'Invalid data'.red
|
37
|
-
return start
|
38
|
-
end
|
39
|
-
puts coloring(@game.guess(action))
|
40
|
-
start
|
41
|
-
end
|
42
|
-
|
43
|
-
def win
|
44
|
-
puts 'You win!'.green
|
45
|
-
puts 'Do you want save result? (Y/N)'
|
46
|
-
return puts 'Goodbie!' unless confirm?
|
47
|
-
puts 'Write your name'
|
48
|
-
save(gets.chomp)
|
49
|
-
again?
|
50
|
-
end
|
51
|
-
|
52
|
-
def loose
|
53
|
-
puts 'You loose!'.red
|
54
|
-
again?
|
55
|
-
end
|
56
|
-
|
57
|
-
def again?
|
58
|
-
puts 'Do you want start again? (Y/N)'
|
59
|
-
if confirm?
|
60
|
-
Console.new(true)
|
61
|
-
else
|
62
|
-
puts '-----------Scores----------'.yellow
|
63
|
-
puts @scores
|
64
|
-
puts '---------------------------'.yellow
|
65
|
-
end
|
8
|
+
@game = Game.new(opt)
|
66
9
|
end
|
10
|
+
|
11
|
+
def go(know = true)
|
12
|
+
rules if know
|
13
|
+
puts "Attempt(s): #{@game.attempts} | Hint(s): #{@game.hint_count}"
|
14
|
+
case @game.state
|
15
|
+
when 'true'
|
16
|
+
win
|
17
|
+
when 'false'
|
18
|
+
loose
|
19
|
+
else
|
20
|
+
gaming
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def rules
|
25
|
+
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
|
+
unless confirm?
|
34
|
+
puts rules.join("\n")
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def gaming
|
39
|
+
action = gets.chomp
|
40
|
+
if action == 'hint'
|
41
|
+
puts @game.hint
|
42
|
+
return go(false)
|
43
|
+
end
|
44
|
+
if @game.valid?(action)
|
45
|
+
puts @game.guess(action)
|
46
|
+
else
|
47
|
+
puts 'Invalid data'
|
48
|
+
end
|
49
|
+
go(false)
|
50
|
+
end
|
67
51
|
|
68
52
|
def confirm?(action = gets.chomp)
|
69
|
-
return true if action == '
|
53
|
+
return true if action.downcase == 'y'
|
70
54
|
false
|
71
55
|
end
|
72
56
|
|
73
|
-
def coloring(string)
|
74
|
-
color_s = ''
|
75
|
-
string.chars { |w| color_s += w == '+' ? '+'.green : '-'.red }
|
76
|
-
color_s
|
77
|
-
end
|
78
|
-
|
79
57
|
def load(path)
|
80
58
|
YAML.load(File.open(path)) if File.exist?(path)
|
81
59
|
end
|
82
60
|
|
83
|
-
def save(name = 'Anonim')
|
84
|
-
|
85
|
-
|
61
|
+
def save!(name = 'Anonim')
|
62
|
+
if @game.state != 'true'
|
63
|
+
return puts 'You cant save game'
|
64
|
+
end
|
65
|
+
name.chomp!
|
66
|
+
@scores << @game.cur_score(name)
|
86
67
|
File.new(@path, 'w') unless File.exist?(@path)
|
87
68
|
File.open(@path, "r+") do |f|
|
88
69
|
f.write(@scores.to_yaml)
|
89
70
|
end
|
90
71
|
@scores
|
91
72
|
end
|
73
|
+
|
74
|
+
private
|
75
|
+
|
76
|
+
def win
|
77
|
+
puts 'You win!'
|
78
|
+
save?
|
79
|
+
again?
|
80
|
+
end
|
92
81
|
|
82
|
+
def loose
|
83
|
+
puts 'You loose!'
|
84
|
+
again?
|
85
|
+
end
|
86
|
+
|
87
|
+
def save?
|
88
|
+
puts 'Do you want save result? (Y/N)'
|
89
|
+
return puts 'Goodbie!' unless confirm?
|
90
|
+
puts 'Write your name'
|
91
|
+
save!(gets)
|
92
|
+
end
|
93
|
+
|
94
|
+
def again?
|
95
|
+
puts 'Do you want start again? (Y/N)'
|
96
|
+
if confirm?
|
97
|
+
@game = Game.new
|
98
|
+
return go(false)
|
99
|
+
else
|
100
|
+
puts '-----------Scores----------'
|
101
|
+
p @scores
|
102
|
+
puts '---------------------------'
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
93
106
|
end
|
94
107
|
end
|
data/lib/codeguessing/game.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
module Codeguessing
|
2
2
|
class Game
|
3
|
-
|
4
|
-
attr_accessor :secret_code
|
3
|
+
attr_accessor :attempts, :hint_count, :state, :answer, :secret_code
|
5
4
|
|
6
5
|
MAX_HINT = 2
|
7
6
|
MAX_ATTEMPTS = 5
|
@@ -16,14 +15,17 @@ module Codeguessing
|
|
16
15
|
|
17
16
|
def guess(code)
|
18
17
|
loose unless check?(use_attempt)
|
18
|
+
hash = {}
|
19
19
|
res = ''
|
20
20
|
code.each_char.with_index do |char, i|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
21
|
+
case
|
22
|
+
when char == secret_code[i]
|
23
|
+
res += '+'
|
24
|
+
when secret_code.count(char) == 1
|
25
|
+
hash[char] = '-'
|
26
|
+
end
|
26
27
|
end
|
28
|
+
res += hash.values.join('')
|
27
29
|
win if res == '++++'
|
28
30
|
@answer = res
|
29
31
|
end
|
data/lib/codeguessing/scores.yml
CHANGED
@@ -1,22 +1,21 @@
|
|
1
1
|
---
|
2
|
-
- :
|
3
|
-
:
|
4
|
-
:attempts: 4
|
5
|
-
:hint_count: 2
|
6
|
-
:state: true
|
7
|
-
- :name: '1234435'
|
8
|
-
:secret_code: '1234'
|
9
|
-
:attempts: 4
|
2
|
+
- :secret_code: '2222'
|
3
|
+
:attempts: 5
|
10
4
|
:hint_count: 2
|
11
|
-
:
|
12
|
-
|
13
|
-
|
14
|
-
:
|
5
|
+
:name: Yaroslav
|
6
|
+
- :secret_code: '1222'
|
7
|
+
:attempts: 3
|
8
|
+
:hint_count: 1
|
9
|
+
:name: 'Yaroslav
|
10
|
+
|
11
|
+
'
|
12
|
+
- :secret_code: '1351'
|
13
|
+
:attempts: 1
|
14
|
+
:hint_count: 0
|
15
|
+
:name: 'Yaroslav
|
16
|
+
|
17
|
+
'
|
18
|
+
- :secret_code: '1111'
|
15
19
|
:attempts: 4
|
16
|
-
:hint_count:
|
17
|
-
:
|
18
|
-
:answer: "++++"
|
19
|
-
- :secret_code: '1234'
|
20
|
-
:attempts: 4
|
21
|
-
:hint_count: 2
|
22
|
-
:name: Yayryary
|
20
|
+
:hint_count: 0
|
21
|
+
:name: Ivan
|
data/lib/codeguessing/version.rb
CHANGED
data/lib/codeguessing.rb
CHANGED
File without changes
|
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
|
+
version: '0.4'
|
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
|
+
date: 2016-11-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
@@ -109,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
109
109
|
version: '0'
|
110
110
|
requirements: []
|
111
111
|
rubyforge_project:
|
112
|
-
rubygems_version: 2.
|
112
|
+
rubygems_version: 2.5.1
|
113
113
|
signing_key:
|
114
114
|
specification_version: 4
|
115
115
|
summary: Codeguessing
|