RPSBlahBlahBlah123 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/bin/rps +5 -0
  3. data/lib/rps.rb +118 -0
  4. metadata +73 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 17d092821400f99e270abbf37bca8239855c8ef9f6d5efc0851c6293c44b6369
4
+ data.tar.gz: 6fe12a7954d2f8ab7f67429b38df5568e5e0c15f87c0bfd243fe0029a286ba0f
5
+ SHA512:
6
+ metadata.gz: ffa488cc70444dfd131d6a9a96eb81f51fb3e495e892337aa03704a6ddece9eed1cb83180ece75f41767cabae4192adabda681f9d59fe9b6efdc5f403b4b502f
7
+ data.tar.gz: f86201d435d879e6a3603674361cc4a3e047ccb87d177d56e55323909340609a5833f1290c7e3ad4328d5b584a06949404f3f6364485316a2d97f037ec157931
data/bin/rps ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ print "\r\n"
4
+
5
+ require 'RPS'
data/lib/rps.rb ADDED
@@ -0,0 +1,118 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ =begin
4
+ |============|
5
+ | RubyRPS |
6
+ |------------|
7
+ | Made by: |
8
+ | Broccolini |
9
+ |============|
10
+ =end
11
+
12
+ # START
13
+
14
+ class RPS
15
+
16
+ CHOICES = [['r', 'rock'], ['p', 'paper'], ['s', 'scissors']]
17
+
18
+ NTRY_TO_SYM = {
19
+ CHOICES[0][0] => :ROCK , CHOICES[0][1] => :ROCK ,
20
+ CHOICES[1][0] => :PAPER , CHOICES[1][1] => :PAPER ,
21
+ CHOICES[2][0] => :SCISSORS, CHOICES[2][1] => :SCISSORS
22
+ }
23
+
24
+ VALID_ENTRIES = NTRY_TO_SYM.keys
25
+
26
+ COMPUTER_CHOICES = NTRY_TO_SYM.values
27
+
28
+ WINNERS = [
29
+ [:SCISSORS, :PAPER ],
30
+ [:PAPER , :ROCK ],
31
+ [:ROCK , :SCISSORS]
32
+ ]
33
+
34
+ LOSERS = WINNERS.map { |winning_choice,losing_choice| [losing_choice,winning_choice] }
35
+
36
+ class << self
37
+ def startup()
38
+ puts "|=====================|"
39
+ puts "| Rock Paper Scissors |"
40
+ puts "|---------------------|"
41
+ puts "| Made by: bag33188 |"
42
+ puts "|=====================|"
43
+ print "\r\nYou are about to enter a rock-paper-scissors best of 3 match.\r\n"
44
+ print "\r\nPress the return/enter key to continue..."
45
+ gets
46
+ print "\r\n"
47
+ end
48
+ end
49
+
50
+ startup()
51
+
52
+ def initialize
53
+ @player_score = @computer_score = @ties = 0
54
+ end
55
+
56
+ def play(winning_score)
57
+ while @player_score < winning_score && @computer_score < winning_score
58
+ puts "\r\nPlayer score: #{@player_score}, " +
59
+ "Computer score: #{@computer_score}, Ties: #{@ties}.\r\n"
60
+ player = player_choice
61
+ computer = COMPUTER_CHOICES.sample # chooses a random option
62
+ puts "\r\nPlayer chooses #{player.to_s.downcase}."
63
+ puts "Computer chooses #{computer.to_s.downcase}.\r\n"
64
+ case player_outcome [player, computer]
65
+ when :WIN
66
+ printf "\r\n%s beats %s, player wins the round. \r\n" % [player.to_s.capitalize, computer.to_s.downcase]
67
+ @player_score += 1
68
+ when :LOSE
69
+ printf "\r\n%s beats %s, computer wins the round.\r\n" % [computer.to_s.capitalize, player.to_s.downcase]
70
+ @computer_score += 1
71
+ else
72
+ puts "\r\nTie, choose again\r\n"
73
+ @ties += 1
74
+ end
75
+ end
76
+ printf "\r\nFinal score:\r\nplayer: %i, computer: %i; (ties: %i).\r\n" % [@player_score, @computer_score, @ties]
77
+ case final_outcome(@player_score, @computer_score)
78
+ when :WIN
79
+ puts "Player wins!\r\n"
80
+ when :LOSE
81
+ puts "Computer wins!\r\n"
82
+ end
83
+ print "\n[press the enter/return key to exit the game]"
84
+ gets
85
+ puts
86
+ end
87
+
88
+ def player_choice
89
+ loop do
90
+ print "\r\nChoose: Rock (r), Paper (p), or Scissors (s): "
91
+ choice = gets.chomp.downcase
92
+ if NTRY_TO_SYM.key?(choice)
93
+ return NTRY_TO_SYM[choice]
94
+ elsif choice != VALID_ENTRIES
95
+ puts "\r\nThat entry is invalid. Please re-enter.\r\n"
96
+ else
97
+ return nil
98
+ end
99
+ end
100
+ end
101
+
102
+ def player_outcome(plays)
103
+ return :WIN if WINNERS.include?(plays)
104
+ return :LOSE if LOSERS.include?(plays)
105
+ return :TIE if !:WIN | !:LOSE
106
+ end
107
+
108
+ def final_outcome(pl, co)
109
+ return :WIN if pl > co
110
+ return :LOSE if pl < co
111
+ # return :TIE if pl == co
112
+ end
113
+
114
+ end
115
+
116
+ RPS.new.play(3 - 1)
117
+
118
+ #END
metadata ADDED
@@ -0,0 +1,73 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: RPSBlahBlahBlah123
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - bag33188
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-08-24 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
+ description: Play rock paper scissors any time you want!
34
+ email: bglatman@outlook.com
35
+ executables:
36
+ - rps
37
+ extensions: []
38
+ extra_rdoc_files: []
39
+ files:
40
+ - bin/rps
41
+ - lib/rps.rb
42
+ homepage: https://gitlab.com/bag3318/RubyRPS
43
+ licenses:
44
+ - MIT
45
+ metadata:
46
+ gitlab repo: https://gitlab.com/bag3318/RubyRPS
47
+ author's nickname: Broccolini
48
+ post_install_message: |2+
49
+
50
+ Thanks for installing my RPS gem!
51
+ I hope you will have fun playing rock paper scissors! :)
52
+
53
+ rdoc_options: []
54
+ require_paths:
55
+ - lib
56
+ required_ruby_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 2.0.0
61
+ required_rubygems_version: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: 2.6.0
66
+ requirements:
67
+ - A Windows or Mac computer with Ruby and RubyGems
68
+ rubyforge_project:
69
+ rubygems_version: 2.7.7
70
+ signing_key:
71
+ specification_version: 4
72
+ summary: A Rock Paper Scissors Game RubyGem
73
+ test_files: []