RPSrb 0.0.0
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 +13 -0
- data/Gemfile +4 -0
- data/RPSrb.gemspec +30 -0
- data/Rakefile +41 -0
- data/bin/RPSrb +10 -0
- data/lib/RPSrb/Version.rb +3 -0
- data/lib/RockPaperScissors.rb +108 -0
- data/lib/exec.rb +1 -0
- data/test/test.rb +8 -0
- metadata +138 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b5559c89c493d2b0d84efc6a767ad22a3638e471
|
4
|
+
data.tar.gz: ae2bd4a5660b160bd3fd8d25de5aa7ea9929977d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ff38502e06167ba0494ecf2c1c123e5a03a803f3161b45f2dc6e119a89c9b2131a990ba11d71eb7af0db64002822e80483bda6b14bb1b0d12dc1c7c5caf13a8e
|
7
|
+
data.tar.gz: 02e15a07c461169debe90fff8d7cf315f34d65d9a6165e5d1858eaf4ea694f5aa77f37d632da65bef4576984430e4e325f9d02fdf79e570e063aa2c144bee0dc
|
data/.gitignore
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
*.DS_Store
|
2
|
+
*.gem
|
3
|
+
_MACOSX
|
4
|
+
Gemfile.lock
|
5
|
+
|
6
|
+
|
7
|
+
# If gitignore is not working,
|
8
|
+
# try this:
|
9
|
+
# ======================================================
|
10
|
+
# git rm -rf --cached .
|
11
|
+
# git add .
|
12
|
+
# git commit -m "remove cached files, gitignore"
|
13
|
+
# git push
|
data/Gemfile
ADDED
data/RPSrb.gemspec
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
Gem::Specification.new do |spec|
|
2
|
+
spec.name = "RPSrb"
|
3
|
+
spec.version = "0.0.0"
|
4
|
+
spec.date = "2017-12-11" # format: YYYY/MM/DD
|
5
|
+
spec.summary = "A Rock Paper Scissors Game RubyGem"
|
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.email = "private"
|
12
|
+
spec.platform = Gem::Platform::RUBY
|
13
|
+
spec.require_paths = ["lib"]
|
14
|
+
spec.files = `git ls-files -z`.split("\x0")
|
15
|
+
spec.post_install_message = <<-EOF
|
16
|
+
Thanks for installing my RPSG gem!
|
17
|
+
I hope you will have fun playing rock paper scissors! :)
|
18
|
+
EOF
|
19
|
+
spec.license = "MIT"
|
20
|
+
spec.required_ruby_version = ">= 2.0.0"
|
21
|
+
spec.required_rubygems_version = ">= 2.6.0"
|
22
|
+
# spec.extra_rdoc_files = ["README.md"]
|
23
|
+
spec.bindir = "bin"
|
24
|
+
spec.executables << "RPSrb"
|
25
|
+
spec.requirements << "A Windows or Mac computer"
|
26
|
+
spec.add_runtime_dependency 'bundler' , '~> 1.14', '>= 1.14.6'
|
27
|
+
spec.add_runtime_dependency 'rake' , '~> 12.0', '>= 12.0.0'
|
28
|
+
spec.add_runtime_dependency 'rdoc' , '~> 5.1' , '>= 5.1.0'
|
29
|
+
spec.add_runtime_dependency 'rvm' , '~> 1.11', '>= 1.11.3.9'
|
30
|
+
end
|
data/Rakefile
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'rdoc/task'
|
2
|
+
|
3
|
+
# task :default => :test
|
4
|
+
|
5
|
+
file_path = "./test/test.rb"
|
6
|
+
|
7
|
+
task :test do
|
8
|
+
# tests the ruby test file
|
9
|
+
ruby file_path
|
10
|
+
end
|
11
|
+
|
12
|
+
# for Windows
|
13
|
+
task :delgem do
|
14
|
+
# this deletes any `.gem` file in current direcotry on Windows
|
15
|
+
`DEL RPSrb-*.*.*.gem`
|
16
|
+
end
|
17
|
+
|
18
|
+
# for Mac
|
19
|
+
task :delgemosx do
|
20
|
+
# this deletes any `.gem` in current directory on Mac
|
21
|
+
`rm -Rf RPSrb-*.*.*.gem`
|
22
|
+
end
|
23
|
+
|
24
|
+
# for Mac
|
25
|
+
task :deldocosx do
|
26
|
+
# this deletes the `doc` folder in the current directory
|
27
|
+
`rm -Rf doc`
|
28
|
+
end
|
29
|
+
|
30
|
+
# for Windows
|
31
|
+
task :deldoc do
|
32
|
+
# this deletes the `doc` folder in the current directory
|
33
|
+
`RMDIR /S /Q "doc"`
|
34
|
+
end
|
35
|
+
|
36
|
+
RDoc::Task.new do |rdoc|
|
37
|
+
# rdoc.main = "README.rdoc"
|
38
|
+
rdoc.rdoc_files.include("lib")
|
39
|
+
rdoc.rdoc_dir = "doc"
|
40
|
+
rdoc.title = "RPSrb RDocs"
|
41
|
+
end
|
data/bin/RPSrb
ADDED
@@ -0,0 +1,108 @@
|
|
1
|
+
class RockPaperScissors
|
2
|
+
|
3
|
+
require 'RPSrb/Version.rb'
|
4
|
+
|
5
|
+
CHOICES = [['r', 'rock'], ['p', 'paper'], ['s', 'scissors']]
|
6
|
+
|
7
|
+
|
8
|
+
NTRY_TO_SYM = {
|
9
|
+
CHOICES[0][0] => :ROCK , CHOICES[0][1] => :ROCK ,
|
10
|
+
CHOICES[1][0] => :PAPER , CHOICES[1][1] => :PAPER ,
|
11
|
+
CHOICES[2][0] => :SCISSORS, CHOICES[2][1] => :SCISSORS
|
12
|
+
}
|
13
|
+
|
14
|
+
|
15
|
+
VALID_ENTRIES = NTRY_TO_SYM.keys
|
16
|
+
|
17
|
+
|
18
|
+
COMPUTER_CHOICES = NTRY_TO_SYM.values
|
19
|
+
|
20
|
+
|
21
|
+
WINNERS = [
|
22
|
+
[:SCISSORS, :PAPER ],
|
23
|
+
[:PAPER , :ROCK ],
|
24
|
+
[:ROCK , :SCISSORS]
|
25
|
+
]
|
26
|
+
|
27
|
+
LOSERS = WINNERS.map { |winning_choice,losing_choice| [losing_choice,winning_choice] }
|
28
|
+
|
29
|
+
class << self
|
30
|
+
protected
|
31
|
+
def continue(str1,str2,str3)
|
32
|
+
puts str1
|
33
|
+
print str2
|
34
|
+
gets
|
35
|
+
puts str3
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
continue("\nYou are about to enter a rock-paper-scissors best of 3 match.", "\nPress the return/enter key to continue...", "")
|
40
|
+
|
41
|
+
protected
|
42
|
+
def initialize
|
43
|
+
@player_score = @computer_score = @ties = 0
|
44
|
+
end
|
45
|
+
|
46
|
+
public
|
47
|
+
def play(winning_score)
|
48
|
+
while @player_score < winning_score && @computer_score < winning_score
|
49
|
+
puts "\nPlayer score: #{@player_score}, " +
|
50
|
+
"Computer score: #{@computer_score}, Ties: #{@ties}.\n"
|
51
|
+
player = player_choice
|
52
|
+
computer = COMPUTER_CHOICES.sample # chooses a random option
|
53
|
+
puts "\nPlayer chooses #{player.to_s.downcase}."
|
54
|
+
puts "Computer chooses #{computer.to_s.downcase}.\n"
|
55
|
+
case player_outcome [player, computer]
|
56
|
+
when :WIN
|
57
|
+
printf "\n%s beats %s, player wins the round. \n\n" % [player.to_s.capitalize, computer.to_s.downcase]
|
58
|
+
@player_score += 1
|
59
|
+
when :LOSE
|
60
|
+
printf "\n%s beats %s, computer wins the round.\n\n" % [computer.to_s.capitalize, player.to_s.downcase]
|
61
|
+
@computer_score += 1
|
62
|
+
else
|
63
|
+
puts "\nTie, choose again\n"
|
64
|
+
@ties += 1
|
65
|
+
end
|
66
|
+
end
|
67
|
+
printf "\nFinal score:\nplayer: %i, computer: %i; (ties: %i).\n\n" % [@player_score, @computer_score, @ties]
|
68
|
+
case final_outcome(@player_score, @computer_score)
|
69
|
+
when :WIN
|
70
|
+
puts "\nPlayer wins!\n"
|
71
|
+
when :LOSE
|
72
|
+
puts "\nComputer wins!\n"
|
73
|
+
end
|
74
|
+
print "\n[press the enter/return key to exit game]"
|
75
|
+
gets
|
76
|
+
end
|
77
|
+
|
78
|
+
private
|
79
|
+
def player_choice
|
80
|
+
loop do
|
81
|
+
print "\nChoose: Rock (r), Paper (p), or Scissors (s): "
|
82
|
+
choice = gets.chomp.downcase
|
83
|
+
if NTRY_TO_SYM.key?(choice)
|
84
|
+
return NTRY_TO_SYM[choice]
|
85
|
+
elsif choice != VALID_ENTRIES
|
86
|
+
puts "\nThat entry is invalid. Please re-enter.\n"
|
87
|
+
else
|
88
|
+
return nil
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
private
|
94
|
+
def player_outcome(plays)
|
95
|
+
return :WIN if WINNERS.include?(plays)
|
96
|
+
return :LOSE if LOSERS.include?(plays)
|
97
|
+
return :TIE if !:WIN | !:LOSE
|
98
|
+
end
|
99
|
+
|
100
|
+
private
|
101
|
+
def final_outcome(pl, co)
|
102
|
+
return :WIN if pl > co
|
103
|
+
return :LOSE if pl < co
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|
107
|
+
|
108
|
+
require 'exec.rb'
|
data/lib/exec.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
RockPaperScissors.new.play(2) # best out of 3 (0, 1, 2)
|
data/test/test.rb
ADDED
metadata
ADDED
@@ -0,0 +1,138 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: RPSrb
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- bag3318
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-12-11 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'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 1.14.6
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.14'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 1.14.6
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: rake
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '12.0'
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 12.0.0
|
43
|
+
type: :runtime
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - "~>"
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '12.0'
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: 12.0.0
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: rdoc
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - "~>"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '5.1'
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 5.1.0
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '5.1'
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: 5.1.0
|
73
|
+
- !ruby/object:Gem::Dependency
|
74
|
+
name: rvm
|
75
|
+
requirement: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - "~>"
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '1.11'
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 1.11.3.9
|
83
|
+
type: :runtime
|
84
|
+
prerelease: false
|
85
|
+
version_requirements: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.11'
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: 1.11.3.9
|
93
|
+
description: |2
|
94
|
+
A Ruby-programmed rock paper scissors game.
|
95
|
+
Now you can play rock paper scissors on your computer whenever you'd like! :)
|
96
|
+
email: private
|
97
|
+
executables:
|
98
|
+
- RPSrb
|
99
|
+
extensions: []
|
100
|
+
extra_rdoc_files: []
|
101
|
+
files:
|
102
|
+
- ".gitignore"
|
103
|
+
- Gemfile
|
104
|
+
- RPSrb.gemspec
|
105
|
+
- Rakefile
|
106
|
+
- bin/RPSrb
|
107
|
+
- lib/RPSrb/Version.rb
|
108
|
+
- lib/RockPaperScissors.rb
|
109
|
+
- lib/exec.rb
|
110
|
+
- test/test.rb
|
111
|
+
homepage:
|
112
|
+
licenses:
|
113
|
+
- MIT
|
114
|
+
metadata: {}
|
115
|
+
post_install_message: |2
|
116
|
+
Thanks for installing my RPSG gem!
|
117
|
+
I hope you will have fun playing rock paper scissors! :)
|
118
|
+
rdoc_options: []
|
119
|
+
require_paths:
|
120
|
+
- lib
|
121
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: 2.0.0
|
126
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: 2.6.0
|
131
|
+
requirements:
|
132
|
+
- A Windows or Mac computer
|
133
|
+
rubyforge_project:
|
134
|
+
rubygems_version: 2.6.13
|
135
|
+
signing_key:
|
136
|
+
specification_version: 4
|
137
|
+
summary: A Rock Paper Scissors Game RubyGem
|
138
|
+
test_files: []
|