PlayRockPaperScissorsGame 2.4.5 → 2.4.6
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
- 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
|