rpsg 0.0.1

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: 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: []