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 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
@@ -0,0 +1,3 @@
1
+ module RockPaperScissors
2
+ VERSION = "0.0.1"
3
+ end
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: []