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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f6d3f456481168045ae2133a56134fb160452878
4
- data.tar.gz: 4cbf42f75645e25b7d46e9dfe0cc9625f757c687
3
+ metadata.gz: 1ff4f5604e96223fb57fa294a054b41440482682
4
+ data.tar.gz: 9f1a60be06652f272b04664f2eafad5def5b28d5
5
5
  SHA512:
6
- metadata.gz: 0f6e1bd7df78a492b71dd5fde1b449bf08be9b98ff82e921cbb6a81c146bc0534e4207e06c36e73163a9f7bfd5633188a45175b71eb29915d69f683992367aa0
7
- data.tar.gz: 766d74e6fd4b39b4bc0e1360a68a3b0c70dc9ed55fea9b24aa44bb67d4531760b8da43ec6c2c80804f28c22016fb025b15981ad648054726d3fa428cbf2e6708
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 ColorizedString[str1].colorize(:color => :green) # make string output green text
27
- print ColorizedString[str2].colorize(:color => :green)
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) # pass in 3 parameters
27
- puts ColorizedString[str1].colorize(:color => :green)
28
- print ColorizedString[str2].colorize(:color => :green)
29
- gets # press enter or return to continue
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.5" # define version constant
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 { |pc,cc| [cc,pc] } # this will take the original WINNERS array and flip the symbols, thus returning a loss for the user/player
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 ColorizedString[str1].colorize(:color => :green)
66
- print ColorizedString[str2].colorize(:color => :green)
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 loose
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
@@ -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 :ike](#what-beginners-code-looks-ike)
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 :ike
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 # `gets.chomp` reads user input, .downcase is like `.toLowerCase()` in javascript
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 # break the loop after all the above has been completed
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 # define master class
103
+ class PlayRockPaperScissorsGame
99
104
 
100
- # intiate the colorize gem
105
+ # import colorize gem
101
106
  require "colorized_string"
102
- ColorizedString.colors # import colors; ex: red, green, blue
103
- ColorizedString.modes # import modes; ex: bold, italic, underline
107
+ ColorizedString.colors # import colors
108
+ ColorizedString.modes # import modes (bold, etc...)
104
109
 
105
110
  module Constants
106
- NTRY_TO_SYM = { # define constants from an entry to a symbol class
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 # create valid entries
112
- COMPUTER_CHOICES = NTRY_TO_SYM.values # define computer choices
113
- WINNERS = [ # define 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 { |pc,cc| [cc,pc] } # this will take the original WINNERS array and flip the symbols, thus returning a loss for the user/player
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 the constants module protected
131
+ protected_methods :Constants # make constants module protected
128
132
 
129
- class << self # define a self calling method within the parent class
130
- def continue(str1,str2,str3) # pass in 3 parameters
131
- puts ColorizedString[str1].colorize(:color => :green)
132
- print ColorizedString[str2].colorize(:color => :green)
133
- gets # press enter or return to continue
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]) # call continue method
142
+ continue(Constants::INIT_STRINGS[0], Constants::INIT_STRINGS[1], Constants::INIT_STRINGS[2])
139
143
 
140
- def initialize # initialize variables
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 # both the computer's score and the player's score have to be less than the value passed in for the winning score at the end
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 # chooses a "random" option
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] # define a reference call for player and computer for the arrays called in the player_outcome method
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 # @player_score = @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 # since there is only 1 option left, there is no need to define when :TIE
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 # make all methods below self calling methods of this class (PlayRockPaperScissorsGame) so that the other methods will not to call their parents of these methods
181
+ class << self
180
182
  def player_choice
181
- loop do # for loop with no arguments passed in
183
+ loop do
182
184
  print ColorizedString["Choose rock (r), paper (p) or scissors (s): "].colorize(:green)
