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 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
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+ platform :ruby do
3
+ gemspec
4
+ end
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,10 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # $LOAD_PATH.unshift(".")
4
+
5
+ lib = File.expand_path("../../lib", __FILE__)
6
+
7
+ $:.unshift(lib)
8
+
9
+
10
+ load "RockPaperScissors.rb" # load main file
@@ -0,0 +1,3 @@
1
+ module RPSrb
2
+ VERSION = '0.0.0'
3
+ end
@@ -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
@@ -0,0 +1,8 @@
1
+ # $LOAD_PATH.unshift(".")
2
+
3
+ bin = File.expand_path("../../bin", __FILE__)
4
+
5
+ $:.unshift(bin)
6
+
7
+ # load from bin directory
8
+ load "RPSrb"
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: []