RPSrb 0.0.0

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