PlayRockPaperScissorsGame 1.3.6 → 1.3.7

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.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/exec/run.bat +13 -0
  3. data/rps.gemspec +2 -2
  4. data/test/test_rps.rb +88 -0
  5. metadata +3 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 780c46da613090e854c5b738201798ab8e01bb3e
4
- data.tar.gz: a125896810f51c0c14c1bfc4bf8f471f4bff69f5
3
+ metadata.gz: ecbb71593d1668584a0e5b92dd7c7c2418bb28d8
4
+ data.tar.gz: 27fce25161aa902f91587b685e5fb5d373710ab4
5
5
  SHA512:
6
- metadata.gz: a8821a382b62fbbb6e32eadb3c2e6ada52790f340232844b75ee942528fb2bd18991e04a493f284279b804713c0f8c81a26b6398704badc5aa197a8678db47c5
7
- data.tar.gz: 1ec0b945072f275a21f9bd2ed94116a24125a7018aaffd58e656f3383db5ea94ef9b4cb49a0c175939761dfbc5e88768fc0683ff9bdb2067ce0f2572273a65b2
6
+ metadata.gz: dde318bd51208d856726d60d15ddaa03a07ae15a5e41ac08b68e506085b986631424ed656d156b26dcfc63878b25fba4b5d4a1c64b31de572941fbdf37e433e7
7
+ data.tar.gz: 30977ff0e0ed9fa362e26f07b6d0cb5997ae5459656f7cf3b85cd6a80efe40554a6032a17142f65773c427665d68ba10b8dd67a8e89dbdd54449c246f4f5acd0
data/exec/run.bat ADDED
@@ -0,0 +1,13 @@
1
+ @ECHO OFF
2
+
3
+ :master
4
+
5
+ :process
6
+ START cmd.exe /K PlayRockPaperScissorsGame
7
+ GOTO:EOF
8
+
9
+ CALL:process
10
+
11
+ GOTO:EOF
12
+
13
+ CALL:master
data/rps.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "PlayRockPaperScissorsGame"
3
- spec.version = "1.3.6"
3
+ spec.version = "1.3.7"
4
4
  spec.date = "2017-03-29"
5
5
  spec.summary = "Rock Paper Scissors"
6
6
  spec.description = "A Ruby-programmed rock paper scissors game. "
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.email = "" # email is disclosed for privacy reasons
9
9
  spec.platform = Gem::Platform::RUBY
10
10
  spec.require_paths = ["lib", "test", "exec", "bin"]
11
- spec.files = ["lib/rps.rb", "lib/ref/PrivateVars.rb", "lib/ref/Constants.rb", "Rakefile", "Gemfile", "test/", "exec/", "exec/rps.bash", "exec/uninstall.sh", "rps.gemspec", "LICENSE"]
11
+ spec.files = ["lib/rps.rb", "lib/ref/PrivateVars.rb", "lib/ref/Constants.rb", "Rakefile", "Gemfile", "test/test_rps.rb", "exec/run.bat", "exec/rps.bash", "exec/uninstall.sh", "rps.gemspec", "LICENSE"]
12
12
  spec.bindir = "bin"
13
13
  spec.executables << "rps"
14
14
  spec.executables << "PlayRockPaperScissorsGame"
