rpsg 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +18 -0
- data/Gemfile +11 -0
- data/bin/rps +79 -0
- data/lib/Constants.rb +25 -0
- data/lib/PrivateMethods.rb +38 -0
- data/lib/rps/version.rb +3 -0
- data/rps.gemspec +38 -0
- metadata +124 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d26c0989b008812930a3ab5c7027ba652189f634
|
4
|
+
data.tar.gz: 064c018f14b004e92a2144bf17f28ee28c91e12e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: dbc27036fc1116bd615b160a9966c634da38f01c78a9fc07f3dcc546315a3f8aab56ce70764be4aa049d5a79aac50ffab9bbbd69c0f920c8d67af5ec49dcb56c
|
7
|
+
data.tar.gz: 97706cdc2a9ba278985239d01035a34f199ca6f8d702006c264215820f5ff4ce796189c4cb813da26985bf1c26fd93a0033f22924ddca61c7057982e15a05606
|
data/.gitignore
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
*.DS_Store
|
2
|
+
*.gem
|
3
|
+
*Gemfile.lock
|
4
|
+
*.sublime-project
|
5
|
+
*.sublime-workspace
|
6
|
+
*.jekyll-metadata
|
7
|
+
*.ste
|
8
|
+
*other langs
|
9
|
+
*RPS.rb
|
10
|
+
*RPS_RAW.rb
|
11
|
+
*rps.py
|
12
|
+
*bg.py
|
13
|
+
# _site
|
14
|
+
# .sass-cache
|
15
|
+
|
16
|
+
# If gitignore is not working:
|
17
|
+
# try this:
|
18
|
+
# git rm -rf --cached .
|
data/Gemfile
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
platform :ruby do
|
3
|
+
gemspec
|
4
|
+
group :test do
|
5
|
+
gem 'bundler' , '~> 1.14.6' , :require => true
|
6
|
+
gem 'colorize', '~> 0.8.1' , :require => true
|
7
|
+
gem 'rake' , '~> 12.0.0' , :require => true
|
8
|
+
gem 'rdoc' , '~> 5.1.0' , :require => true
|
9
|
+
gem 'rvm' , '~> 1.11.3.9', :require => true
|
10
|
+
end
|
11
|
+
end
|
data/bin/rps
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
=begin
|
4
|
+
|====================================|
|
5
|
+
| Req Ruby Ver | Req Ruby Gems Ver |
|
6
|
+
|--------------|---------------------|
|
7
|
+
| >= v2.0.0 | >= v2.6.0 |
|
8
|
+
|====================================|
|
9
|
+
=end
|
10
|
+
|
11
|
+
|
12
|
+
class RPS
|
13
|
+
|
14
|
+
require_relative "./../lib/rps/version.rb"
|
15
|
+
|
16
|
+
# intiate the colorize gem
|
17
|
+
require "colorized_string"
|
18
|
+
ColorizedString.colors
|
19
|
+
ColorizedString.modes
|
20
|
+
|
21
|
+
require_relative "./../lib/Constants.rb"
|
22
|
+
|
23
|
+
protected_methods :Constants
|
24
|
+
|
25
|
+
class << self
|
26
|
+
def continue(str1,str2,str3)
|
27
|
+
puts str1
|
28
|
+
print str2
|
29
|
+
gets
|
30
|
+
puts str3
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
continue(Constants::INIT_STRINGS[0], Constants::INIT_STRINGS[1], Constants::INIT_STRINGS[2])
|
35
|
+
|
36
|
+
def initialize
|
37
|
+
@player_score = @computer_score = @ties = 0
|
38
|
+
end
|
39
|
+
|
40
|
+
def play(winning_score)
|
41
|
+
while @player_score < winning_score && @computer_score < winning_score
|
42
|
+
puts ColorizedString["Player score: #{@player_score}, "].colorize(:blue) +
|
43
|
+
ColorizedString["Computer score: #{@computer_score}, Ties: #{@ties}."].colorize(:blue)
|
44
|
+
player = PrivateMethods.player_choice
|
45
|
+
computer = Constants::COMPUTER_CHOICES.sample # chooses a random option
|
46
|
+
puts ColorizedString["\nPlayer chooses #{player.to_s.downcase}."].colorize(:blue)
|
47
|
+
puts ColorizedString["Computer chooses #{computer.to_s.downcase}."].colorize(:blue)
|
48
|
+
case PrivateMethods.player_outcome [player, computer]
|
49
|
+
when :WIN
|
50
|
+
puts ColorizedString["#{player.to_s.capitalize} beats #{computer.to_s.downcase}, player wins the round."].colorize(:red)
|
51
|
+
@player_score += 1
|
52
|
+
when :LOSE
|
53
|
+
puts ColorizedString["#{computer.to_s.capitalize} beats #{player.to_s.downcase}, computer wins the round."].colorize(:red)
|
54
|
+
@computer_score += 1
|
55
|
+
else
|
56
|
+
puts ColorizedString["Tie, choose again"].colorize(:red)
|
57
|
+
@ties += 1
|
58
|
+
end
|
59
|
+
end
|
60
|
+
puts ColorizedString["\nFinal score: player: #{@player_score}, "].colorize(:blue) +
|
61
|
+
ColorizedString["computer: #{@computer_score} (ties: #{@ties})."].colorize(:blue)
|
62
|
+
case PrivateMethods.final_outcome(@player_score, @computer_score)
|
63
|
+
when :WIN
|
64
|
+
puts ColorizedString["Player wins!"].colorize(:red)
|
65
|
+
when :LOSE
|
66
|
+
puts ColorizedString["Computer wins!"].colorize(:red)
|
67
|
+
else
|
68
|
+
puts ColorizedString["It's a tie!"].colorize(:red)
|
69
|
+
end
|
70
|
+
gets
|
71
|
+
end
|
72
|
+
|
73
|
+
require_relative "./../lib/PrivateMethods.rb"
|
74
|
+
|
75
|
+
private_methods :PrivateMethods
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
RPS.new.play(3) # best of 3
|
data/lib/Constants.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require "colorized_string"
|
2
|
+
ColorizedString.colors
|
3
|
+
ColorizedString.modes
|
4
|
+
module Constants
|
5
|
+
CHOICES = [['r', 'rock'], ['p', 'paper'], ['s', 'scissors']]
|
6
|
+
NTRY_TO_SYM = { # define entry to symbol (key to value)
|
7
|
+
CHOICES[0][0] => :ROCK , CHOICES[0][1] => :ROCK ,
|
8
|
+
CHOICES[1][0] => :PAPER , CHOICES[1][1] => :PAPER ,
|
9
|
+
CHOICES[2][0] => :SCISSORS, CHOICES[2][1] => :SCISSORS
|
10
|
+
}
|
11
|
+
VALID_ENTRIES = NTRY_TO_SYM.keys # create valid entries
|
12
|
+
COMPUTER_CHOICES = NTRY_TO_SYM.values # define computer choices
|
13
|
+
WINNERS = [
|
14
|
+
# format: player choice, computer choice
|
15
|
+
[:SCISSORS, :PAPER ],
|
16
|
+
[:PAPER , :ROCK ],
|
17
|
+
[:ROCK , :SCISSORS]
|
18
|
+
]
|
19
|
+
LOSERS = WINNERS.map { |winning_choice,losing_choice| [losing_choice,winning_choice] } # this will take the original WINNERS array and flip the symbols, thus returning a loss for the user/player
|
20
|
+
INIT_STRINGS = [
|
21
|
+
ColorizedString["You are about to enter a rock-paper-scissors best of 3 match."].colorize(:green),
|
22
|
+
ColorizedString["Press the return/enter key to continue..."].colorize(:green),
|
23
|
+
""
|
24
|
+
]
|
25
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require "colorized_string"
|
2
|
+
ColorizedString.colors
|
3
|
+
ColorizedString.modes
|
4
|
+
module PrivateMethods
|
5
|
+
class << self
|
6
|
+
def player_choice
|
7
|
+
loop do
|
8
|
+
print ColorizedString["Choose: Rock (r), Paper (p), or Scissors (s): "].colorize(:green)
|
9
|
+
choice = gets.chomp.downcase
|
10
|
+
if Constants::NTRY_TO_SYM.key?(choice)
|
11
|
+
return Constants::NTRY_TO_SYM[choice]
|
12
|
+
elsif choice != Constants::VALID_ENTRIES
|
13
|
+
puts ColorizedString["That entry is invalid. Please re-enter."].colorize(:red)
|
14
|
+
else
|
15
|
+
return nil
|
16
|
+
end
|
17
|
+
# # one may also do this:
|
18
|
+
# case
|
19
|
+
# when Constants::NTRY_TO_SYM.key?(choice)
|
20
|
+
# return Constants::NTRY_TO_SYM[choice]
|
21
|
+
# when choice != Constants::VALID_ENTRIES
|
22
|
+
# puts ColorizedString["That entry is invalid. Please re-enter."].colorize(:green)
|
23
|
+
# end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
def player_outcome(plays)
|
27
|
+
return :WIN if Constants::WINNERS.include?(plays)
|
28
|
+
return :LOSE if Constants::LOSERS.include?(plays)
|
29
|
+
return :TIE if !:WIN | !:LOSE
|
30
|
+
end
|
31
|
+
def final_outcome(pl,co)
|
32
|
+
return :WIN if pl > co
|
33
|
+
return :LOSE if pl < co
|
34
|
+
# return :TIE if pl = co
|
35
|
+
# there will never be a tie for the final outcome due to the code in the play() method
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/rps/version.rb
ADDED
data/rps.gemspec
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
Gem::Specification.new do |spec|
|
2
|
+
spec.name = "rpsg"
|
3
|
+
spec.version = "0.0.1"
|
4
|
+
spec.date = "2017-10-10"
|
5
|
+
spec.summary = "A Rock Paper Scissors Game Ruby Gem"
|
6
|
+
spec.description = <<-EOF
|
7
|
+
A Ruby-programmed rock paper scissors game.
|
8
|
+
Now you can play rock paper scissors on your computer whenever you'd like! :)
|
9
|
+
EOF
|
10
|
+
spec.author = "bag3318"
|
11
|
+
spec.platform = Gem::Platform::RUBY
|
12
|
+
spec.require_paths = ["lib"]
|
13
|
+
spec.files = `git ls-files -z`.split("\x0")
|
14
|
+
spec.post_install_message = <<-EOF
|
15
|
+
Thanks for installing! I hope you will have fun playing rock paper scissors! :)
|
16
|
+
EOF
|
17
|
+
spec.license = "MIT"
|
18
|
+
# spec.homepage = "https://bag3318.github.io/RockPaperScissors/"
|
19
|
+
spec.required_ruby_version = ">= 2.0.0"
|
20
|
+
spec.required_rubygems_version = ">= 2.6.0"
|
21
|
+
# spec.extra_rdoc_files = "README.md"
|
22
|
+
# spec.cert_chain = ["./certs/gem-public_cert.pem"]
|
23
|
+
# spec.signing_key = File.expand_path("~/.ssh/gem-private_key.pem") if $0 =~ /gem\z/
|
24
|
+
spec.bindir = "bin"
|
25
|
+
# spec.metadata = {
|
26
|
+
# "issue_tracker" => "https://github.com/bag3318/RockPaperScissors/issues" ,
|
27
|
+
# "source_code" => "https://github.com/bag3318/RockPaperScissors" ,
|
28
|
+
# "releases" => "https://github.com/bag3318/RockPaperScissors/releases",
|
29
|
+
# "website" => "https://bag3318.github.io/RockPaperScissors/"
|
30
|
+
# }
|
31
|
+
spec.executables << "rps"
|
32
|
+
spec.requirements << "A Windows or Mac computer"
|
33
|
+
spec.add_runtime_dependency "bundler" , "~> 1.14.6"
|
34
|
+
spec.add_runtime_dependency "colorize", "~> 0.8.1"
|
35
|
+
spec.add_runtime_dependency "rake" , "~> 12.0.0"
|
36
|
+
spec.add_runtime_dependency "rvm" , "~> 1.11.3.9"
|
37
|
+
spec.add_development_dependency "rdoc", "~> 5.1.0"
|
38
|
+
end
|
metadata
ADDED
@@ -0,0 +1,124 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rpsg
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- bag3318
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-10-10 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.14.6
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.14.6
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: colorize
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.8.1
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.8.1
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 12.0.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 12.0.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rvm
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.11.3.9
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 1.11.3.9
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rdoc
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 5.1.0
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 5.1.0
|
83
|
+
description: " A Ruby-programmed rock paper scissors game. \n Now you can play
|
84
|
+
rock paper scissors on your computer whenever you'd like! :)\n"
|
85
|
+
email:
|
86
|
+
executables:
|
87
|
+
- rps
|
88
|
+
extensions: []
|
89
|
+
extra_rdoc_files: []
|
90
|
+
files:
|
91
|
+
- ".gitignore"
|
92
|
+
- Gemfile
|
93
|
+
- bin/rps
|
94
|
+
- lib/Constants.rb
|
95
|
+
- lib/PrivateMethods.rb
|
96
|
+
- lib/rps/version.rb
|
97
|
+
- rps.gemspec
|
98
|
+
homepage:
|
99
|
+
licenses:
|
100
|
+
- MIT
|
101
|
+
metadata: {}
|
102
|
+
post_install_message: " Thanks for installing! I hope you will have fun playing
|
103
|
+
rock paper scissors! :)\n"
|
104
|
+
rdoc_options: []
|
105
|
+
require_paths:
|
106
|
+
- lib
|
107
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: 2.0.0
|
112
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - ">="
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: 2.6.0
|
117
|
+
requirements:
|
118
|
+
- A Windows or Mac computer
|
119
|
+
rubyforge_project:
|
120
|
+
rubygems_version: 2.6.13
|
121
|
+
signing_key:
|
122
|
+
specification_version: 4
|
123
|
+
summary: A Rock Paper Scissors Game Ruby Gem
|
124
|
+
test_files: []
|