pc 0.0.3

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
+ SHA256:
3
+ metadata.gz: 8a2fea4f3614c7570e83780e38056f2b76da1717b296fd7c7bb7c35cf3117ec3
4
+ data.tar.gz: e4c4cff0c80bf71edb0c16b28dad145ff91c6d02fceb139a942845fec0d03d63
5
+ SHA512:
6
+ metadata.gz: 27c00563d967c8d4afa5f7a3a246ddcea54f8319694c0ffc210a8e3aedafa26a173331268b71a29b3d3313f67f1550ea43a6f1a73215e400a08b909ce256471c
7
+ data.tar.gz: 382d917448450fceced47a1a82462f88e1ab25f77e079903814f07dc6f09d442343b8934cf1e6cc29645e38e7b6a4ffa154e9f8a3b25d0210f75576c5c9660fc
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format documentation
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'debugger'
4
+
5
+ # Specify your gem's dependencies in pc.gemspec
6
+ gemspec
data/HISTORY.md ADDED
@@ -0,0 +1,15 @@
1
+ v0.0.4 - 2014/02/09
2
+
3
+ * Rewritten with Module, no Singleton class
4
+ * More compact files for each game and interface
5
+ * Room for separate player modules (Human, Random, Smart)
6
+
7
+ v0.0.3 - 2014/02/05
8
+
9
+ * Add Odd Or Evens game
10
+ * Separate interface, game and moves into modules
11
+ * Integrate Campfire with Nico gem
12
+
13
+ v0.0.2 - 2014/02/05
14
+
15
+ * Shell-only Rock Paper Scissors game
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 claudiob
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,33 @@
1
+ # Pc
2
+
3
+ King of the Game Jungle
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'pc'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install pc
18
+
19
+ ## Usage
20
+
21
+ From the command line run:
22
+
23
+ $ pc
24
+
25
+ To use Campfire as an interface, define the following environment variables: `CAMPFIRE_SUBDOMAIN`, `CAMPFIRE_ROOM_ID` and `CAMPFIRE_TOKEN`.
26
+
27
+ ## Contributing
28
+
29
+ 1. Fork it ( http://github.com/claudiob/pc/fork )
30
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
31
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
32
+ 4. Push to the branch (`git push origin my-new-feature`)
33
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/bin/tarzan ADDED
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ begin
4
+ require 'pc'
5
+ rescue LoadError
6
+ require 'rubygems'
7
+ require 'pc'
8
+ end
9
+
10
+ puts %{Pick [S]hell, [C]ampfire, or [D]esktop: }
11
+ interface = case gets.strip
12
+ when 'S'
13
+ require 'pc/interfaces/shell'
14
+ Pc::Tournament.run Pc::Shell
15
+ when 'C'
16
+ require 'pc/interfaces/campfire'
17
+ Pc::Tournament.run Pc::Campfire, subdomain: ENV['CAMPFIRE_SUBDOMAIN'], room_id: ENV['CAMPFIRE_ROOM_ID'], token: ENV['CAMPFIRE_TOKEN']
18
+ when 'D'
19
+ require 'pc/interfaces/desktop'
20
+ Pc::Tournament.run Pc::Desktop
21
+ end
data/lib/pc.rb ADDED
@@ -0,0 +1 @@
1
+ require 'pc/tournament'
data/lib/pc/game.rb ADDED
@@ -0,0 +1,50 @@
1
+ require 'pc/loop'
2
+
3
+ module Pc
4
+ module Game
5
+ include Loop
6
+
7
+ def self.included(base)
8
+ base.extend base
9
+ end
10
+
11
+ def welcome
12
+ say %{Rules: #{rules}}, next: ->{prompt_move}
13
+ end
14
+
15
+ def rules
16
+ '[no rules defined]'
17
+ end
18
+
19
+ def moves
20
+ {}
21
+ end
22
+
23
+ def prompt_move
24
+ ask %{Choose a move}, Hash[*moves.map{|k, v| [k, ->{choose v}]}.flatten]
25
+ end
26
+
27
+ def choose(choice)
28
+ @move_p1 = choice
29
+ @move_p2 = random_move
30
+ say %{You played #{@move_p1} - I played #{@move_p2}}, next: ->{show_outcome}
31
+ end
32
+
33
+ def random_move
34
+ moves.values.sample
35
+ end
36
+
37
+ def show_outcome
38
+ outcome = case compare_moves(@move_p1, @move_p2)
39
+ when 1 then %{You win!}
40
+ when -1 then %{You lose!}
41
+ when 0 then %{It’s a tie!}
42
+ end
43
+ say outcome, next: ->{exit}
44
+ end
45
+
46
+ def compare_moves(move_a, move_b)
47
+ move_a <=> move_b
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,22 @@
1
+ require 'pc/game'
2
+
3
+ module Pc
4
+ module OddsAndEvens
5
+ include Game
6
+
7
+ def rules
8
+ 'Odd sum wins, even sum loses'
9
+ end
10
+
11
+ def moves
12
+ {'1' => 1, '2' => 2, '3' => 3, '4' => 4, '5' => 5}
13
+ end
14
+
15
+ def compare_moves(move_a, move_b)
16
+ case move_a + move_b # might need finger_offset
17
+ when ->(sum) { sum.odd? } then 1
18
+ when ->(sum) { sum.even? } then -1
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,23 @@
1
+ require 'pc/game'
2
+
3
+ module Pc
4
+ module RockPaperScissors
5
+ include Game
6
+
7
+ def rules
8
+ 'Rock beats Scissors beats Paper beats Rock'
9
+ end
10
+
11
+ def moves
12
+ {rock: 'R', paper: 'P', scissors: 'S'}
13
+ end
14
+
15
+ def compare_moves(move_a, move_b)
16
+ case "#{move_a}#{move_b}"
17
+ when 'RS', 'SP', 'PR' then 1
18
+ when 'RP', 'SR', 'PS' then -1
19
+ else 0
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,13 @@
1
+ module Pc
2
+ module Interface
3
+ def self.included(base)
4
+ base.extend base
5
+ end
6
+
7
+ def run(options = {})
8
+ end
9
+
10
+ def enqueue(message, choices = {})
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,39 @@
1
+ require 'pc/interface'
2
+ require 'nico'
3
+ require 'net/http'
4
+
5
+ module Pc
6
+ module Campfire
7
+ include Interface
8
+
9
+ def run(options = {})
10
+ @room ||= Nico::Room.new options
11
+ while action = (@actions ||= []).shift
12
+ say action[:message]
13
+ choose(action[:choices]).call
14
+ run
15
+ end
16
+ end
17
+
18
+ def enqueue(message, choices = {})
19
+ (@actions ||= []).push message: message, choices: choices
20
+ end
21
+
22
+ def say(message)
23
+ @room.say message
24
+ end
25
+
26
+ def choose(choices = {})
27
+ if choices[:next]
28
+ sleep 0.2
29
+ choices[:next]
30
+ else
31
+ say %{Pick one: #{choices.keys.join ' - '} }
32
+ @room.each_message do |message|
33
+ choice = choices.select{|k,v| k.to_s == message}.values.first
34
+ return choice if choice
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,17 @@
1
+ require 'pc/interface'
2
+ require 'pc/interfaces/desktop/window'
3
+
4
+ module Pc
5
+ module Desktop
6
+ include Interface
7
+
8
+ def run(options = {})
9
+ Window.instance.show
10
+ end
11
+
12
+ def enqueue(message, choices = {})
13
+ Window.instance.set_alert message
14
+ Window.instance.set_buttons choices
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,91 @@
1
+ require 'singleton'
2
+ require 'gosu'
3
+
4
+ module Pc
5
+ class Window < Gosu::Window
6
+ include Singleton
7
+
8
+ def initialize
9
+ super 640, 480, is_fullscreen
10
+ self.caption = 'Game Hall'
11
+ @font = Gosu::Font.new self, Gosu::default_font_name, 20
12
+ end
13
+
14
+ def set_alert(message)
15
+ @alert = message
16
+ end
17
+
18
+ def set_buttons(choices = {})
19
+ @buttons = choices.map.with_index do |(key, value), index|
20
+ {timeout: Time.now + 1.2, label: key, action: value, x1: 100, x2: 200, y1: 30+index*30, y2: 50+index*30}
21
+ end
22
+ end
23
+
24
+ # This method is called once every #update_interval milliseconds while the window is being shown.
25
+ def update
26
+ @buttons.each do |button, index|
27
+ if button[:timeout] < Time.now && button[:label] == :next
28
+ @buttons = nil
29
+ button[:action].call
30
+ break
31
+ end
32
+ end if @buttons
33
+ end
34
+
35
+ def draw_text(text)
36
+ @font.draw @alert, 200, 450, 2 # TO DO: center the text
37
+ end
38
+
39
+ def draw_rectangle(button)
40
+ c1, c2 = [Gosu::Color.new(0xFF1EB1FA), Gosu::Color.new(0xFF1D4DB5)]
41
+ x1, x2, y1, y2 = [button[:x1], button[:x2], button[:y1], button[:y2]]
42
+ z_index = 0
43
+ draw_quad x1, y1, c1, x2, y1, c1, x1, y2, c2, x2, y2, c2, z_index
44
+ end
45
+
46
+ def draw_buttons(buttons)
47
+ buttons.reject{|button| button[:label] == :next}.each do |button|
48
+ draw_rectangle button
49
+ @font.draw button[:label], button[:x1], button[:y1], 2
50
+ end
51
+ end
52
+
53
+ # This method is called after every update and whenever the OS wants the window to repaint itself.
54
+ def draw
55
+ draw_text @alert if @alert
56
+ draw_buttons @buttons if @buttons
57
+ end
58
+
59
+ # This method is called whenever a key is pressed down
60
+ def button_down(id)
61
+ case id
62
+ when Gosu::KbEscape then close
63
+ end
64
+ end
65
+
66
+ # This method is called whenever a key is pressed up
67
+ def button_up(id)
68
+ case id
69
+ when Gosu::MsLeft
70
+ @buttons.each do |button, index|
71
+ if button[:y1] < mouse_y && mouse_y < button[:y2] && button[:x1] < mouse_x && mouse_x < button[:x2]
72
+ @buttons = nil
73
+ button[:action].call
74
+ break
75
+ end
76
+ end if @buttons
77
+ end
78
+ end
79
+
80
+ private
81
+
82
+ def is_fullscreen
83
+ false
84
+ end
85
+
86
+ # [from Gosu::Window] Whether the system cursor should be shown
87
+ def needs_cursor?
88
+ true
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,34 @@
1
+ require 'pc/interface'
2
+
3
+ module Pc
4
+ module Shell
5
+ include Interface
6
+
7
+ def run(options = {})
8
+ while action = (@actions ||= []).shift
9
+ say action[:message]
10
+ choose(action[:choices]).call
11
+ run
12
+ end
13
+ end
14
+
15
+ def enqueue(message, choices = {})
16
+ (@actions ||= []).push message: message, choices: choices
17
+ end
18
+
19
+ def say(message)
20
+ puts message
21
+ end
22
+
23
+ def choose(choices = {})
24
+ if choices[:next]
25
+ sleep 0.2
26
+ choices[:next]
27
+ else
28
+ say %{Pick one: #{choices.keys.join ' - '} }
29
+ choice = gets.strip
30
+ choices.select{|k,v| k.to_s == choice}.values.first || prompt(choices)
31
+ end
32
+ end
33
+ end
34
+ end
data/lib/pc/loop.rb ADDED
@@ -0,0 +1,31 @@
1
+ module Pc
2
+ module Loop
3
+ def self.included(base)
4
+ base.extend base
5
+ end
6
+
7
+ def run(interface, options = {})
8
+ @interface ||= interface
9
+ @options ||= options
10
+ welcome
11
+ catch(:exit) { @interface.run @options }
12
+ end
13
+
14
+ def welcome
15
+ say %{Welcome}, next: ->{goodbye}
16
+ end
17
+
18
+ def goodbye
19
+ say %{Goodbye}, next: ->{exit}
20
+ end
21
+
22
+ def exit
23
+ throw :exit
24
+ end
25
+
26
+ def say(message, choices = {})
27
+ @interface.enqueue message, choices
28
+ end
29
+ alias :ask :say
30
+ end
31
+ end
@@ -0,0 +1 @@
1
+ # This will include prompt for a human player
@@ -0,0 +1 @@
1
+ # This will always make a random choice
@@ -0,0 +1,6 @@
1
+ # This will always make a smart choice
2
+
3
+ # For instance see http://www.nytimes.com/interactive/science/rock-paper-scissors.html?_r=0
4
+ # RRRS SPRR > R
5
+ # SRRR PSPR > P
6
+ # PSRR SPSP > R
@@ -0,0 +1,32 @@
1
+ require 'pc/loop'
2
+
3
+ module Pc
4
+ module Tournament
5
+ include Loop
6
+
7
+ def welcome
8
+ say %{Welcome}, next: ->{select_game}
9
+ end
10
+
11
+ def select_game
12
+ ask %{Pick a game}, loaded_games
13
+ end
14
+
15
+ def loaded_games
16
+ Dir[File.dirname(__FILE__) + '/games/*.rb'].each {|file| require file }
17
+
18
+ {exit: -> {goodbye}}.tap do |games|
19
+ ObjectSpace.each_object(Game) do |game|
20
+ unless game == Pc::Game
21
+ games[game.to_s] = ->{play game}
22
+ end
23
+ end
24
+ end
25
+ end
26
+
27
+ def play(game)
28
+ game.run @interface, @options
29
+ say %{Get ready for the next one}, next: ->{select_game}
30
+ end
31
+ end
32
+ end
data/lib/pc/version.rb ADDED
@@ -0,0 +1,3 @@
1
+ module Pc
2
+ VERSION = "0.0.3"
3
+ end
data/pc.gemspec ADDED
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'pc/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'pc'
8
+ spec.version = Pc::VERSION
9
+ spec.authors = ['claudiob']
10
+ spec.email = ['claudiob@gmail.com']
11
+ spec.summary = %q{King of the Game Jungle.}
12
+ spec.description = %q{Step-by-step tutorial to modular games in Ruby}
13
+ spec.homepage = 'https://github.com/claudiob/pc'
14
+ spec.license = 'MIT'
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ['lib']
20
+
21
+ spec.add_dependency 'nico', '>= 0.1.1' # Campfire integration
22
+ spec.add_dependency 'gosu' # 2D graphic engine for OS X
23
+
24
+ spec.add_development_dependency 'bundler', '~> 1.5'
25
+ spec.add_development_dependency 'rake', '~> 0'
26
+ spec.add_development_dependency 'rspec'
27
+ end
@@ -0,0 +1,19 @@
1
+ require 'pc/games/odds_and_evens'
2
+
3
+ module Pc
4
+ describe 'OddsAndEvens.compare_moves' do
5
+ context 'given a first hand of 3 fingers' do
6
+ let (:move_a) { 3 }
7
+
8
+ context 'versus a second hand of 4 fingers' do
9
+ let (:move_b) { 4 }
10
+ it { expect(OddsAndEvens.compare_moves move_a, move_b).to eq 1}
11
+ end
12
+
13
+ context 'versus a second hand of 5 fingers' do
14
+ let (:move_b) { 5 }
15
+ it { expect(OddsAndEvens.compare_moves move_a, move_b).to eq -1}
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,24 @@
1
+ require 'pc/games/rock_paper_scissors'
2
+
3
+ module Pc
4
+ describe 'RockPaperScissors.compare_moves' do
5
+ context 'given a first hand of Rock' do
6
+ let (:move_a) { 'R' }
7
+
8
+ context 'versus a second hand of Scissors' do
9
+ let (:move_b) { 'S' }
10
+ it { expect(RockPaperScissors.compare_moves move_a, move_b).to eq 1}
11
+ end
12
+
13
+ context 'versus a second hand of Paper' do
14
+ let (:move_b) { 'P' }
15
+ it { expect(RockPaperScissors.compare_moves move_a, move_b).to eq -1}
16
+ end
17
+
18
+ context 'versus a second hand of Rock' do
19
+ let (:move_b) { 'R' }
20
+ it { expect(RockPaperScissors.compare_moves move_a, move_b).to eq 0}
21
+ end
22
+ end
23
+ end
24
+ end
metadata ADDED
@@ -0,0 +1,142 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pc
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ platform: ruby
6
+ authors:
7
+ - claudiob
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-06-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: nico
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 0.1.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 0.1.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: gosu
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.5'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.5'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: Step-by-step tutorial to modular games in Ruby
84
+ email:
85
+ - claudiob@gmail.com
86
+ executables:
87
+ - tarzan
88
+ extensions: []
89
+ extra_rdoc_files: []
90
+ files:
91
+ - ".gitignore"
92
+ - ".rspec"
93
+ - Gemfile
94
+ - HISTORY.md
95
+ - LICENSE.txt
96
+ - README.md
97
+ - Rakefile
98
+ - bin/tarzan
99
+ - lib/pc.rb
100
+ - lib/pc/game.rb
101
+ - lib/pc/games/odds_and_evens.rb
102
+ - lib/pc/games/rock_paper_scissors.rb
103
+ - lib/pc/interface.rb
104
+ - lib/pc/interfaces/campfire.rb
105
+ - lib/pc/interfaces/desktop.rb
106
+ - lib/pc/interfaces/desktop/window.rb
107
+ - lib/pc/interfaces/shell.rb
108
+ - lib/pc/loop.rb
109
+ - lib/pc/players/human.rb
110
+ - lib/pc/players/random.rb
111
+ - lib/pc/players/smart.rb
112
+ - lib/pc/tournament.rb
113
+ - lib/pc/version.rb
114
+ - pc.gemspec
115
+ - spec/tarzan/games/odds_and_evens_spec.rb
116
+ - spec/tarzan/games/rock_paper_scissors_spec.rb
117
+ homepage: https://github.com/claudiob/pc
118
+ licenses:
119
+ - MIT
120
+ metadata: {}
121
+ post_install_message:
122
+ rdoc_options: []
123
+ require_paths:
124
+ - lib
125
+ required_ruby_version: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ required_rubygems_version: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ requirements: []
136
+ rubygems_version: 3.0.3
137
+ signing_key:
138
+ specification_version: 4
139
+ summary: King of the Game Jungle.
140
+ test_files:
141
+ - spec/tarzan/games/odds_and_evens_spec.rb
142
+ - spec/tarzan/games/rock_paper_scissors_spec.rb