data/test/test_rps.rb ADDED
@@ -0,0 +1,88 @@
1
+ class Test
2
+
3
+ class Rake < Test
4
+
5
+ module Constants
6
+ NTRY_TO_SYM = { 'p' => :PAPER, 'r' => :ROCK, 's' => :SCISSORS };
7
+ VALID_ENTRIES = NTRY_TO_SYM.keys;
8
+ COMPUTER_CHOICES = NTRY_TO_SYM.values;
9
+ WINNERS = [[:SCISSORS, :PAPER], [:PAPER, :ROCK], [:ROCK, :SCISSORS]]; # format: player choice, computer choice
10
+ LOSERS = WINNERS.map { |i,j| [j,i] }; # this will take the original WINNERS array and flip the symbols, thus returning a loss for the user/player
11
+ INIT_STRINGS = ["You are about to enter a rock-paper-scissors best of 3 match.", "Press the return/enter key to continue...", ""];
12
+ end;
13
+
14
+ class RockPaperScissorsTest
15
+ class << self
16
+ def continue(str1, str2, str3)
17
+ puts str1;
18
+ print str2;
19
+ gets;
20
+ puts str3;
21
+ end;
22
+ end;
23
+ continue(Constants::INIT_STRINGS[0], Constants::INIT_STRINGS[1], Constants::INIT_STRINGS[2]);
24
+ def initialize
25
+ @player_score = @computer_score = @ties = 0;
26
+ end;
27
+ def testPlay(winning_score)
28
+ while @player_score < winning_score && @computer_score < winning_score
29
+ puts "Player score: #{@player_score}, " +
30
+ "Computer score: #{@computer_score}, Ties: #{@ties}";
31
+ player = PrivateVars.player_choice;
32
+ computer = Constants::COMPUTER_CHOICES.sample;
33
+ puts "\nPlayer chooses #{player.to_s.downcase}";
34
+ puts "Computer chooses #{computer.to_s.downcase}";
35
+ case PrivateVars.player_outcome [player, computer]
36
+ when :WIN
37
+ puts "#{player.to_s.capitalize} beats #{computer.to_s.downcase}, player wins the round";
38
+ @player_score += 1;
39
+ when :LOSE
40
+ puts "#{computer.to_s.capitalize} beats #{player.to_s.downcase}, computer wins the round";
41
+ @computer_score += 1;
42
+ else
43
+ puts "Tie, choose again";
44
+ @ties += 1;
45
+ end;
46
+ end;
47
+ puts "\nFinal score: player: #{@player_score}, " +
48
+ "computer: #{@computer_score} (ties: #{@ties})";
49
+ case PrivateVars.final_outcome(@player_score, @computer_score)
50
+ when :WIN
51
+ puts "Player wins!";
52
+ when :LOSE
53
+ puts "Computer wins!";
54
+ else
55
+ puts "It's a tie!";
56
+ end;
57
+ puts "";
58
+ gets;
59
+ end;
60
+ private
61
+ module PrivateVars
62
+ class << self
63
+ def player_choice
64
+ loop do
65
+ print "Choose rock (r), paper (p) or scissors (s): ";
66
+ choice = gets.chomp.downcase;
67
+ return Constants::NTRY_TO_SYM[choice] if Constants::NTRY_TO_SYM.key?(choice);
68
+ puts "That entry is invalid. Please re-enter";
69
+ end;
70
+ end;
71
+ def player_outcome(plays)
72
+ return :WIN if Constants::WINNERS.include?(plays);
73
+ return :LOSE if Constants::LOSERS.include?(plays);
74
+ return :TIE if !:WIN | !:LOSE;
75
+ end;
76
+ def final_outcome(pl, co)
77
+ return :WIN if pl > co;
78
+ return :LOSE if pl < co;
79
+ return :TIE if pl = co;
80
+ end;
81
+ end;
82
+ end;
83
+ end;
84
+ end;
85
+ end;
86
+
87
+ Test::Rake::RockPaperScissorsTest.new.testPlay(3); # best of 3
88
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: PlayRockPaperScissorsGame
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.6
4
+ version: 1.3.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - bag3318
@@ -68,11 +68,13 @@ files:
68
68
  - bin/PlayRockPaperScissorsGame
69
69
  - bin/rps
70
70
  - exec/rps.bash
71
+ - exec/run.bat
71
72
  - exec/uninstall.sh
72
73
  - lib/ref/Constants.rb
73
74
  - lib/ref/PrivateVars.rb
74
75
  - lib/rps.rb
75
76
  - rps.gemspec
77
+ - test/test_rps.rb
76
78
  homepage: https://rubygems.org/gems/PlayRockPaperScissorsGame/
77
79
  licenses:
78
80
  - MIT