tobi-mastermind 1.0 → 1.1
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/bin/console +14 -14
- data/bin/mastermind +4 -4
- data/bin/setup +7 -7
- data/lib/mastermind/tobi/gamehelper.rb +87 -105
- data/lib/mastermind/tobi/gamemethods.rb +106 -90
- data/lib/mastermind/tobi/gameplay.rb +14 -14
- data/lib/mastermind/tobi/logic.rb +37 -37
- data/lib/mastermind/tobi/multi_game.rb +98 -97
- data/lib/mastermind/tobi/player.rb +20 -20
- data/lib/mastermind/tobi/single_game.rb +117 -116
- data/lib/mastermind/tobi/store.yaml +137 -137
- data/lib/mastermind/tobi/timehelper.rb +38 -30
- data/lib/mastermind/tobi/ui.rb +70 -70
- data/lib/mastermind_start.rb +16 -16
- metadata +2 -2
@@ -1,137 +1,137 @@
|
|
1
|
-
--- !ruby/object:Player
|
2
|
-
name: tobiloba
|
3
|
-
sequence:
|
4
|
-
- b
|
5
|
-
- g
|
6
|
-
- r
|
7
|
-
- y
|
8
|
-
time: 5
|
9
|
-
guesses: 1
|
10
|
-
--- !ruby/object:Player
|
11
|
-
name: tben
|
12
|
-
sequence:
|
13
|
-
- r
|
14
|
-
- r
|
15
|
-
- y
|
16
|
-
- y
|
17
|
-
- g
|
18
|
-
time: 13
|
19
|
-
guesses: 1
|
20
|
-
--- !ruby/object:Player
|
21
|
-
name: tobi2
|
22
|
-
sequence:
|
23
|
-
- y
|
24
|
-
- b
|
25
|
-
- r
|
26
|
-
- g
|
27
|
-
- y
|
28
|
-
time: 7
|
29
|
-
guesses: 1
|
30
|
-
--- !ruby/object:Player
|
31
|
-
name: tobi3
|
32
|
-
sequence:
|
33
|
-
- y
|
34
|
-
- g
|
35
|
-
- g
|
36
|
-
- y
|
37
|
-
time: 3
|
38
|
-
guesses: 1
|
39
|
-
--- !ruby/object:Player
|
40
|
-
name: tobi4
|
41
|
-
sequence:
|
42
|
-
- r
|
43
|
-
- y
|
44
|
-
- y
|
45
|
-
- y
|
46
|
-
time: 5
|
47
|
-
guesses: 1
|
48
|
-
--- !ruby/object:Player
|
49
|
-
name: tbaba
|
50
|
-
sequence:
|
51
|
-
- r
|
52
|
-
- r
|
53
|
-
- g
|
54
|
-
- y
|
55
|
-
time: 3
|
56
|
-
guesses: 1
|
57
|
-
--- !ruby/object:Player
|
58
|
-
name: tboss
|
59
|
-
sequence:
|
60
|
-
- b
|
61
|
-
- y
|
62
|
-
- g
|
63
|
-
- b
|
64
|
-
time: 15
|
65
|
-
guesses: 1
|
66
|
-
--- !ruby/object:Player
|
67
|
-
name: madara
|
68
|
-
sequence:
|
69
|
-
- r
|
70
|
-
- r
|
71
|
-
- b
|
72
|
-
- y
|
73
|
-
time: 27
|
74
|
-
guesses: 1
|
75
|
-
--- !ruby/object:Player
|
76
|
-
name: 7jsdf
|
77
|
-
sequence:
|
78
|
-
- b
|
79
|
-
- g
|
80
|
-
- b
|
81
|
-
- r
|
82
|
-
time: 3
|
83
|
-
guesses: 1
|
84
|
-
--- !ruby/object:Player
|
85
|
-
name: asdf
|
86
|
-
sequence:
|
87
|
-
- y
|
88
|
-
- r
|
89
|
-
- b
|
90
|
-
- b
|
91
|
-
time: 4
|
92
|
-
guesses: 1
|
93
|
-
--- !ruby/object:Player
|
94
|
-
name: babatee
|
95
|
-
sequence:
|
96
|
-
- g
|
97
|
-
- g
|
98
|
-
- b
|
99
|
-
- r
|
100
|
-
time: 2
|
101
|
-
guesses: 1
|
102
|
-
--- !ruby/object:Player
|
103
|
-
name: Tbff
|
104
|
-
sequence:
|
105
|
-
- r
|
106
|
-
- g
|
107
|
-
- y
|
108
|
-
- b
|
109
|
-
time: 74
|
110
|
-
guesses: 2
|
111
|
-
--- !ruby/object:Player
|
112
|
-
name: Toisdaf
|
113
|
-
sequence:
|
114
|
-
- r
|
115
|
-
- g
|
116
|
-
- y
|
117
|
-
- b
|
118
|
-
time: 8
|
119
|
-
guesses: 2
|
120
|
-
--- !ruby/object:Player
|
121
|
-
name: Yuo
|
122
|
-
sequence:
|
123
|
-
- r
|
124
|
-
- g
|
125
|
-
- y
|
126
|
-
- b
|
127
|
-
time: 9
|
128
|
-
guesses: 2
|
129
|
-
--- !ruby/object:Player
|
130
|
-
name: Ttiosd
|
131
|
-
sequence:
|
132
|
-
- r
|
133
|
-
- g
|
134
|
-
- y
|
135
|
-
- b
|
136
|
-
time: 24
|
137
|
-
guesses: 2
|
1
|
+
--- !ruby/object:Player
|
2
|
+
name: tobiloba
|
3
|
+
sequence:
|
4
|
+
- b
|
5
|
+
- g
|
6
|
+
- r
|
7
|
+
- y
|
8
|
+
time: 5
|
9
|
+
guesses: 1
|
10
|
+
--- !ruby/object:Player
|
11
|
+
name: tben
|
12
|
+
sequence:
|
13
|
+
- r
|
14
|
+
- r
|
15
|
+
- y
|
16
|
+
- y
|
17
|
+
- g
|
18
|
+
time: 13
|
19
|
+
guesses: 1
|
20
|
+
--- !ruby/object:Player
|
21
|
+
name: tobi2
|
22
|
+
sequence:
|
23
|
+
- y
|
24
|
+
- b
|
25
|
+
- r
|
26
|
+
- g
|
27
|
+
- y
|
28
|
+
time: 7
|
29
|
+
guesses: 1
|
30
|
+
--- !ruby/object:Player
|
31
|
+
name: tobi3
|
32
|
+
sequence:
|
33
|
+
- y
|
34
|
+
- g
|
35
|
+
- g
|
36
|
+
- y
|
37
|
+
time: 3
|
38
|
+
guesses: 1
|
39
|
+
--- !ruby/object:Player
|
40
|
+
name: tobi4
|
41
|
+
sequence:
|
42
|
+
- r
|
43
|
+
- y
|
44
|
+
- y
|
45
|
+
- y
|
46
|
+
time: 5
|
47
|
+
guesses: 1
|
48
|
+
--- !ruby/object:Player
|
49
|
+
name: tbaba
|
50
|
+
sequence:
|
51
|
+
- r
|
52
|
+
- r
|
53
|
+
- g
|
54
|
+
- y
|
55
|
+
time: 3
|
56
|
+
guesses: 1
|
57
|
+
--- !ruby/object:Player
|
58
|
+
name: tboss
|
59
|
+
sequence:
|
60
|
+
- b
|
61
|
+
- y
|
62
|
+
- g
|
63
|
+
- b
|
64
|
+
time: 15
|
65
|
+
guesses: 1
|
66
|
+
--- !ruby/object:Player
|
67
|
+
name: madara
|
68
|
+
sequence:
|
69
|
+
- r
|
70
|
+
- r
|
71
|
+
- b
|
72
|
+
- y
|
73
|
+
time: 27
|
74
|
+
guesses: 1
|
75
|
+
--- !ruby/object:Player
|
76
|
+
name: 7jsdf
|
77
|
+
sequence:
|
78
|
+
- b
|
79
|
+
- g
|
80
|
+
- b
|
81
|
+
- r
|
82
|
+
time: 3
|
83
|
+
guesses: 1
|
84
|
+
--- !ruby/object:Player
|
85
|
+
name: asdf
|
86
|
+
sequence:
|
87
|
+
- y
|
88
|
+
- r
|
89
|
+
- b
|
90
|
+
- b
|
91
|
+
time: 4
|
92
|
+
guesses: 1
|
93
|
+
--- !ruby/object:Player
|
94
|
+
name: babatee
|
95
|
+
sequence:
|
96
|
+
- g
|
97
|
+
- g
|
98
|
+
- b
|
99
|
+
- r
|
100
|
+
time: 2
|
101
|
+
guesses: 1
|
102
|
+
--- !ruby/object:Player
|
103
|
+
name: Tbff
|
104
|
+
sequence:
|
105
|
+
- r
|
106
|
+
- g
|
107
|
+
- y
|
108
|
+
- b
|
109
|
+
time: 74
|
110
|
+
guesses: 2
|
111
|
+
--- !ruby/object:Player
|
112
|
+
name: Toisdaf
|
113
|
+
sequence:
|
114
|
+
- r
|
115
|
+
- g
|
116
|
+
- y
|
117
|
+
- b
|
118
|
+
time: 8
|
119
|
+
guesses: 2
|
120
|
+
--- !ruby/object:Player
|
121
|
+
name: Yuo
|
122
|
+
sequence:
|
123
|
+
- r
|
124
|
+
- g
|
125
|
+
- y
|
126
|
+
- b
|
127
|
+
time: 9
|
128
|
+
guesses: 2
|
129
|
+
--- !ruby/object:Player
|
130
|
+
name: Ttiosd
|
131
|
+
sequence:
|
132
|
+
- r
|
133
|
+
- g
|
134
|
+
- y
|
135
|
+
- b
|
136
|
+
time: 24
|
137
|
+
guesses: 2
|
@@ -1,31 +1,39 @@
|
|
1
|
-
module MasterMind
|
2
|
-
module Tobi
|
3
|
-
module TimeHelper
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
time_string <<
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
1
|
+
module MasterMind
|
2
|
+
module Tobi
|
3
|
+
module TimeHelper
|
4
|
+
SINGULAR = [' hour', ' minute', ' second']
|
5
|
+
PLURAL = [' hours', ' minutes', ' seconds']
|
6
|
+
def time_convert(time_int)
|
7
|
+
hours = time_int / 3600
|
8
|
+
minutes = (time_int % 3600) / 60
|
9
|
+
seconds = (time_int % 3600) % 60
|
10
|
+
time_string = construct_string(hours, minutes, seconds)
|
11
|
+
end
|
12
|
+
|
13
|
+
def construct_string(hours, minutes, seconds)
|
14
|
+
time_string = ''
|
15
|
+
time_string = hour_minute_helper(hours, minutes, time_string, 0)
|
16
|
+
time_string = hour_minute_helper(minutes, seconds, time_string, 1)
|
17
|
+
time_string = second_helper(seconds, time_string)
|
18
|
+
time_string
|
19
|
+
end
|
20
|
+
|
21
|
+
def hour_minute_helper(greater, lesser, time_string, position)
|
22
|
+
if greater >= 1
|
23
|
+
time_string << (greater.to_s + (greater == 1 ? SINGULAR[position] : PLURAL[position]))
|
24
|
+
time_string << ', ' if lesser > 0
|
25
|
+
end
|
26
|
+
time_string
|
27
|
+
end
|
28
|
+
|
29
|
+
def second_helper(seconds, time_string)
|
30
|
+
if seconds >= 1
|
31
|
+
time_string << (seconds.to_s + (seconds == 1 ? ' second' : ' seconds'))
|
32
|
+
elsif seconds == 0 && time_string == ''
|
33
|
+
time_string << '0 seconds'
|
34
|
+
end
|
35
|
+
time_string
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
31
39
|
end
|
data/lib/mastermind/tobi/ui.rb
CHANGED
@@ -1,71 +1,71 @@
|
|
1
|
-
module MasterMind
|
2
|
-
module Tobi
|
3
|
-
module UI
|
4
|
-
|
5
|
-
GUESS_MAX = 12
|
6
|
-
|
7
|
-
WELCOME_MESSAGE = "\nWelcome to the Classy MasterMind game by Tobi\n"
|
8
|
-
|
9
|
-
INPUT_PROMPT = "\n>> "
|
10
|
-
|
11
|
-
OPTIONS_MESSAGE = "\nWould you like to (p)lay, (r)ead the instructions or (quit) ?"
|
12
|
-
|
13
|
-
HELP_MESSAGE = "\nOnce game starts, a random code is generated and you're asked to guess what the code is.
|
14
|
-
Every code is a four/five/six digit word made up by the letters [r, g, b, y]/[r, g, b, y, o]/[r, g, b, y, o, v]
|
15
|
-
depending on difficulty levels beginner/intermediate/advanced levels. You have twelve guesses per game.
|
16
|
-
On every guess, you are presented with a message identifying the number of elements you got correctly, and in what positions.
|
17
|
-
To view entry history, enter h or history at any time
|
18
|
-
To view sequence generated, enter c or cheat at any time
|
19
|
-
To quit the game at any point enter q or quit\n\n"
|
20
|
-
|
21
|
-
BEGINNER_COLOR = "(r)ed, (g)reen, (b)lue and (y)ellow"
|
22
|
-
|
23
|
-
INTERMEDIATE_COLOR = "(r)ed, (g)reen, (b)lue, (y)ellow, and (o)range"
|
24
|
-
|
25
|
-
ADVANCED_COLOR = "(r)ed, (g)reen, (b)lue, (y)ellow, (o)range and (v)iolet"
|
26
|
-
|
27
|
-
COLOR_STRINGS = [BEGINNER_COLOR, INTERMEDIATE_COLOR, ADVANCED_COLOR]
|
28
|
-
|
29
|
-
GENERATE_MESSAGE = "\nI have generated %s sequence with %s elements made \
|
30
|
-
up of: %s\nUse (q)uit at any time to end the game. \nWhat's your guess?"
|
31
|
-
|
32
|
-
INVALID_MESSAGE = "\nEntry invalid! Please try again" + INPUT_PROMPT
|
33
|
-
|
34
|
-
INPUT_SHORT_MESSAGE = "Input too short. Please enter guess correctly" + INPUT_PROMPT
|
35
|
-
|
36
|
-
INPUT_LONG_MESSAGE = "Input too long. Please enter guess correctly." + INPUT_PROMPT
|
37
|
-
|
38
|
-
SEQUENCE_MESSAGE = "The sequence is %s" + INPUT_PROMPT
|
39
|
-
|
40
|
-
CONGRATS_MESSAGE = "\n%s, You guessed the sequence '%s' in %s %s over %s"
|
41
|
-
|
42
|
-
INFO_MESSAGE = "'%s' has %s of the correct elements with %s in the correct positions."
|
43
|
-
|
44
|
-
END_MESSAGE = "Do you want to (p)lay again or (q)uit?"
|
45
|
-
|
46
|
-
GUESSES_MESSAGE = "You've taken %s %s"
|
47
|
-
|
48
|
-
LEVEL_MESSAGE = "\nDifficulty level: (b)eginner, (i)ntermediate or (a)dvanced? " + INPUT_PROMPT
|
49
|
-
|
50
|
-
NAME_MESSAGE = "\nCongratulations! You've guessed the sequence! What's your name?" + INPUT_PROMPT
|
51
|
-
|
52
|
-
DB_STORE = 'store.yaml'
|
53
|
-
|
54
|
-
TOP_TEN = '=== TOP TEN ==='
|
55
|
-
|
56
|
-
OVERWRITE_MESSAGE = 'Data file already exists. Do you want to add your score to top scores? (y)es or (n)o..'
|
57
|
-
|
58
|
-
MODE_SELECT = "\nPlease choose mode >>> (s)ingle or (m)ulti player mode?" + INPUT_PROMPT
|
59
|
-
|
60
|
-
MULTI_START_MESSAGE = "Welcome to the MultiPlayer Challenge. How many users will be playing today?" + INPUT_PROMPT
|
61
|
-
|
62
|
-
PLAYER_MESSAGE = "********Player %s's turn" + INPUT_PROMPT
|
63
|
-
|
64
|
-
SORRY_SINGLE_MESSAGE = "Sorry, You lost. The sequence is %s"
|
65
|
-
|
66
|
-
SORRY_MULTI_MESSAGE = "Sorry, You all lost. The sequence is %s"
|
67
|
-
|
68
|
-
PASSWORD_MESSAGE = "\nWould you like to hide each player's guesses? (y)es or (n)o ?" + INPUT_PROMPT
|
69
|
-
end
|
70
|
-
end
|
1
|
+
module MasterMind
|
2
|
+
module Tobi
|
3
|
+
module UI
|
4
|
+
|
5
|
+
GUESS_MAX = 12
|
6
|
+
|
7
|
+
WELCOME_MESSAGE = "\nWelcome to the Classy MasterMind game by Tobi\n"
|
8
|
+
|
9
|
+
INPUT_PROMPT = "\n>> "
|
10
|
+
|
11
|
+
OPTIONS_MESSAGE = "\nWould you like to (p)lay, (r)ead the instructions or (quit) ?"
|
12
|
+
|
13
|
+
HELP_MESSAGE = "\nOnce game starts, a random code is generated and you're asked to guess what the code is.
|
14
|
+
Every code is a four/five/six digit word made up by the letters [r, g, b, y]/[r, g, b, y, o]/[r, g, b, y, o, v]
|
15
|
+
depending on difficulty levels beginner/intermediate/advanced levels. You have twelve guesses per game.
|
16
|
+
On every guess, you are presented with a message identifying the number of elements you got correctly, and in what positions.
|
17
|
+
To view entry history, enter h or history at any time
|
18
|
+
To view sequence generated, enter c or cheat at any time
|
19
|
+
To quit the game at any point enter q or quit\n\n"
|
20
|
+
|
21
|
+
BEGINNER_COLOR = "(r)ed, (g)reen, (b)lue and (y)ellow"
|
22
|
+
|
23
|
+
INTERMEDIATE_COLOR = "(r)ed, (g)reen, (b)lue, (y)ellow, and (o)range"
|
24
|
+
|
25
|
+
ADVANCED_COLOR = "(r)ed, (g)reen, (b)lue, (y)ellow, (o)range and (v)iolet"
|
26
|
+
|
27
|
+
COLOR_STRINGS = [BEGINNER_COLOR, INTERMEDIATE_COLOR, ADVANCED_COLOR]
|
28
|
+
|
29
|
+
GENERATE_MESSAGE = "\nI have generated %s sequence with %s elements made \
|
30
|
+
up of: %s\nUse (q)uit at any time to end the game. \nWhat's your guess?"
|
31
|
+
|
32
|
+
INVALID_MESSAGE = "\nEntry invalid! Please try again" + INPUT_PROMPT
|
33
|
+
|
34
|
+
INPUT_SHORT_MESSAGE = "Input too short. Please enter guess correctly" + INPUT_PROMPT
|
35
|
+
|
36
|
+
INPUT_LONG_MESSAGE = "Input too long. Please enter guess correctly." + INPUT_PROMPT
|
37
|
+
|
38
|
+
SEQUENCE_MESSAGE = "The sequence is %s" + INPUT_PROMPT
|
39
|
+
|
40
|
+
CONGRATS_MESSAGE = "\n%s, You guessed the sequence '%s' in %s %s over %s"
|
41
|
+
|
42
|
+
INFO_MESSAGE = "'%s' has %s of the correct elements with %s in the correct positions."
|
43
|
+
|
44
|
+
END_MESSAGE = "Do you want to (p)lay again or (q)uit?"
|
45
|
+
|
46
|
+
GUESSES_MESSAGE = "You've taken %s %s"
|
47
|
+
|
48
|
+
LEVEL_MESSAGE = "\nDifficulty level: (b)eginner, (i)ntermediate or (a)dvanced? " + INPUT_PROMPT
|
49
|
+
|
50
|
+
NAME_MESSAGE = "\nCongratulations! You've guessed the sequence! What's your name?" + INPUT_PROMPT
|
51
|
+
|
52
|
+
DB_STORE = 'store.yaml'
|
53
|
+
|
54
|
+
TOP_TEN = '=== TOP TEN ==='
|
55
|
+
|
56
|
+
OVERWRITE_MESSAGE = 'Data file already exists. Do you want to add your score to top scores? (y)es or (n)o..'
|
57
|
+
|
58
|
+
MODE_SELECT = "\nPlease choose mode >>> (s)ingle or (m)ulti player mode?" + INPUT_PROMPT
|
59
|
+
|
60
|
+
MULTI_START_MESSAGE = "Welcome to the MultiPlayer Challenge. How many users will be playing today?" + INPUT_PROMPT
|
61
|
+
|
62
|
+
PLAYER_MESSAGE = "********Player %s's turn" + INPUT_PROMPT
|
63
|
+
|
64
|
+
SORRY_SINGLE_MESSAGE = "Sorry, You lost. The sequence is %s"
|
65
|
+
|
66
|
+
SORRY_MULTI_MESSAGE = "Sorry, You all lost. The sequence is %s"
|
67
|
+
|
68
|
+
PASSWORD_MESSAGE = "\nWould you like to hide each player's guesses? (y)es or (n)o ?" + INPUT_PROMPT
|
69
|
+
end
|
70
|
+
end
|
71
71
|
end
|