183
- choice = gets.chomp.downcase # read user input and convert all to lower case
184
- # define valid and invalid entries by using an if else-if statement(s)
185
- if Constants::NTRY_TO_SYM.key?(choice) # if the NTRY_TO_SYM array's key is one of the keys defined in the original array
186
- return Constants::NTRY_TO_SYM[choice] # return the users choice
187
- elsif choice != Constants::VALID_ENTRIES # else if it is not one of the valid entries...
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) # define method for the player's outcome while passing in a parameter of type array
200
- return :WIN if Constants::WINNERS.include?(plays) # return a win if the one of the sub-arrays in the winners array is called
201
- return :LOSE if Constants::LOSERS.include?(plays) # return a loss if any of the mapped sub-arrays in the losers constant is present
202
- return :TIE if !:WIN | !:LOSE # return a tie if not (!) win or if not loose
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) # define final outcome method
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 can never happen due to the code in the play method, but it is worth noting
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 # make the PrivateMethods module private
206
+ private_methods :PrivateMethods
213
207
 
214
208
  end
215
209
 
216
- PlayRockPaperScissorsGame.new.play(2) # call the play method and pass in 3 (0, 1, 2) for the winning score
210
+ PlayRockPaperScissorsGame.new.play(2)
217
211
  ```
218
212
  [//]: # (end ruby)
219
213
 
data/docs/_config.yml CHANGED
@@ -11,4 +11,6 @@ exclude: [
11
11
  LICENSE
12
12
  ]
13
13
  include:
14
- - index.md
14
+ - index.md
15
+ - Code.md
16
+ - Comparing_Code.md
@@ -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=b6dce77cfbf038800279b1f621a6690f834078a8">
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=b6dce77cfbf038800279b1f621a6690f834078a8">
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=b6dce77cfbf038800279b1f621a6690f834078a8">
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.5"</span> <span class="c1"># define version constant</span>
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">pc</span><span class="p">,</span><span class="n">cc</span><span class="o">|</span> <span class="p">[</span><span class="n">cc</span><span class="p">,</span><span class="n">pc</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>
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">&lt;&lt;</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="no">ColorizedString</span><span class="p">[</span><span class="n">str1</span><span class="p">].</span><span class="nf">colorize</span><span class="p">(</span><span class="ss">:color</span> <span class="o">=&gt;</span> <span class="ss">:green</span><span class="p">)</span>
91
- <span class="nb">print</span> <span class="no">ColorizedString</span><span class="p">[</span><span class="n">str2</span><span class="p">].</span><span class="nf">colorize</span><span class="p">(</span><span class="ss">:color</span> <span class="o">=&gt;</span> <span class="ss">:green</span><span class="p">)</span>
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 loose</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 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">&gt;</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=b6dce77cfbf038800279b1f621a6690f834078a8">
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-ike">What Beginner’s Code Looks :ike</a></li>
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-ike">What Beginner’s Code Looks :ike</h3>
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> <span class="c1"># `gets.chomp` reads user input, .downcase is like `.toLowerCase()` in javascript</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">&amp;&amp;</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> <span class="c1"># break the loop after all the above has been completed</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> <span class="c1"># define master class</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"># intiate the colorize gem</span>
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; ex: red, green, blue</span>
141
- <span class="no">ColorizedString</span><span class="p">.</span><span class="nf">modes</span> <span class="c1"># import modes; ex: bold, italic, underline</span>
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> <span class="c1"># define constants from an entry to a symbol class</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">=&gt;</span> <span class="ss">:PAPER</span><span class="p">,</span>
146
148
  <span class="s1">'r'</span> <span class="o">=&gt;</span> <span class="ss">:ROCK</span><span class="p">,</span>
147
149
  <span class="s1">'s'</span> <span class="o">=&gt;</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> <span class="c1"># create valid entries</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> <span class="c1"># define computer choices</span>
151
- <span class="no">WINNERS</span> <span class="o">=</span> <span class="p">[</span> <span class="c1"># define winners</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">pc</span><span class="p">,</span><span class="n">cc</span><span class="o">|</span> <span class="p">[</span><span class="n">cc</span><span class="p">,</span><span class="n">pc</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>
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 the constants module protected</span>
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">&lt;&lt;</span> <span class="nb">self</span> <span class="c1"># define a self calling method within the parent class</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> <span class="c1"># pass in 3 parameters</span>
169
- <span class="nb">puts</span> <span class="no">ColorizedString</span><span class="p">[</span><span class="n">str1</span><span class="p">].</span><span class="nf">colorize</span><span class="p">(</span><span class="ss">:color</span> <span class="o">=&gt;</span> <span class="ss">:green</span><span class="p">)</span>
170
- <span class="nb">print</span> <span class="no">ColorizedString</span><span class="p">[</span><span class="n">str2</span><span class="p">].</span><span class="nf">colorize</span><span class="p">(</span><span class="ss">:color</span> <span class="o">=&gt;</span> <span class="ss">:green</span><span class="p">)</span>
171
- <span class="nb">gets</span> <span class="c1"># press enter or return to continue</span>
168
+ <span class="k">class</span> <span class="o">&lt;&lt;</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> <span class="c1"># call continue method</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> <span class="c1"># initialize variables</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">&lt;</span> <span class="n">winning_score</span> <span class="o">&amp;&amp;</span> <span class="vi">@computer_score</span> <span class="o">&lt;</span> <span class="n">winning_score</span> <span class="c1"># both the computer's score and the player's score have to be less than the value passed in for the winning score at the end</span>
183
+ <span class="k">while</span> <span class="vi">@player_score</span> <span class="o">&lt;</span> <span class="n">winning_score</span> <span class="o">&amp;&amp;</span> <span class="vi">@computer_score</span> <span class="o">&lt;</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> <span class="c1"># chooses a "random" option</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> <span class="c1"># define a reference call for player and computer for the arrays called in the player_outcome method</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> <span class="c1"># @player_score = @player_score + 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> <span class="c1"># since there is only 1 option left, there is no need to define when :TIE</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">&lt;&lt;</span> <span class="nb">self</span> <span class="c1"># make all methods below self calling methods of this class (PlayRockPaperScissorsGame) so that the other methods will not to call their parents of these methods</span>
216
+ <span class="k">class</span> <span class="o">&lt;&lt;</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> <span class="c1"># for loop with no arguments passed in</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> <span class="c1"># read user input and convert all to lower case</span>
222
- <span class="c1"># define valid and invalid entries by using an if else-if statement(s)</span>
223
- <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> <span class="c1"># if the NTRY_TO_SYM array's key is one of the keys defined in the original array</span>
224
- <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> <span class="c1"># return the users choice</span>
225
- <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> <span class="c1"># else if it is not one of the valid entries...</span>
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> <span class="c1"># define method for the player's outcome while passing in a parameter of type array</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> <span class="c1"># return a win if the one of the sub-arrays in the winners array is called</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> <span class="c1"># return a loss if any of the mapped sub-arrays in the losers constant is present</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> <span class="c1"># return a tie if not (!) win or if not loose</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> <span class="c1"># define final outcome method</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">&gt;</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">&lt;</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 can never happen due to the code in the play method, but it is worth noting</span>
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> <span class="c1"># make the PrivateMethods module private</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> <span class="c1"># call the play method and pass in 3 (0, 1, 2) for the winning score</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=b6dce77cfbf038800279b1f621a6690f834078a8">
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=b6dce77cfbf038800279b1f621a6690f834078a8">
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=b6dce77cfbf038800279b1f621a6690f834078a8">
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
@@ -1,3 +1,3 @@
1
1
  module RockPaperScissors
2
- VERSION = "2.4.5"
2
+ VERSION = "2.4.6"
3
3
  end
data/rps.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "PlayRockPaperScissorsGame"
3
- spec.version = "2.4.5"
3
+ spec.version = "2.4.6"
4
4
  spec.date = "2017-04-07"
5
5
  spec.summary = "A Rock Paper Scissors Ruby Gem"
6
6
  spec.description = <<-EOF
data/test/test_rps.rb CHANGED
@@ -19,8 +19,8 @@ class RakeTest # create test
19
19
 
20
20
  class << self
21
21
  def continue(str1,str2,str3)
22
- puts ColorizedString[str1].colorize(:color => :green)
23
- print ColorizedString[str2].colorize(:color => :green)
22
+ puts str1
23
+ print str2
24
24
  gets
25
25
  puts str3
26
26
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: PlayRockPaperScissorsGame
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.5
4
+ version: 2.4.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - bag3318
metadata.gz.sig CHANGED
Binary file