liars_dice 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/liars_dice.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |gem|
2
2
  gem.name = 'liars_dice'
3
- gem.version = '0.0.4'
4
- gem.date = '2013-07-09'
3
+ gem.version = '0.0.5'
4
+ gem.date = '2013-07-10'
5
5
  gem.summary = "Liar's Dice game"
6
6
  gem.description = "A liar's dice botting environment, developed by Aisle50"
7
7
  gem.authors = ['Ben Schmeckpeper', 'Chris Doyle', 'Max Page', 'Molly Struve']
@@ -2,14 +2,37 @@ module LiarsDice
2
2
  class CommandLineWatcher
3
3
  include Watcher
4
4
 
5
+ attr_reader :names
6
+
5
7
  def initialize
6
- append_after_dice_rolled lambda{|dice| puts "Dice Rolled: #{dice.inspect.to_s}" }
7
- append_after_bid lambda{|seat, bid| puts "Seat #{seat} bids #{bid}" }
8
- append_after_bs lambda{|seat| puts "Seat #{seat} calls BS" }
9
- append_after_game lambda{|winner| puts "Game over. Seat #{winner} wins." }
10
- append_after_round lambda{|loser| puts "Seat #{loser} loses a die" }
11
- append_after_invalid_bid lambda{|loser| puts "Seat #{loser} made an invalid bid" }
12
- append_after_seats_assigned lambda{|assignments| assignments.each{|number, name| puts "Seat #{number}: #{name}" } }
8
+ self.names = {}
9
+ append_after_dice_rolled method(:print_dice)
10
+ append_after_bid lambda{|seat, bid| puts "#{name(seat, true)} bids #{bid}" }
11
+ append_after_bs lambda{|seat| puts "#{name(seat)} calls BS" }
12
+ append_after_game lambda{|winner| puts "Game over. #{name(winner)} wins." }
13
+ append_after_round lambda{|loser| puts "#{name(loser)} loses a die" }
14
+ append_after_invalid_bid lambda{|seat| puts "#{name(seat)} made an invalid bid" }
15
+ append_after_seats_assigned lambda{|assignments| self.names = assignments }
16
+ end
17
+
18
+ def name(seat_number, justified=false)
19
+ (names[seat_number] || "Seat #{seat_number}").ljust(justified ? justification : 0)
20
+ end
21
+
22
+ def justification
23
+ @justification ||= names.values.map(&:length).max
24
+ @justification
25
+ end
26
+
27
+ def names=(value)
28
+ @names = value
29
+ @names.each{|number, name| puts "Seat #{number}: #{name}" }
30
+ end
31
+
32
+ def print_dice(dice)
33
+ dice.each_with_index { |roll, seat| puts "#{name(seat, true)} Rolled: #{roll.inspect.to_s}" }
34
+ all_dice = dice.flatten
35
+ (1..6).to_a.each {|face_value| puts Bid.new(all_dice.select{|d| d == face_value}.count, face_value) }
13
36
  end
14
37
  end
15
38
  end
@@ -69,7 +69,11 @@ module LiarsDice
69
69
 
70
70
  def initialize(seats)
71
71
  self.seat_assignments = {}
72
- seats.each{|seat| self.seat_assignments[seat.number] = seat.player.class }
72
+ seats.each do |seat|
73
+ name = seat.player.name if seat.player.respond_to? :name
74
+ name ||= seat.player.class.to_s
75
+ self.seat_assignments[seat.number] = name
76
+ end
73
77
  end
74
78
  end
75
79
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: liars_dice
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2013-07-09 00:00:00.000000000Z
15
+ date: 2013-07-10 00:00:00.000000000Z
16
16
  dependencies: []
17
17
  description: A liar's dice botting environment, developed by Aisle50
18
18
  email: dev@aisle50.com