PlayRockPaperScissorsGame 2.4.5 → 2.4.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml 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