PlayRockPaperScissorsGame 2.4.5 → 2.4.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/bin/PlayRockPaperScissorsGame +2 -2
- data/bin/rps +4 -4
- data/docs/Code.md +5 -5
- data/docs/Comparing_Code.md +54 -60
- data/docs/_config.yml +3 -1
- data/docs/_layouts/default.html +2 -2
- data/docs/_site/CODE_OF_CONDUCT.html +3 -3
- data/docs/_site/CONTRIBUTING.html +3 -3
- data/docs/_site/Code.html +8 -8
- data/docs/_site/Comparing_Code.html +53 -62
- data/docs/_site/How_to_Build.html +3 -3
- data/docs/_site/Testing.html +3 -3
- data/docs/_site/index.html +3 -3
- data/lib/rps/version.rb +1 -1
- data/rps.gemspec +1 -1
- data/test/test_rps.rb +2 -2
- data.tar.gz.sig +0 -0
- metadata +1 -1
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1ff4f5604e96223fb57fa294a054b41440482682
|
4
|
+
data.tar.gz: 9f1a60be06652f272b04664f2eafad5def5b28d5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 900e13faf5087fec53264e1c6177a9ab31bad6addbfa825a018321aa9c7790f750f820569e2bf8a0b7c0b0946ea6525d5fa2ff4256ce6f2055bf1b1dc7752c86
|
7
|
+
data.tar.gz: 6b16efbf00ba73a2bc1bef6de99a09543fab32e8488dd5c29c977e87768c10021f6eee46facc3cc92967c0b7922044f29bac59831c6d98ec1f863f91a0d9d093
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
@@ -23,8 +23,8 @@ class PlayRockPaperScissorsGame
|
|
23
23
|
|
24
24
|
class << self # make continue a self calling method
|
25
25
|
def continue(str1,str2,str3) # pass in 3 parameters
|
26
|
-
puts
|
27
|
-
print
|
26
|
+
puts str1 # make string output green text
|
27
|
+
print str2
|
28
28
|
gets # press enter or return to continue
|
29
29
|
puts str3
|
30
30
|
end
|
data/bin/rps
CHANGED
@@ -23,10 +23,10 @@ class PlayRockPaperScissorsGame
|
|
23
23
|
protected_methods :Constants
|
24
24
|
|
25
25
|
class << self
|
26
|
-
def continue(str1,str2,str3)
|
27
|
-
puts
|
28
|
-
print
|
29
|
-
gets
|
26
|
+
def continue(str1,str2,str3)
|
27
|
+
puts str1
|
28
|
+
print str2
|
29
|
+
gets
|
30
30
|
puts str3
|
31
31
|
end
|
32
32
|
end
|
data/docs/Code.md
CHANGED
@@ -28,7 +28,7 @@ __`% rps`__
|
|
28
28
|
class PlayRockPaperScissorsGame # define master class
|
29
29
|
|
30
30
|
module RockPaperScissors
|
31
|
-
VERSION = "2.4.
|
31
|
+
VERSION = "2.4.6" # define version constant
|
32
32
|
end
|
33
33
|
|
34
34
|
# intiate the colorize gem
|
@@ -50,7 +50,7 @@ class PlayRockPaperScissorsGame # define master class
|
|
50
50
|
[:PAPER , :ROCK],
|
51
51
|
[:ROCK , :SCISSORS]
|
52
52
|
]
|
53
|
-
LOSERS = WINNERS.map { |
|
53
|
+
LOSERS = WINNERS.map { |player_choice,computer_choice| [computer_choice,player_choice] } # this will take the original WINNERS array and flip the symbols, thus returning a loss for the user/player
|
54
54
|
INIT_STRINGS = [
|
55
55
|
ColorizedString["You are about to enter a rock-paper-scissors best of 3 match."].colorize(:green),
|
56
56
|
ColorizedString["Press the return/enter key to continue..."].colorize(:green),
|
@@ -62,8 +62,8 @@ class PlayRockPaperScissorsGame # define master class
|
|
62
62
|
|
63
63
|
class << self # define a self calling method within the parent class
|
64
64
|
def continue(str1,str2,str3) # pass in 3 parameters
|
65
|
-
puts
|
66
|
-
print
|
65
|
+
puts str1
|
66
|
+
print str2
|
67
67
|
gets # press enter or return to continue
|
68
68
|
puts str3
|
69
69
|
end
|
@@ -133,7 +133,7 @@ class PlayRockPaperScissorsGame # define master class
|
|
133
133
|
def player_outcome(plays) # define method for the player's outcome while passing in a parameter of type array
|
134
134
|
return :WIN if Constants::WINNERS.include?(plays) # return a win if the one of the sub-arrays in the winners array is called
|
135
135
|
return :LOSE if Constants::LOSERS.include?(plays) # return a loss if any of the mapped sub-arrays in the losers constant is present
|
136
|
-
return :TIE if !:WIN | !:LOSE # return a tie if not (!) win or if not
|
136
|
+
return :TIE if !:WIN | !:LOSE # return a tie if not (!) win or if not lose
|
137
137
|
end
|
138
138
|
def final_outcome(pl,co) # define final outcome method
|
139
139
|
return :WIN if pl > co
|
data/docs/Comparing_Code.md
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
---
|
2
|
+
# start YAML
|
2
3
|
layout: default
|
3
4
|
title: Comparing Code - Play Rock Paper Scissors Game
|
5
|
+
permalink: /Comparing_Code.html
|
6
|
+
# end YAML
|
4
7
|
---
|
5
8
|
|
6
9
|
[//]: # (start markdown)
|
@@ -13,7 +16,7 @@ title: Comparing Code - Play Rock Paper Scissors Game
|
|
13
16
|
- [Beginner's Code](#beginners-code)
|
14
17
|
- [Beginner's Code Pros](#beginners-code-pros)
|
15
18
|
- [Beginner's Code Cons](#beginners-code-cons)
|
16
|
-
- [What Beginner's Code Looks
|
19
|
+
- [What Beginner's Code Looks Like](#what-beginners-code-looks-like)
|
17
20
|
- [Advanced Code](#advanced-code)
|
18
21
|
- [Advanced Code Pros](#advanced-code-pros)
|
19
22
|
- [Advanced Code Cons](#advanced-code-cons)
|
@@ -23,30 +26,30 @@ title: Comparing Code - Play Rock Paper Scissors Game
|
|
23
26
|
## Beginner's Code
|
24
27
|
|
25
28
|
### Beginner's Code Pros
|
29
|
+
|
26
30
|
+ Simple
|
27
31
|
- Easy to understand
|
28
32
|
* Short
|
29
33
|
|
30
34
|
### Beginner's Code Cons
|
35
|
+
|
31
36
|
+ Unorganized
|
32
37
|
- Lacks modularization
|
33
38
|
* Many `if`s and `else`s
|
34
39
|
|
35
|
-
### What Beginner's Code Looks
|
40
|
+
### What Beginner's Code Looks Like
|
36
41
|
|
37
|
-
__`% ruby beginner.rb`__
|
42
|
+
__`% ruby beginner-rps.rb`__
|
38
43
|
|
39
44
|
[//]: # (end markdown)
|
40
45
|
|
41
46
|
[//]: # (start ruby)
|
42
|
-
|
43
47
|
```ruby
|
44
48
|
options = ["rock", "paper", "scissors"]
|
45
49
|
computer_choice = options[rand(options.length)]
|
46
|
-
# the above line chooses a random pick in the options array, and the `options.length` means to choose from however many options there are in the `options` array
|
47
50
|
puts "What's your choice?"
|
48
51
|
puts "rock, paper, or scissors"
|
49
|
-
user_input = gets.chomp.downcase
|
52
|
+
user_input = gets.chomp.downcase
|
50
53
|
loop do
|
51
54
|
if (user_input == "rock" || user_input == "paper" || user_input == "scissors")
|
52
55
|
if (user_input == computer_choice)
|
@@ -63,17 +66,19 @@ loop do
|
|
63
66
|
puts "computer choice is: " + computer_choice + " ,computer wins :("
|
64
67
|
elsif (user_input == "scissors" && computer_choice == "paper")
|
65
68
|
puts "computer choice is: " + computer_choice + " , you win! :)"
|
69
|
+
else
|
70
|
+
puts "Invalid choice, enter Rock, Paper, or Scissors"
|
71
|
+
puts "What's your choice?"
|
72
|
+
user_input = gets.chomp.downcase
|
66
73
|
end
|
67
|
-
else
|
68
|
-
puts "Invalid choice, enter Rock, Paper, or Scissors"
|
69
|
-
puts "What's your choice?"
|
70
|
-
user_input = gets.chomp.downcase # have the user choose again
|
71
74
|
end
|
72
|
-
break
|
75
|
+
break
|
73
76
|
end
|
74
77
|
```
|
75
78
|
[//]: # (end ruby)
|
79
|
+
|
76
80
|
[//]: # (start markdown)
|
81
|
+
|
77
82
|
## Advanced Code
|
78
83
|
|
79
84
|
### Advanced Code Pros
|
@@ -89,34 +94,33 @@ end
|
|
89
94
|
|
90
95
|
### What Advanced Code Looks Like
|
91
96
|
|
92
|
-
__`% ruby advanced.rb`__
|
97
|
+
__`% ruby advanced-rps.rb`__
|
93
98
|
|
94
99
|
[//]: # (end markdown)
|
95
100
|
|
96
101
|
[//]: # (start ruby)
|
97
102
|
```ruby
|
98
|
-
class PlayRockPaperScissorsGame
|
103
|
+
class PlayRockPaperScissorsGame
|
99
104
|
|
100
|
-
#
|
105
|
+
# import colorize gem
|
101
106
|
require "colorized_string"
|
102
|
-
ColorizedString.colors # import colors
|
103
|
-
ColorizedString.modes # import modes
|
107
|
+
ColorizedString.colors # import colors
|
108
|
+
ColorizedString.modes # import modes (bold, etc...)
|
104
109
|
|
105
110
|
module Constants
|
106
|
-
NTRY_TO_SYM = {
|
111
|
+
NTRY_TO_SYM = {
|
107
112
|
'p' => :PAPER,
|
108
113
|
'r' => :ROCK,
|
109
114
|
's' => :SCISSORS
|
110
115
|
}
|
111
|
-
VALID_ENTRIES = NTRY_TO_SYM.keys
|
112
|
-
COMPUTER_CHOICES = NTRY_TO_SYM.values
|
113
|
-
WINNERS = [
|
114
|
-
# format: player choice, computer choice
|
116
|
+
VALID_ENTRIES = NTRY_TO_SYM.keys
|
117
|
+
COMPUTER_CHOICES = NTRY_TO_SYM.values
|
118
|
+
WINNERS = [
|
115
119
|
[:SCISSORS, :PAPER],
|
116
120
|
[:PAPER , :ROCK],
|
117
121
|
[:ROCK , :SCISSORS]
|
118
122
|
]
|
119
|
-
LOSERS = WINNERS.map { |
|
123
|
+
LOSERS = WINNERS.map { |player_choice,computer_choice| [computer_choice,player_choice] } # flip the values in the WINNERS array
|
120
124
|
INIT_STRINGS = [
|
121
125
|
ColorizedString["You are about to enter a rock-paper-scissors best of 3 match."].colorize(:green),
|
122
126
|
ColorizedString["Press the return/enter key to continue..."].colorize(:green),
|
@@ -124,46 +128,44 @@ class PlayRockPaperScissorsGame # define master class
|
|
124
128
|
]
|
125
129
|
end
|
126
130
|
|
127
|
-
protected_methods :Constants # make
|
131
|
+
protected_methods :Constants # make constants module protected
|
128
132
|
|
129
|
-
class << self
|
130
|
-
def continue(str1,str2,str3)
|
131
|
-
puts
|
132
|
-
print
|
133
|
-
gets
|
133
|
+
class << self
|
134
|
+
def continue(str1,str2,str3)
|
135
|
+
puts str1
|
136
|
+
print str2
|
137
|
+
gets
|
134
138
|
puts str3
|
135
139
|
end
|
136
140
|
end
|
137
141
|
|
138
|
-
continue(Constants::INIT_STRINGS[0], Constants::INIT_STRINGS[1], Constants::INIT_STRINGS[2])
|
142
|
+
continue(Constants::INIT_STRINGS[0], Constants::INIT_STRINGS[1], Constants::INIT_STRINGS[2])
|
139
143
|
|
140
|
-
def initialize
|
144
|
+
def initialize
|
141
145
|
@player_score = @computer_score = @ties = 0
|
142
146
|
end
|
143
147
|
def play(winning_score)
|
144
|
-
while @player_score < winning_score && @computer_score < winning_score
|
148
|
+
while @player_score < winning_score && @computer_score < winning_score
|
145
149
|
puts ColorizedString["Player score: #{@player_score}, "].colorize(:blue) +
|
146
150
|
ColorizedString["Computer score: #{@computer_score}, Ties: #{@ties}"].colorize(:blue)
|
147
151
|
player = PrivateMethods.player_choice
|
148
|
-
computer = Constants::COMPUTER_CHOICES.sample
|
152
|
+
computer = Constants::COMPUTER_CHOICES.sample
|
149
153
|
puts ColorizedString["\nPlayer chooses #{player.to_s.downcase}"].colorize(:blue)
|
150
154
|
puts ColorizedString["Computer chooses #{computer.to_s.downcase}"].colorize(:blue)
|
151
|
-
case PrivateMethods.player_outcome [player, computer]
|
155
|
+
case PrivateMethods.player_outcome [player, computer]
|
152
156
|
when :WIN
|
153
157
|
puts ColorizedString["#{player.to_s.capitalize} beats #{computer.to_s.downcase}, player wins the round"].colorize(:red)
|
154
|
-
@player_score += 1
|
158
|
+
@player_score += 1
|
155
159
|
when :LOSE
|
156
160
|
puts ColorizedString["#{computer.to_s.capitalize} beats #{player.to_s.downcase}, computer wins the round"].colorize(:red)
|
157
161
|
@computer_score += 1
|
158
|
-
else
|
162
|
+
else
|
159
163
|
puts ColorizedString["Tie, choose again"].colorize(:red)
|
160
164
|
@ties += 1
|
161
|
-
# since tie is not in the original pass-in argument for the while loop, it will not be affected by the winning score
|
162
165
|
end
|
163
166
|
end
|
164
167
|
puts ColorizedString["\nFinal score: player: #{@player_score}, "].colorize(:blue) +
|
165
168
|
ColorizedString["computer: #{@computer_score} (ties: #{@ties})"].colorize(:blue)
|
166
|
-
# define a case for the final outcomes
|
167
169
|
case PrivateMethods.final_outcome(@player_score, @computer_score)
|
168
170
|
when :WIN
|
169
171
|
puts ColorizedString["Player wins!"].colorize(:red)
|
@@ -176,44 +178,36 @@ class PlayRockPaperScissorsGame # define master class
|
|
176
178
|
end
|
177
179
|
|
178
180
|
module PrivateMethods
|
179
|
-
class << self
|
181
|
+
class << self
|
180
182
|
def player_choice
|
181
|
-
loop do
|
183
|
+
loop do
|
182
184
|
print ColorizedString["Choose rock (r), paper (p) or scissors (s): "].colorize(:green)
|
183
|
-
choice = gets.chomp.downcase
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
puts ColorizedString["That entry is invalid. Please re-enter."].colorize(:red) # return an error message
|
185
|
+
choice = gets.chomp.downcase
|
186
|
+
if Constants::NTRY_TO_SYM.key?(choice)
|
187
|
+
return Constants::NTRY_TO_SYM[choice]
|
188
|
+
elsif choice != Constants::VALID_ENTRIES
|
189
|
+
puts ColorizedString["That entry is invalid. Please re-enter."].colorize(:red)
|
189
190
|
end
|
190
|
-
# # one may also do this (albeit more useless):
|
191
|
-
# case
|
192
|
-
# when Constants::NTRY_TO_SYM.key?(choice)
|
193
|
-
# return Constants::NTRY_TO_SYM[choice]
|
194
|
-
# when choice != Constants::VALID_ENTRIES
|
195
|
-
# puts ColorizedString["That entry is invalid. Please re-enter."].colorize(:green)
|
196
|
-
# end
|
197
191
|
end
|
198
192
|
end
|
199
|
-
def player_outcome(plays)
|
200
|
-
return :WIN if Constants::WINNERS.include?(plays)
|
201
|
-
return :LOSE if Constants::LOSERS.include?(plays)
|
202
|
-
return :TIE if !:WIN | !:LOSE
|
193
|
+
def player_outcome(plays)
|
194
|
+
return :WIN if Constants::WINNERS.include?(plays)
|
195
|
+
return :LOSE if Constants::LOSERS.include?(plays)
|
196
|
+
return :TIE if !:WIN | !:LOSE
|
203
197
|
end
|
204
|
-
def final_outcome(pl,co)
|
198
|
+
def final_outcome(pl,co)
|
205
199
|
return :WIN if pl > co
|
206
200
|
return :LOSE if pl < co
|
207
|
-
return :TIE if pl = co # this
|
201
|
+
return :TIE if pl = co # this could never happen due to the code in the play method; however, it is worth noting
|
208
202
|
end
|
209
203
|
end
|
210
204
|
end
|
211
205
|
|
212
|
-
private_methods :PrivateMethods
|
206
|
+
private_methods :PrivateMethods
|
213
207
|
|
214
208
|
end
|
215
209
|
|
216
|
-
PlayRockPaperScissorsGame.new.play(2)
|
210
|
+
PlayRockPaperScissorsGame.new.play(2)
|
217
211
|
```
|
218
212
|
[//]: # (end ruby)
|
219
213
|
|
data/docs/_config.yml
CHANGED
data/docs/_layouts/default.html
CHANGED
@@ -8,8 +8,8 @@
|
|
8
8
|
<meta name="theme-color" content="#157878">
|
9
9
|
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'>
|
10
10
|
<link rel="stylesheet" href="{{ '/assets/css/style.css?v=' | append: site.github.build_revision | relative_url }}">
|
11
|
-
<link rel="stylesheet" href="assets/css/pace.css" />
|
12
|
-
<script src="assets/js/pace.min.js"></script>
|
11
|
+
<link rel="stylesheet" href="/assets/css/pace.css" />
|
12
|
+
<script src="/assets/js/pace.min.js"></script>
|
13
13
|
</head>
|
14
14
|
<body>
|
15
15
|
<section class="page-header">
|
@@ -7,9 +7,9 @@
|
|
7
7
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
8
8
|
<meta name="theme-color" content="#157878">
|
9
9
|
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'>
|
10
|
-
<link rel="stylesheet" href="/assets/css/style.css?v=
|
11
|
-
<link rel="stylesheet" href="assets/css/pace.css" />
|
12
|
-
<script src="assets/js/pace.min.js"></script>
|
10
|
+
<link rel="stylesheet" href="/assets/css/style.css?v=a619aba449fd31773059e12d98817087fdec295e">
|
11
|
+
<link rel="stylesheet" href="/assets/css/pace.css" />
|
12
|
+
<script src="/assets/js/pace.min.js"></script>
|
13
13
|
</head>
|
14
14
|
<body>
|
15
15
|
<section class="page-header">
|
@@ -7,9 +7,9 @@
|
|
7
7
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
8
8
|
<meta name="theme-color" content="#157878">
|
9
9
|
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'>
|
10
|
-
<link rel="stylesheet" href="/assets/css/style.css?v=
|
11
|
-
<link rel="stylesheet" href="assets/css/pace.css" />
|
12
|
-
<script src="assets/js/pace.min.js"></script>
|
10
|
+
<link rel="stylesheet" href="/assets/css/style.css?v=a619aba449fd31773059e12d98817087fdec295e">
|
11
|
+
<link rel="stylesheet" href="/assets/css/pace.css" />
|
12
|
+
<script src="/assets/js/pace.min.js"></script>
|
13
13
|
</head>
|
14
14
|
<body>
|
15
15
|
<section class="page-header">
|
data/docs/_site/Code.html
CHANGED
@@ -7,9 +7,9 @@
|
|
7
7
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
8
8
|
<meta name="theme-color" content="#157878">
|
9
9
|
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'>
|
10
|
-
<link rel="stylesheet" href="/assets/css/style.css?v=
|
11
|
-
<link rel="stylesheet" href="assets/css/pace.css" />
|
12
|
-
<script src="assets/js/pace.min.js"></script>
|
10
|
+
<link rel="stylesheet" href="/assets/css/style.css?v=a619aba449fd31773059e12d98817087fdec295e">
|
11
|
+
<link rel="stylesheet" href="/assets/css/pace.css" />
|
12
|
+
<script src="/assets/js/pace.min.js"></script>
|
13
13
|
</head>
|
14
14
|
<body>
|
15
15
|
<section class="page-header">
|
@@ -53,7 +53,7 @@
|
|
53
53
|
<span class="k">class</span> <span class="nc">PlayRockPaperScissorsGame</span> <span class="c1"># define master class</span>
|
54
54
|
|
55
55
|
<span class="k">module</span> <span class="nn">RockPaperScissors</span>
|
56
|
-
<span class="no">VERSION</span> <span class="o">=</span> <span class="s2">"2.4.
|
56
|
+
<span class="no">VERSION</span> <span class="o">=</span> <span class="s2">"2.4.6"</span> <span class="c1"># define version constant</span>
|
57
57
|
<span class="k">end</span>
|
58
58
|
|
59
59
|
<span class="c1"># intiate the colorize gem</span>
|
@@ -75,7 +75,7 @@
|
|
75
75
|
<span class="p">[</span><span class="ss">:PAPER</span> <span class="p">,</span> <span class="ss">:ROCK</span><span class="p">],</span>
|
76
76
|
<span class="p">[</span><span class="ss">:ROCK</span> <span class="p">,</span> <span class="ss">:SCISSORS</span><span class="p">]</span>
|
77
77
|
<span class="p">]</span>
|
78
|
-
<span class="no">LOSERS</span> <span class="o">=</span> <span class="no">WINNERS</span><span class="p">.</span><span class="nf">map</span> <span class="p">{</span> <span class="o">|</span><span class="n">
|
78
|
+
<span class="no">LOSERS</span> <span class="o">=</span> <span class="no">WINNERS</span><span class="p">.</span><span class="nf">map</span> <span class="p">{</span> <span class="o">|</span><span class="n">player_choice</span><span class="p">,</span><span class="n">computer_choice</span><span class="o">|</span> <span class="p">[</span><span class="n">computer_choice</span><span class="p">,</span><span class="n">player_choice</span><span class="p">]</span> <span class="p">}</span> <span class="c1"># this will take the original WINNERS array and flip the symbols, thus returning a loss for the user/player</span>
|
79
79
|
<span class="no">INIT_STRINGS</span> <span class="o">=</span> <span class="p">[</span>
|
80
80
|
<span class="no">ColorizedString</span><span class="p">[</span><span class="s2">"You are about to enter a rock-paper-scissors best of 3 match."</span><span class="p">].</span><span class="nf">colorize</span><span class="p">(</span><span class="ss">:green</span><span class="p">),</span>
|
81
81
|
<span class="no">ColorizedString</span><span class="p">[</span><span class="s2">"Press the return/enter key to continue..."</span><span class="p">].</span><span class="nf">colorize</span><span class="p">(</span><span class="ss">:green</span><span class="p">),</span>
|
@@ -87,8 +87,8 @@
|
|
87
87
|
|
88
88
|
<span class="k">class</span> <span class="o"><<</span> <span class="nb">self</span> <span class="c1"># define a self calling method within the parent class</span>
|
89
89
|
<span class="k">def</span> <span class="nf">continue</span><span class="p">(</span><span class="n">str1</span><span class="p">,</span><span class="n">str2</span><span class="p">,</span><span class="n">str3</span><span class="p">)</span> <span class="c1"># pass in 3 parameters</span>
|
90
|
-
<span class="nb">puts</span> <span class="
|
91
|
-
<span class="nb">print</span> <span class="
|
90
|
+
<span class="nb">puts</span> <span class="n">str1</span>
|
91
|
+
<span class="nb">print</span> <span class="n">str2</span>
|
92
92
|
<span class="nb">gets</span> <span class="c1"># press enter or return to continue</span>
|
93
93
|
<span class="nb">puts</span> <span class="n">str3</span>
|
94
94
|
<span class="k">end</span>
|
@@ -158,7 +158,7 @@
|
|
158
158
|
<span class="k">def</span> <span class="nf">player_outcome</span><span class="p">(</span><span class="n">plays</span><span class="p">)</span> <span class="c1"># define method for the player's outcome while passing in a parameter of type array</span>
|
159
159
|
<span class="k">return</span> <span class="ss">:WIN</span> <span class="k">if</span> <span class="no">Constants</span><span class="o">::</span><span class="no">WINNERS</span><span class="p">.</span><span class="nf">include?</span><span class="p">(</span><span class="n">plays</span><span class="p">)</span> <span class="c1"># return a win if the one of the sub-arrays in the winners array is called</span>
|
160
160
|
<span class="k">return</span> <span class="ss">:LOSE</span> <span class="k">if</span> <span class="no">Constants</span><span class="o">::</span><span class="no">LOSERS</span><span class="p">.</span><span class="nf">include?</span><span class="p">(</span><span class="n">plays</span><span class="p">)</span> <span class="c1"># return a loss if any of the mapped sub-arrays in the losers constant is present</span>
|
161
|
-
<span class="k">return</span> <span class="ss">:TIE</span> <span class="k">if</span> <span class="o">!</span><span class="ss">:WIN</span> <span class="o">|</span> <span class="o">!</span><span class="ss">:LOSE</span> <span class="c1"># return a tie if not (!) win or if not
|
161
|
+
<span class="k">return</span> <span class="ss">:TIE</span> <span class="k">if</span> <span class="o">!</span><span class="ss">:WIN</span> <span class="o">|</span> <span class="o">!</span><span class="ss">:LOSE</span> <span class="c1"># return a tie if not (!) win or if not lose</span>
|
162
162
|
<span class="k">end</span>
|
163
163
|
<span class="k">def</span> <span class="nf">final_outcome</span><span class="p">(</span><span class="n">pl</span><span class="p">,</span><span class="n">co</span><span class="p">)</span> <span class="c1"># define final outcome method</span>
|
164
164
|
<span class="k">return</span> <span class="ss">:WIN</span> <span class="k">if</span> <span class="n">pl</span> <span class="o">></span> <span class="n">co</span>
|
@@ -7,9 +7,9 @@
|
|
7
7
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
8
8
|
<meta name="theme-color" content="#157878">
|
9
9
|
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'>
|
10
|
-
<link rel="stylesheet" href="/assets/css/style.css?v=
|
11
|
-
<link rel="stylesheet" href="assets/css/pace.css" />
|
12
|
-
<script src="assets/js/pace.min.js"></script>
|
10
|
+
<link rel="stylesheet" href="/assets/css/style.css?v=a619aba449fd31773059e12d98817087fdec295e">
|
11
|
+
<link rel="stylesheet" href="/assets/css/pace.css" />
|
12
|
+
<script src="/assets/js/pace.min.js"></script>
|
13
13
|
</head>
|
14
14
|
<body>
|
15
15
|
<section class="page-header">
|
@@ -45,7 +45,7 @@
|
|
45
45
|
<ul>
|
46
46
|
<li><a href="#beginners-code-pros">Beginner’s Code Pros</a></li>
|
47
47
|
<li><a href="#beginners-code-cons">Beginner’s Code Cons</a></li>
|
48
|
-
<li><a href="#what-beginners-code-looks-
|
48
|
+
<li><a href="#what-beginners-code-looks-like">What Beginner’s Code Looks Like</a></li>
|
49
49
|
</ul>
|
50
50
|
</li>
|
51
51
|
<li><a href="#advanced-code">Advanced Code</a>
|
@@ -63,6 +63,7 @@
|
|
63
63
|
<h2 id="beginners-code">Beginner’s Code</h2>
|
64
64
|
|
65
65
|
<h3 id="beginners-code-pros">Beginner’s Code Pros</h3>
|
66
|
+
|
66
67
|
<ul>
|
67
68
|
<li>Simple</li>
|
68
69
|
<li>Easy to understand</li>
|
@@ -70,22 +71,22 @@
|
|
70
71
|
</ul>
|
71
72
|
|
72
73
|
<h3 id="beginners-code-cons">Beginner’s Code Cons</h3>
|
74
|
+
|
73
75
|
<ul>
|
74
76
|
<li>Unorganized</li>
|
75
77
|
<li>Lacks modularization</li>
|
76
78
|
<li>Many <code class="highlighter-rouge">if</code>s and <code class="highlighter-rouge">else</code>s</li>
|
77
79
|
</ul>
|
78
80
|
|
79
|
-
<h3 id="what-beginners-code-looks-
|
81
|
+
<h3 id="what-beginners-code-looks-like">What Beginner’s Code Looks Like</h3>
|
80
82
|
|
81
|
-
<p><strong><code class="highlighter-rouge">% ruby beginner.rb</code></strong></p>
|
83
|
+
<p><strong><code class="highlighter-rouge">% ruby beginner-rps.rb</code></strong></p>
|
82
84
|
|
83
85
|
<div class="language-ruby highlighter-rouge"><pre class="highlight"><code><span class="n">options</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"rock"</span><span class="p">,</span> <span class="s2">"paper"</span><span class="p">,</span> <span class="s2">"scissors"</span><span class="p">]</span>
|
84
86
|
<span class="n">computer_choice</span> <span class="o">=</span> <span class="n">options</span><span class="p">[</span><span class="nb">rand</span><span class="p">(</span><span class="n">options</span><span class="p">.</span><span class="nf">length</span><span class="p">)]</span>
|
85
|
-
<span class="c1"># the above line chooses a random pick in the options array, and the `options.length` means to choose from however many options there are in the `options` array</span>
|
86
87
|
<span class="nb">puts</span> <span class="s2">"What's your choice?"</span>
|
87
88
|
<span class="nb">puts</span> <span class="s2">"rock, paper, or scissors"</span>
|
88
|
-
<span class="n">user_input</span> <span class="o">=</span> <span class="nb">gets</span><span class="p">.</span><span class="nf">chomp</span><span class="p">.</span><span class="nf">downcase</span>
|
89
|
+
<span class="n">user_input</span> <span class="o">=</span> <span class="nb">gets</span><span class="p">.</span><span class="nf">chomp</span><span class="p">.</span><span class="nf">downcase</span>
|
89
90
|
<span class="kp">loop</span> <span class="k">do</span>
|
90
91
|
<span class="k">if</span> <span class="p">(</span><span class="n">user_input</span> <span class="o">==</span> <span class="s2">"rock"</span> <span class="o">||</span> <span class="n">user_input</span> <span class="o">==</span> <span class="s2">"paper"</span> <span class="o">||</span> <span class="n">user_input</span> <span class="o">==</span> <span class="s2">"scissors"</span><span class="p">)</span>
|
91
92
|
<span class="k">if</span> <span class="p">(</span><span class="n">user_input</span> <span class="o">==</span> <span class="n">computer_choice</span><span class="p">)</span>
|
@@ -102,16 +103,17 @@
|
|
102
103
|
<span class="nb">puts</span> <span class="s2">"computer choice is: "</span> <span class="o">+</span> <span class="n">computer_choice</span> <span class="o">+</span> <span class="s2">" ,computer wins :("</span>
|
103
104
|
<span class="k">elsif</span> <span class="p">(</span><span class="n">user_input</span> <span class="o">==</span> <span class="s2">"scissors"</span> <span class="o">&&</span> <span class="n">computer_choice</span> <span class="o">==</span> <span class="s2">"paper"</span><span class="p">)</span>
|
104
105
|
<span class="nb">puts</span> <span class="s2">"computer choice is: "</span> <span class="o">+</span> <span class="n">computer_choice</span> <span class="o">+</span> <span class="s2">" , you win! :)"</span>
|
106
|
+
<span class="k">else</span>
|
107
|
+
<span class="nb">puts</span> <span class="s2">"Invalid choice, enter Rock, Paper, or Scissors"</span>
|
108
|
+
<span class="nb">puts</span> <span class="s2">"What's your choice?"</span>
|
109
|
+
<span class="n">user_input</span> <span class="o">=</span> <span class="nb">gets</span><span class="p">.</span><span class="nf">chomp</span><span class="p">.</span><span class="nf">downcase</span>
|
105
110
|
<span class="k">end</span>
|
106
|
-
<span class="k">else</span>
|
107
|
-
<span class="nb">puts</span> <span class="s2">"Invalid choice, enter Rock, Paper, or Scissors"</span>
|
108
|
-
<span class="nb">puts</span> <span class="s2">"What's your choice?"</span>
|
109
|
-
<span class="n">user_input</span> <span class="o">=</span> <span class="nb">gets</span><span class="p">.</span><span class="nf">chomp</span><span class="p">.</span><span class="nf">downcase</span> <span class="c1"># have the user choose again</span>
|
110
111
|
<span class="k">end</span>
|
111
|
-
<span class="k">break</span>
|
112
|
+
<span class="k">break</span>
|
112
113
|
<span class="k">end</span>
|
113
114
|
</code></pre>
|
114
115
|
</div>
|
116
|
+
|
115
117
|
<h2 id="advanced-code">Advanced Code</h2>
|
116
118
|
|
117
119
|
<h3 id="advanced-code-pros">Advanced Code Pros</h3>
|
@@ -131,30 +133,29 @@
|
|
131
133
|
|
132
134
|
<h3 id="what-advanced-code-looks-like">What Advanced Code Looks Like</h3>
|
133
135
|
|
134
|
-
<p><strong><code class="highlighter-rouge">% ruby advanced.rb</code></strong></p>
|
136
|
+
<p><strong><code class="highlighter-rouge">% ruby advanced-rps.rb</code></strong></p>
|
135
137
|
|
136
|
-
<div class="language-ruby highlighter-rouge"><pre class="highlight"><code><span class="k">class</span> <span class="nc">PlayRockPaperScissorsGame</span>
|
138
|
+
<div class="language-ruby highlighter-rouge"><pre class="highlight"><code><span class="k">class</span> <span class="nc">PlayRockPaperScissorsGame</span>
|
137
139
|
|
138
|
-
<span class="c1">#
|
140
|
+
<span class="c1"># import colorize gem</span>
|
139
141
|
<span class="nb">require</span> <span class="s2">"colorized_string"</span>
|
140
|
-
<span class="no">ColorizedString</span><span class="p">.</span><span class="nf">colors</span> <span class="c1"># import colors
|
141
|
-
<span class="no">ColorizedString</span><span class="p">.</span><span class="nf">modes</span> <span class="c1"># import modes
|
142
|
+
<span class="no">ColorizedString</span><span class="p">.</span><span class="nf">colors</span> <span class="c1"># import colors</span>
|
143
|
+
<span class="no">ColorizedString</span><span class="p">.</span><span class="nf">modes</span> <span class="c1"># import modes (bold, etc...)</span>
|
142
144
|
|
143
145
|
<span class="k">module</span> <span class="nn">Constants</span>
|
144
|
-
<span class="no">NTRY_TO_SYM</span> <span class="o">=</span> <span class="p">{</span>
|
146
|
+
<span class="no">NTRY_TO_SYM</span> <span class="o">=</span> <span class="p">{</span>
|
145
147
|
<span class="s1">'p'</span> <span class="o">=></span> <span class="ss">:PAPER</span><span class="p">,</span>
|
146
148
|
<span class="s1">'r'</span> <span class="o">=></span> <span class="ss">:ROCK</span><span class="p">,</span>
|
147
149
|
<span class="s1">'s'</span> <span class="o">=></span> <span class="ss">:SCISSORS</span>
|
148
150
|
<span class="p">}</span>
|
149
|
-
<span class="no">VALID_ENTRIES</span> <span class="o">=</span> <span class="no">NTRY_TO_SYM</span><span class="p">.</span><span class="nf">keys</span>
|
150
|
-
<span class="no">COMPUTER_CHOICES</span> <span class="o">=</span> <span class="no">NTRY_TO_SYM</span><span class="p">.</span><span class="nf">values</span>
|
151
|
-
<span class="no">WINNERS</span> <span class="o">=</span> <span class="p">[</span>
|
152
|
-
<span class="c1"># format: player choice, computer choice</span>
|
151
|
+
<span class="no">VALID_ENTRIES</span> <span class="o">=</span> <span class="no">NTRY_TO_SYM</span><span class="p">.</span><span class="nf">keys</span>
|
152
|
+
<span class="no">COMPUTER_CHOICES</span> <span class="o">=</span> <span class="no">NTRY_TO_SYM</span><span class="p">.</span><span class="nf">values</span>
|
153
|
+
<span class="no">WINNERS</span> <span class="o">=</span> <span class="p">[</span>
|
153
154
|
<span class="p">[</span><span class="ss">:SCISSORS</span><span class="p">,</span> <span class="ss">:PAPER</span><span class="p">],</span>
|
154
155
|
<span class="p">[</span><span class="ss">:PAPER</span> <span class="p">,</span> <span class="ss">:ROCK</span><span class="p">],</span>
|
155
156
|
<span class="p">[</span><span class="ss">:ROCK</span> <span class="p">,</span> <span class="ss">:SCISSORS</span><span class="p">]</span>
|
156
157
|
<span class="p">]</span>
|
157
|
-
<span class="no">LOSERS</span> <span class="o">=</span> <span class="no">WINNERS</span><span class="p">.</span><span class="nf">map</span> <span class="p">{</span> <span class="o">|</span><span class="n">
|
158
|
+
<span class="no">LOSERS</span> <span class="o">=</span> <span class="no">WINNERS</span><span class="p">.</span><span class="nf">map</span> <span class="p">{</span> <span class="o">|</span><span class="n">player_choice</span><span class="p">,</span><span class="n">computer_choice</span><span class="o">|</span> <span class="p">[</span><span class="n">computer_choice</span><span class="p">,</span><span class="n">player_choice</span><span class="p">]</span> <span class="p">}</span> <span class="c1"># flip the values in the WINNERS array</span>
|
158
159
|
<span class="no">INIT_STRINGS</span> <span class="o">=</span> <span class="p">[</span>
|
159
160
|
<span class="no">ColorizedString</span><span class="p">[</span><span class="s2">"You are about to enter a rock-paper-scissors best of 3 match."</span><span class="p">].</span><span class="nf">colorize</span><span class="p">(</span><span class="ss">:green</span><span class="p">),</span>
|
160
161
|
<span class="no">ColorizedString</span><span class="p">[</span><span class="s2">"Press the return/enter key to continue..."</span><span class="p">].</span><span class="nf">colorize</span><span class="p">(</span><span class="ss">:green</span><span class="p">),</span>
|
@@ -162,46 +163,44 @@
|
|
162
163
|
<span class="p">]</span>
|
163
164
|
<span class="k">end</span>
|
164
165
|
|
165
|
-
<span class="nb">protected_methods</span> <span class="ss">:Constants</span> <span class="c1"># make
|
166
|
+
<span class="nb">protected_methods</span> <span class="ss">:Constants</span> <span class="c1"># make constants module protected</span>
|
166
167
|
|
167
|
-
<span class="k">class</span> <span class="o"><<</span> <span class="nb">self</span>
|
168
|
-
<span class="k">def</span> <span class="nf">continue</span><span class="p">(</span><span class="n">str1</span><span class="p">,</span><span class="n">str2</span><span class="p">,</span><span class="n">str3</span><span class="p">)</span>
|
169
|
-
<span class="nb">puts</span> <span class="
|
170
|
-
<span class="nb">print</span> <span class="
|
171
|
-
<span class="nb">gets</span>
|
168
|
+
<span class="k">class</span> <span class="o"><<</span> <span class="nb">self</span>
|
169
|
+
<span class="k">def</span> <span class="nf">continue</span><span class="p">(</span><span class="n">str1</span><span class="p">,</span><span class="n">str2</span><span class="p">,</span><span class="n">str3</span><span class="p">)</span>
|
170
|
+
<span class="nb">puts</span> <span class="n">str1</span>
|
171
|
+
<span class="nb">print</span> <span class="n">str2</span>
|
172
|
+
<span class="nb">gets</span>
|
172
173
|
<span class="nb">puts</span> <span class="n">str3</span>
|
173
174
|
<span class="k">end</span>
|
174
175
|
<span class="k">end</span>
|
175
176
|
|
176
|
-
<span class="n">continue</span><span class="p">(</span><span class="no">Constants</span><span class="o">::</span><span class="no">INIT_STRINGS</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="no">Constants</span><span class="o">::</span><span class="no">INIT_STRINGS</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="no">Constants</span><span class="o">::</span><span class="no">INIT_STRINGS</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
|
177
|
+
<span class="n">continue</span><span class="p">(</span><span class="no">Constants</span><span class="o">::</span><span class="no">INIT_STRINGS</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="no">Constants</span><span class="o">::</span><span class="no">INIT_STRINGS</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="no">Constants</span><span class="o">::</span><span class="no">INIT_STRINGS</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
|
177
178
|
|
178
|
-
<span class="k">def</span> <span class="nf">initialize</span>
|
179
|
+
<span class="k">def</span> <span class="nf">initialize</span>
|
179
180
|
<span class="vi">@player_score</span> <span class="o">=</span> <span class="vi">@computer_score</span> <span class="o">=</span> <span class="vi">@ties</span> <span class="o">=</span> <span class="mi">0</span>
|
180
181
|
<span class="k">end</span>
|
181
182
|
<span class="k">def</span> <span class="nf">play</span><span class="p">(</span><span class="n">winning_score</span><span class="p">)</span>
|
182
|
-
<span class="k">while</span> <span class="vi">@player_score</span> <span class="o"><</span> <span class="n">winning_score</span> <span class="o">&&</span> <span class="vi">@computer_score</span> <span class="o"><</span> <span class="n">winning_score</span>
|
183
|
+
<span class="k">while</span> <span class="vi">@player_score</span> <span class="o"><</span> <span class="n">winning_score</span> <span class="o">&&</span> <span class="vi">@computer_score</span> <span class="o"><</span> <span class="n">winning_score</span>
|
183
184
|
<span class="nb">puts</span> <span class="no">ColorizedString</span><span class="p">[</span><span class="s2">"Player score: </span><span class="si">#{</span><span class="vi">@player_score</span><span class="si">}</span><span class="s2">, "</span><span class="p">].</span><span class="nf">colorize</span><span class="p">(</span><span class="ss">:blue</span><span class="p">)</span> <span class="o">+</span>
|
184
185
|
<span class="no">ColorizedString</span><span class="p">[</span><span class="s2">"Computer score: </span><span class="si">#{</span><span class="vi">@computer_score</span><span class="si">}</span><span class="s2">, Ties: </span><span class="si">#{</span><span class="vi">@ties</span><span class="si">}</span><span class="s2">"</span><span class="p">].</span><span class="nf">colorize</span><span class="p">(</span><span class="ss">:blue</span><span class="p">)</span>
|
185
186
|
<span class="n">player</span> <span class="o">=</span> <span class="no">PrivateMethods</span><span class="p">.</span><span class="nf">player_choice</span>
|
186
|
-
<span class="n">computer</span> <span class="o">=</span> <span class="no">Constants</span><span class="o">::</span><span class="no">COMPUTER_CHOICES</span><span class="p">.</span><span class="nf">sample</span>
|
187
|
+
<span class="n">computer</span> <span class="o">=</span> <span class="no">Constants</span><span class="o">::</span><span class="no">COMPUTER_CHOICES</span><span class="p">.</span><span class="nf">sample</span>
|
187
188
|
<span class="nb">puts</span> <span class="no">ColorizedString</span><span class="p">[</span><span class="s2">"</span><span class="se">\n</span><span class="s2">Player chooses </span><span class="si">#{</span><span class="n">player</span><span class="p">.</span><span class="nf">to_s</span><span class="p">.</span><span class="nf">downcase</span><span class="si">}</span><span class="s2">"</span><span class="p">].</span><span class="nf">colorize</span><span class="p">(</span><span class="ss">:blue</span><span class="p">)</span>
|
188
189
|
<span class="nb">puts</span> <span class="no">ColorizedString</span><span class="p">[</span><span class="s2">"Computer chooses </span><span class="si">#{</span><span class="n">computer</span><span class="p">.</span><span class="nf">to_s</span><span class="p">.</span><span class="nf">downcase</span><span class="si">}</span><span class="s2">"</span><span class="p">].</span><span class="nf">colorize</span><span class="p">(</span><span class="ss">:blue</span><span class="p">)</span>
|
189
|
-
<span class="k">case</span> <span class="no">PrivateMethods</span><span class="p">.</span><span class="nf">player_outcome</span> <span class="p">[</span><span class="n">player</span><span class="p">,</span> <span class="n">computer</span><span class="p">]</span>
|
190
|
+
<span class="k">case</span> <span class="no">PrivateMethods</span><span class="p">.</span><span class="nf">player_outcome</span> <span class="p">[</span><span class="n">player</span><span class="p">,</span> <span class="n">computer</span><span class="p">]</span>
|
190
191
|
<span class="k">when</span> <span class="ss">:WIN</span>
|
191
192
|
<span class="nb">puts</span> <span class="no">ColorizedString</span><span class="p">[</span><span class="s2">"</span><span class="si">#{</span><span class="n">player</span><span class="p">.</span><span class="nf">to_s</span><span class="p">.</span><span class="nf">capitalize</span><span class="si">}</span><span class="s2"> beats </span><span class="si">#{</span><span class="n">computer</span><span class="p">.</span><span class="nf">to_s</span><span class="p">.</span><span class="nf">downcase</span><span class="si">}</span><span class="s2">, player wins the round"</span><span class="p">].</span><span class="nf">colorize</span><span class="p">(</span><span class="ss">:red</span><span class="p">)</span>
|
192
|
-
<span class="vi">@player_score</span> <span class="o">+=</span> <span class="mi">1</span>
|
193
|
+
<span class="vi">@player_score</span> <span class="o">+=</span> <span class="mi">1</span>
|
193
194
|
<span class="k">when</span> <span class="ss">:LOSE</span>
|
194
195
|
<span class="nb">puts</span> <span class="no">ColorizedString</span><span class="p">[</span><span class="s2">"</span><span class="si">#{</span><span class="n">computer</span><span class="p">.</span><span class="nf">to_s</span><span class="p">.</span><span class="nf">capitalize</span><span class="si">}</span><span class="s2"> beats </span><span class="si">#{</span><span class="n">player</span><span class="p">.</span><span class="nf">to_s</span><span class="p">.</span><span class="nf">downcase</span><span class="si">}</span><span class="s2">, computer wins the round"</span><span class="p">].</span><span class="nf">colorize</span><span class="p">(</span><span class="ss">:red</span><span class="p">)</span>
|
195
196
|
<span class="vi">@computer_score</span> <span class="o">+=</span> <span class="mi">1</span>
|
196
|
-
<span class="k">else</span>
|
197
|
+
<span class="k">else</span>
|
197
198
|
<span class="nb">puts</span> <span class="no">ColorizedString</span><span class="p">[</span><span class="s2">"Tie, choose again"</span><span class="p">].</span><span class="nf">colorize</span><span class="p">(</span><span class="ss">:red</span><span class="p">)</span>
|
198
199
|
<span class="vi">@ties</span> <span class="o">+=</span> <span class="mi">1</span>
|
199
|
-
<span class="c1"># since tie is not in the original pass-in argument for the while loop, it will not be affected by the winning score</span>
|
200
200
|
<span class="k">end</span>
|
201
201
|
<span class="k">end</span>
|
202
202
|
<span class="nb">puts</span> <span class="no">ColorizedString</span><span class="p">[</span><span class="s2">"</span><span class="se">\n</span><span class="s2">Final score: player: </span><span class="si">#{</span><span class="vi">@player_score</span><span class="si">}</span><span class="s2">, "</span><span class="p">].</span><span class="nf">colorize</span><span class="p">(</span><span class="ss">:blue</span><span class="p">)</span> <span class="o">+</span>
|
203
203
|
<span class="no">ColorizedString</span><span class="p">[</span><span class="s2">"computer: </span><span class="si">#{</span><span class="vi">@computer_score</span><span class="si">}</span><span class="s2"> (ties: </span><span class="si">#{</span><span class="vi">@ties</span><span class="si">}</span><span class="s2">)"</span><span class="p">].</span><span class="nf">colorize</span><span class="p">(</span><span class="ss">:blue</span><span class="p">)</span>
|
204
|
-
<span class="c1"># define a case for the final outcomes </span>
|
205
204
|
<span class="k">case</span> <span class="no">PrivateMethods</span><span class="p">.</span><span class="nf">final_outcome</span><span class="p">(</span><span class="vi">@player_score</span><span class="p">,</span> <span class="vi">@computer_score</span><span class="p">)</span>
|
206
205
|
<span class="k">when</span> <span class="ss">:WIN</span>
|
207
206
|
<span class="nb">puts</span> <span class="no">ColorizedString</span><span class="p">[</span><span class="s2">"Player wins!"</span><span class="p">].</span><span class="nf">colorize</span><span class="p">(</span><span class="ss">:red</span><span class="p">)</span>
|
@@ -214,44 +213,36 @@
|
|
214
213
|
<span class="k">end</span>
|
215
214
|
|
216
215
|
<span class="k">module</span> <span class="nn">PrivateMethods</span>
|
217
|
-
<span class="k">class</span> <span class="o"><<</span> <span class="nb">self</span>
|
216
|
+
<span class="k">class</span> <span class="o"><<</span> <span class="nb">self</span>
|
218
217
|
<span class="k">def</span> <span class="nf">player_choice</span>
|
219
|
-
<span class="kp">loop</span> <span class="k">do</span>
|
218
|
+
<span class="kp">loop</span> <span class="k">do</span>
|
220
219
|
<span class="nb">print</span> <span class="no">ColorizedString</span><span class="p">[</span><span class="s2">"Choose rock (r), paper (p) or scissors (s): "</span><span class="p">].</span><span class="nf">colorize</span><span class="p">(</span><span class="ss">:green</span><span class="p">)</span>
|
221
|
-
<span class="n">choice</span> <span class="o">=</span> <span class="nb">gets</span><span class="p">.</span><span class="nf">chomp</span><span class="p">.</span><span class="nf">downcase</span>
|
222
|
-
<span class="
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
<span class="nb">puts</span> <span class="no">ColorizedString</span><span class="p">[</span><span class="s2">"That entry is invalid. Please re-enter."</span><span class="p">].</span><span class="nf">colorize</span><span class="p">(</span><span class="ss">:red</span><span class="p">)</span> <span class="c1"># return an error message</span>
|
220
|
+
<span class="n">choice</span> <span class="o">=</span> <span class="nb">gets</span><span class="p">.</span><span class="nf">chomp</span><span class="p">.</span><span class="nf">downcase</span>
|
221
|
+
<span class="k">if</span> <span class="no">Constants</span><span class="o">::</span><span class="no">NTRY_TO_SYM</span><span class="p">.</span><span class="nf">key?</span><span class="p">(</span><span class="n">choice</span><span class="p">)</span>
|
222
|
+
<span class="k">return</span> <span class="no">Constants</span><span class="o">::</span><span class="no">NTRY_TO_SYM</span><span class="p">[</span><span class="n">choice</span><span class="p">]</span>
|
223
|
+
<span class="k">elsif</span> <span class="n">choice</span> <span class="o">!=</span> <span class="no">Constants</span><span class="o">::</span><span class="no">VALID_ENTRIES</span>
|
224
|
+
<span class="nb">puts</span> <span class="no">ColorizedString</span><span class="p">[</span><span class="s2">"That entry is invalid. Please re-enter."</span><span class="p">].</span><span class="nf">colorize</span><span class="p">(</span><span class="ss">:red</span><span class="p">)</span>
|
227
225
|
<span class="k">end</span>
|
228
|
-
<span class="c1"># # one may also do this (albeit more useless):</span>
|
229
|
-
<span class="c1"># case</span>
|
230
|
-
<span class="c1"># when Constants::NTRY_TO_SYM.key?(choice)</span>
|
231
|
-
<span class="c1"># return Constants::NTRY_TO_SYM[choice]</span>
|
232
|
-
<span class="c1"># when choice != Constants::VALID_ENTRIES</span>
|
233
|
-
<span class="c1"># puts ColorizedString["That entry is invalid. Please re-enter."].colorize(:green) </span>
|
234
|
-
<span class="c1"># end</span>
|
235
226
|
<span class="k">end</span>
|
236
227
|
<span class="k">end</span>
|
237
|
-
<span class="k">def</span> <span class="nf">player_outcome</span><span class="p">(</span><span class="n">plays</span><span class="p">)</span>
|
238
|
-
<span class="k">return</span> <span class="ss">:WIN</span> <span class="k">if</span> <span class="no">Constants</span><span class="o">::</span><span class="no">WINNERS</span><span class="p">.</span><span class="nf">include?</span><span class="p">(</span><span class="n">plays</span><span class="p">)</span>
|
239
|
-
<span class="k">return</span> <span class="ss">:LOSE</span> <span class="k">if</span> <span class="no">Constants</span><span class="o">::</span><span class="no">LOSERS</span><span class="p">.</span><span class="nf">include?</span><span class="p">(</span><span class="n">plays</span><span class="p">)</span>
|
240
|
-
<span class="k">return</span> <span class="ss">:TIE</span> <span class="k">if</span> <span class="o">!</span><span class="ss">:WIN</span> <span class="o">|</span> <span class="o">!</span><span class="ss">:LOSE</span>
|
228
|
+
<span class="k">def</span> <span class="nf">player_outcome</span><span class="p">(</span><span class="n">plays</span><span class="p">)</span>
|
229
|
+
<span class="k">return</span> <span class="ss">:WIN</span> <span class="k">if</span> <span class="no">Constants</span><span class="o">::</span><span class="no">WINNERS</span><span class="p">.</span><span class="nf">include?</span><span class="p">(</span><span class="n">plays</span><span class="p">)</span>
|
230
|
+
<span class="k">return</span> <span class="ss">:LOSE</span> <span class="k">if</span> <span class="no">Constants</span><span class="o">::</span><span class="no">LOSERS</span><span class="p">.</span><span class="nf">include?</span><span class="p">(</span><span class="n">plays</span><span class="p">)</span>
|
231
|
+
<span class="k">return</span> <span class="ss">:TIE</span> <span class="k">if</span> <span class="o">!</span><span class="ss">:WIN</span> <span class="o">|</span> <span class="o">!</span><span class="ss">:LOSE</span>
|
241
232
|
<span class="k">end</span>
|
242
|
-
<span class="k">def</span> <span class="nf">final_outcome</span><span class="p">(</span><span class="n">pl</span><span class="p">,</span><span class="n">co</span><span class="p">)</span>
|
233
|
+
<span class="k">def</span> <span class="nf">final_outcome</span><span class="p">(</span><span class="n">pl</span><span class="p">,</span><span class="n">co</span><span class="p">)</span>
|
243
234
|
<span class="k">return</span> <span class="ss">:WIN</span> <span class="k">if</span> <span class="n">pl</span> <span class="o">></span> <span class="n">co</span>
|
244
235
|
<span class="k">return</span> <span class="ss">:LOSE</span> <span class="k">if</span> <span class="n">pl</span> <span class="o"><</span> <span class="n">co</span>
|
245
|
-
<span class="k">return</span> <span class="ss">:TIE</span> <span class="k">if</span> <span class="n">pl</span> <span class="o">=</span> <span class="n">co</span> <span class="c1"># this
|
236
|
+
<span class="k">return</span> <span class="ss">:TIE</span> <span class="k">if</span> <span class="n">pl</span> <span class="o">=</span> <span class="n">co</span> <span class="c1"># this could never happen due to the code in the play method; however, it is worth noting</span>
|
246
237
|
<span class="k">end</span>
|
247
238
|
<span class="k">end</span>
|
248
239
|
<span class="k">end</span>
|
249
240
|
|
250
|
-
<span class="nb">private_methods</span> <span class="ss">:PrivateMethods</span>
|
241
|
+
<span class="nb">private_methods</span> <span class="ss">:PrivateMethods</span>
|
251
242
|
|
252
243
|
<span class="k">end</span>
|
253
244
|
|
254
|
-
<span class="no">PlayRockPaperScissorsGame</span><span class="p">.</span><span class="nf">new</span><span class="p">.</span><span class="nf">play</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
|
245
|
+
<span class="no">PlayRockPaperScissorsGame</span><span class="p">.</span><span class="nf">new</span><span class="p">.</span><span class="nf">play</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
|
255
246
|
</code></pre>
|
256
247
|
</div>
|
257
248
|
|
@@ -7,9 +7,9 @@
|
|
7
7
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
8
8
|
<meta name="theme-color" content="#157878">
|
9
9
|
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'>
|
10
|
-
<link rel="stylesheet" href="/assets/css/style.css?v=
|
11
|
-
<link rel="stylesheet" href="assets/css/pace.css" />
|
12
|
-
<script src="assets/js/pace.min.js"></script>
|
10
|
+
<link rel="stylesheet" href="/assets/css/style.css?v=a619aba449fd31773059e12d98817087fdec295e">
|
11
|
+
<link rel="stylesheet" href="/assets/css/pace.css" />
|
12
|
+
<script src="/assets/js/pace.min.js"></script>
|
13
13
|
</head>
|
14
14
|
<body>
|
15
15
|
<section class="page-header">
|
data/docs/_site/Testing.html
CHANGED
@@ -7,9 +7,9 @@
|
|
7
7
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
8
8
|
<meta name="theme-color" content="#157878">
|
9
9
|
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'>
|
10
|
-
<link rel="stylesheet" href="/assets/css/style.css?v=
|
11
|
-
<link rel="stylesheet" href="assets/css/pace.css" />
|
12
|
-
<script src="assets/js/pace.min.js"></script>
|
10
|
+
<link rel="stylesheet" href="/assets/css/style.css?v=a619aba449fd31773059e12d98817087fdec295e">
|
11
|
+
<link rel="stylesheet" href="/assets/css/pace.css" />
|
12
|
+
<script src="/assets/js/pace.min.js"></script>
|
13
13
|
</head>
|
14
14
|
<body>
|
15
15
|
<section class="page-header">
|
data/docs/_site/index.html
CHANGED
@@ -7,9 +7,9 @@
|
|
7
7
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
8
8
|
<meta name="theme-color" content="#157878">
|
9
9
|
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'>
|
10
|
-
<link rel="stylesheet" href="/assets/css/style.css?v=
|
11
|
-
<link rel="stylesheet" href="assets/css/pace.css" />
|
12
|
-
<script src="assets/js/pace.min.js"></script>
|
10
|
+
<link rel="stylesheet" href="/assets/css/style.css?v=a619aba449fd31773059e12d98817087fdec295e">
|
11
|
+
<link rel="stylesheet" href="/assets/css/pace.css" />
|
12
|
+
<script src="/assets/js/pace.min.js"></script>
|
13
13
|
</head>
|
14
14
|
<body>
|
15
15
|
<section class="page-header">
|
data/lib/rps/version.rb
CHANGED
data/rps.gemspec
CHANGED
data/test/test_rps.rb
CHANGED
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
metadata.gz.sig
CHANGED
Binary file
|