nachof-zheng 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/zheng +5 -1
- data/config/init.rb +1 -0
- data/lib/zheng.rb +1 -0
- data/lib/zheng/game.rb +25 -4
- data/lib/zheng/player.rb +1 -5
- data/lib/zheng/util.rb +0 -23
- metadata +2 -2
data/bin/zheng
CHANGED
data/config/init.rb
CHANGED
data/lib/zheng.rb
CHANGED
@@ -4,3 +4,4 @@ require File.join(File.dirname(__FILE__), 'zheng', 'rating')
|
|
4
4
|
require File.join(File.dirname(__FILE__), 'zheng', 'player')
|
5
5
|
require File.join(File.dirname(__FILE__), 'zheng', 'game')
|
6
6
|
require File.join(File.dirname(__FILE__), 'zheng', 'actions')
|
7
|
+
require File.join(File.dirname(__FILE__), 'zheng', 'interactive')
|
data/lib/zheng/game.rb
CHANGED
@@ -1,19 +1,21 @@
|
|
1
1
|
module Zheng
|
2
2
|
class Game < Sequel::Model
|
3
|
+
before_create :set_ratings
|
4
|
+
before_create :set_date
|
5
|
+
|
3
6
|
set_schema do
|
4
7
|
primary_key :id
|
5
8
|
foreign_key :left_id, :players
|
6
9
|
foreign_key :right_id, :players
|
7
10
|
text :winner, :null => false
|
11
|
+
float :left_rating_before, :null => false
|
12
|
+
float :right_rating_before, :null => false
|
13
|
+
date :date, :null => false
|
8
14
|
end
|
9
15
|
|
10
|
-
include Util
|
11
|
-
|
12
16
|
belongs_to :left, :class => :Player
|
13
17
|
belongs_to :right, :class => :Player
|
14
18
|
|
15
|
-
sequel_accessor :right_id, :left_id
|
16
|
-
|
17
19
|
def winner
|
18
20
|
@values[:winner].to_sym
|
19
21
|
end
|
@@ -27,9 +29,28 @@ module Zheng
|
|
27
29
|
return Parameters::Con(player.rating) * (result(which_player) - Parameters::expected(player.rating, opponent.rating))
|
28
30
|
end
|
29
31
|
|
32
|
+
def rating_before which_player
|
33
|
+
send("#{which_player.to_s}_rating_before".to_sym)
|
34
|
+
end
|
35
|
+
def rating_after which_player
|
36
|
+
rating_before(which_player) + rating_change_for(which_player)
|
37
|
+
end
|
38
|
+
|
30
39
|
def result which_player
|
31
40
|
(which_player == winner) ? 1 : 0
|
32
41
|
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def set_ratings
|
46
|
+
self.left_rating_before = left.rating
|
47
|
+
self.right_rating_before = right.rating
|
48
|
+
end
|
49
|
+
|
50
|
+
def set_date
|
51
|
+
self.date = Date.today if date.nil?
|
52
|
+
end
|
53
|
+
|
33
54
|
end
|
34
55
|
end
|
35
56
|
|
data/lib/zheng/player.rb
CHANGED
@@ -3,14 +3,10 @@ module Zheng
|
|
3
3
|
set_schema do
|
4
4
|
primary_key :id
|
5
5
|
text :name, :null => false, :unique => true
|
6
|
-
|
6
|
+
float :rating, :null => false
|
7
7
|
boolean :external, :default => false
|
8
8
|
end
|
9
9
|
|
10
|
-
include Util
|
11
|
-
|
12
|
-
sequel_accessor :name, :rating
|
13
|
-
|
14
10
|
def rank
|
15
11
|
Rating.new(rating).rank
|
16
12
|
end
|
data/lib/zheng/util.rb
CHANGED
@@ -1,27 +1,4 @@
|
|
1
1
|
module Zheng
|
2
|
-
module Util
|
3
|
-
|
4
|
-
def self.included(base)
|
5
|
-
base.extend ClassMethods
|
6
|
-
end
|
7
|
-
|
8
|
-
module ClassMethods
|
9
|
-
def sequel_accessor *params
|
10
|
-
params.each do |method|
|
11
|
-
class_eval <<-end_eval
|
12
|
-
def #{method.to_s}
|
13
|
-
@values[:#{method.to_s}]
|
14
|
-
end
|
15
|
-
def #{method.to_s}= v
|
16
|
-
@values[:#{method.to_s}] = v
|
17
|
-
end
|
18
|
-
end_eval
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|
24
|
-
|
25
2
|
module_function
|
26
3
|
# I put it here so I can easily silence it for tests
|
27
4
|
def output text
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nachof-zheng
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nacho Facello
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-01-
|
12
|
+
date: 2009-01-26 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|