mjai 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1b26ecd43a0cc54d879fafae478a81d0ae92feb5
4
+ data.tar.gz: e0f50f8d4119fffa82471c8d8203345060016a9e
5
+ SHA512:
6
+ metadata.gz: 0c5c36972788a817ab2813f8425d42866c0ac2f5028eb213f6b0942c41252d42b97d732b84d1b525edbb8413423563f48a5ec0210ad12bdd08b2d7d6ed6bb73a
7
+ data.tar.gz: 43e7e649cb6ba6587d9b1d6be3c1b804b97d29f5538bea73a98a2c3ee827be075e9b57dfbf8138acf19de59904667c081c7a20e98a9549baf0e777dfc677b898
@@ -9,7 +9,8 @@ module Mjai
9
9
  class ActiveGame < Game
10
10
 
11
11
  ACTION_PREFERENCES = {
12
- :hora => 3,
12
+ :hora => 4,
13
+ :ryukyoku => 3,
13
14
  :pon => 2,
14
15
  :daiminkan => 2,
15
16
  :chi => 1,
@@ -23,6 +24,9 @@ module Mjai
23
24
  attr_accessor(:game_type)
24
25
 
25
26
  def play()
27
+ if ![:one_kyoku, :tonpu, :tonnan].include?(@game_type)
28
+ raise("Unknown game_type")
29
+ end
26
30
  begin
27
31
  do_action({:type => :start_game, :names => self.players.map(){ |pl| pl.name }})
28
32
  @ag_oya = @ag_chicha = @players[0]
@@ -75,12 +79,15 @@ module Mjai
75
79
  actions = [Action.new({:type => :tsumo, :actor => @actor, :pai => @pipais.pop()})]
76
80
  while !actions.empty?
77
81
  if actions[0].type == :hora
78
- # actions.size >= 2 in case of double/triple ron
79
- process_hora(actions)
82
+ if actions.size >= 3
83
+ process_ryukyoku(:sanchaho, actions.map(){ |a| a.actor })
84
+ else
85
+ process_hora(actions)
86
+ end
80
87
  throw(:end_kyoku)
81
88
  elsif actions[0].type == :ryukyoku
82
89
  raise("should not happen") if actions.size != 1
83
- process_kyushukyuhai(actions[0].actor)
90
+ process_ryukyoku(:kyushukyuhai, [actions[0].actor])
84
91
  throw(:end_kyoku)
85
92
  else
86
93
  raise("should not happen") if actions.size != 1
@@ -122,11 +129,31 @@ module Mjai
122
129
  if [:daiminkan, :kakan].include?(action.type)
123
130
  kandora_pending = true
124
131
  end
132
+ if action.type == :dahai && (next_actions.empty? || next_actions[0].type != :hora)
133
+ check_ryukyoku()
134
+ end
125
135
  actions = next_actions
126
136
  end
127
137
  end
128
138
  end
129
139
 
140
+ def check_ryukyoku()
141
+ if players.all?(){ |pl| pl.reach? }
142
+ process_ryukyoku(:suchareach)
143
+ throw(:end_kyoku)
144
+ end
145
+ if first_turn? && !players[0].sutehais.empty? && players[0].sutehais[0].fonpai? &&
146
+ players.all?(){ |pl| pl.sutehais == [players[0].sutehais[0]] }
147
+ process_ryukyoku(:sufonrenta)
148
+ throw(:end_kyoku)
149
+ end
150
+ kan_counts = players.map(){ |pl| pl.furos.count(){ |f| f.kan? } }
151
+ if kan_counts.inject(0){ |total, n| total + n } == 4 && !kan_counts.include?(4)
152
+ process_ryukyoku(:sukaikan)
153
+ throw(:end_kyoku)
154
+ end
155
+ end
156
+
130
157
  def update_state(action)
131
158
  super(action)
132
159
  if action.type == :tsumo && @pipais.size != self.num_pipais
@@ -182,20 +209,24 @@ module Mjai
182
209
  update_oya(actions.any?(){ |a| a.actor == self.oya }, false)
183
210
  end
184
211
 
185
- def process_kyushukyuhai(actor)
212
+ def process_ryukyoku(reason, actors=[])
213
+ actor = (reason == :kyushukyuhai) ? actors[0] : nil
214
+ tenpais = []
186
215
  tehais = []
187
216
  for player in players
188
- if player == actor
217
+ if reason == :suchareach || actors.include?(player) # :sanchaho, :kyushukyuhai
218
+ tenpais.push(reason != :kyushukyuhai)
189
219
  tehais.push(player.tehais)
190
220
  else
221
+ tenpais.push(false)
191
222
  tehais.push([Pai::UNKNOWN] * player.tehais.size)
192
223
  end
193
224
  end
194
225
  do_action({
195
226
  :type => :ryukyoku,
196
227
  :actor => actor,
197
- :reason => :kyushukyuhai,
198
- :tenpais => [false, false, false, false],
228
+ :reason => reason,
229
+ :tenpais => tenpais,
199
230
  :tehais => tehais,
200
231
  :deltas => [0, 0, 0, 0],
201
232
  :scores => players.map(){ |player| player.score }
@@ -24,6 +24,10 @@ module Mjai
24
24
  @fields = fields
25
25
  end
26
26
 
27
+ def kan?
28
+ return FURO_TYPE_TO_MENTSU_TYPE[self.type] == :kantsu
29
+ end
30
+
27
31
  def pais
28
32
  return (self.taken ? [self.taken] : []) + self.consumed
29
33
  end
@@ -373,6 +373,10 @@ module Mjai
373
373
  return @first_turn
374
374
  end
375
375
 
376
+ def can_kan?
377
+ return @dora_markers.size < 5
378
+ end
379
+
376
380
  def ranked_players
377
381
  return @players.sort_by(){ |pl| [-pl.score, distance(pl, @chicha)] }
378
382
  end
@@ -234,13 +234,15 @@ module Mjai
234
234
  !self.reach? &&
235
235
  @game.num_pipais > 0
236
236
 
237
- for consumed in get_pais_combinations([action.pai] * 3, @tehais)
238
- result.push(create_action({
239
- :type => :daiminkan,
240
- :pai => action.pai,
241
- :consumed => consumed,
242
- :target => action.actor
243
- }))
237
+ if @game.can_kan?
238
+ for consumed in get_pais_combinations([action.pai] * 3, @tehais)
239
+ result.push(create_action({
240
+ :type => :daiminkan,
241
+ :pai => action.pai,
242
+ :consumed => consumed,
243
+ :target => action.actor
244
+ }))
245
+ end
244
246
  end
245
247
  for consumed in get_pais_combinations([action.pai] * 2, @tehais)
246
248
  result.push(create_action({
@@ -272,7 +274,8 @@ module Mjai
272
274
 
273
275
  elsif action.type == :tsumo &&
274
276
  action.actor == self &&
275
- @game.num_pipais > 0
277
+ @game.num_pipais > 0 &&
278
+ @game.can_kan?
276
279
 
277
280
  for pai in self.tehais.uniq
278
281
  same_pais = self.tehais.select(){ |tp| tp.same_symbol?(pai) }
metadata CHANGED
@@ -1,78 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mjai
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
5
- prerelease:
4
+ version: 0.0.7
6
5
  platform: ruby
7
6
  authors:
8
7
  - Hiroshi Ichikawa
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-12-31 00:00:00.000000000 Z
11
+ date: 2014-03-31 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: json
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: 1.6.0
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: 1.6.0
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: nokogiri
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - ">="
36
32
  - !ruby/object:Gem::Version
37
33
  version: 1.5.0
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - ">="
44
39
  - !ruby/object:Gem::Version
45
40
  version: 1.5.0
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: bundler
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - ">="
52
46
  - !ruby/object:Gem::Version
53
47
  version: 1.0.0
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - ">="
60
53
  - !ruby/object:Gem::Version
61
54
  version: 1.0.0
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: sass
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - ">="
68
60
  - !ruby/object:Gem::Version
69
61
  version: 3.0.0
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - ">="
76
67
  - !ruby/object:Gem::Version
77
68
  version: 3.0.0
78
69
  description: Game server for Japanese Mahjong AI.
@@ -85,387 +76,386 @@ executables:
85
76
  extensions: []
86
77
  extra_rdoc_files: []
87
78
  files:
88
- - bin/mjai-shanten
89
79
  - bin/mjai
80
+ - bin/mjai-shanten
90
81
  - bin/mjai-tsumogiri
91
- - lib/mjai/archive_player.rb
92
- - lib/mjai/tsumogiri_player.rb
93
- - lib/mjai/active_game.rb
94
- - lib/mjai/tcp_game_server.rb
95
- - lib/mjai/mentsu.rb
96
- - lib/mjai/tcp_active_game_server.rb
97
- - lib/mjai/puppet_player.rb
98
82
  - lib/mjai/action.rb
99
- - lib/mjai/shanten_player.rb
100
- - lib/mjai/player.rb
101
- - lib/mjai/tenhou_archive.rb
102
- - lib/mjai/game_stats.rb
103
- - lib/mjai/validation_error.rb
104
- - lib/mjai/hora.rb
105
- - lib/mjai/with_fields.rb
83
+ - lib/mjai/active_game.rb
84
+ - lib/mjai/archive.rb
85
+ - lib/mjai/archive_player.rb
106
86
  - lib/mjai/confidence_interval.rb
107
- - lib/mjai/tcp_client_game.rb
87
+ - lib/mjai/context.rb
88
+ - lib/mjai/file_converter.rb
89
+ - lib/mjai/furo.rb
108
90
  - lib/mjai/game.rb
109
- - lib/mjai/tcp_player.rb
91
+ - lib/mjai/game_stats.rb
92
+ - lib/mjai/hora.rb
110
93
  - lib/mjai/jsonizable.rb
94
+ - lib/mjai/mentsu.rb
111
95
  - lib/mjai/mjai_command.rb
112
- - lib/mjai/file_converter.rb
113
96
  - lib/mjai/mjson_archive.rb
114
- - lib/mjai/tenpai_analysis.rb
115
- - lib/mjai/archive.rb
97
+ - lib/mjai/pai.rb
98
+ - lib/mjai/player.rb
99
+ - lib/mjai/puppet_player.rb
116
100
  - lib/mjai/shanten_analysis.rb
101
+ - lib/mjai/shanten_player.rb
102
+ - lib/mjai/tcp_active_game_server.rb
103
+ - lib/mjai/tcp_client_game.rb
104
+ - lib/mjai/tcp_game_server.rb
105
+ - lib/mjai/tcp_player.rb
106
+ - lib/mjai/tenhou_archive.rb
107
+ - lib/mjai/tenpai_analysis.rb
108
+ - lib/mjai/tsumogiri_player.rb
109
+ - lib/mjai/validation_error.rb
110
+ - lib/mjai/with_fields.rb
117
111
  - lib/mjai/ymatsux_shanten_analysis.rb
118
- - lib/mjai/context.rb
119
- - lib/mjai/furo.rb
120
- - lib/mjai/pai.rb
121
- - share/html/images/p_ps9_4.gif
122
- - share/html/images/p_ss9_3.gif
112
+ - share/html/css/style.css
113
+ - share/html/css/style.scss
123
114
  - share/html/images/README.txt
124
- - share/html/images/p_ji_s_6.gif
125
- - share/html/images/p_ss3_3.gif
126
- - share/html/images/p_ms5_6.gif
127
- - share/html/images/p_ps3_0.gif
128
- - share/html/images/p_ps2_1.gif
129
- - share/html/images/blank.png
130
- - share/html/images/p_ss2_2.gif
131
- - share/html/images/b_8_2.gif
132
- - share/html/images/p_ps9_5.gif
133
- - share/html/images/c_e_4.gif
134
- - share/html/images/p_ji_c_0.gif
135
- - share/html/images/c_w_1.gif
136
- - share/html/images/p_ps6_5.gif
137
- - share/html/images/p_ms9_5.gif
115
+ - share/html/images/b_1_1.gif
138
116
  - share/html/images/b_1_2.gif
139
- - share/html/images/p_ms2_1.gif
140
- - share/html/images/p_ss8_1.gif
141
- - share/html/images/p_ss1_3.gif
142
- - share/html/images/p_ms7_5.gif
143
- - share/html/images/c_w_2.gif
144
- - share/html/images/p_ps3_2.gif
145
- - share/html/images/p_ps4_4.gif
146
- - share/html/images/p_ss4_1.gif
147
- - share/html/images/p_ss5_6.gif
148
- - share/html/images/p_ss1_4.gif
149
- - share/html/images/p_ms3_0.gif
150
- - share/html/images/p_ps6_3.gif
151
- - share/html/images/p_ms2_0.gif
117
+ - share/html/images/b_5_1.gif
118
+ - share/html/images/b_5_2.gif
119
+ - share/html/images/b_8_1.gif
120
+ - share/html/images/b_8_2.gif
121
+ - share/html/images/b_9_1.gif
122
+ - share/html/images/b_9_2.gif
123
+ - share/html/images/blank.png
124
+ - share/html/images/c_c_1.gif
125
+ - share/html/images/c_c_2.gif
152
126
  - share/html/images/c_c_3.gif
153
- - share/html/images/p_ps5_7.gif
154
- - share/html/images/p_ps9_2.gif
155
- - share/html/images/p_ms9_4.gif
127
+ - share/html/images/c_c_4.gif
128
+ - share/html/images/c_e_1.gif
129
+ - share/html/images/c_e_2.gif
130
+ - share/html/images/c_e_3.gif
131
+ - share/html/images/c_e_4.gif
156
132
  - share/html/images/c_n_1.gif
157
- - share/html/images/p_ps3_6.gif
158
- - share/html/images/p_ps2_3.gif
159
- - share/html/images/p_ps9_3.gif
160
- - share/html/images/p_ms6_6.gif
161
- - share/html/images/p_ss7_4.gif
162
- - share/html/images/p_ms3_4.gif
163
- - share/html/images/p_ji_h_3.gif
164
- - share/html/images/p_ms1_3.gif
165
- - share/html/images/p_ms4_2.gif
166
- - share/html/images/c_s_2.gif
167
- - share/html/images/p_ms4_1.gif
168
- - share/html/images/p_ss6_4.gif
169
- - share/html/images/p_ss9_5.gif
170
- - share/html/images/p_ps4_3.gif
171
- - share/html/images/p_ji_c_2.gif
172
- - share/html/images/p_no_0.gif
173
- - share/html/images/p_ss5_0.gif
174
- - share/html/images/p_ji_n_3.gif
175
- - share/html/images/p_ms3_6.gif
176
- - share/html/images/p_ms7_1.gif
177
- - share/html/images/p_ms3_1.gif
178
- - share/html/images/p_ps4_2.gif
179
- - share/html/images/p_ps7_7.gif
180
- - share/html/images/p_ss6_5.gif
181
- - share/html/images/p_bk_0.gif
182
- - share/html/images/p_ps3_5.gif
183
- - share/html/images/p_ms9_3.gif
184
- - share/html/images/p_ps1_2.gif
185
- - share/html/images/p_ps7_2.gif
186
- - share/html/images/p_ps5_5.gif
187
- - share/html/images/p_ms4_4.gif
188
- - share/html/images/p_ms5_0.gif
189
- - share/html/images/c_c_2.gif
190
- - share/html/images/p_ji_c_3.gif
191
- - share/html/images/p_ms5r_3.png
192
- - share/html/images/p_ps5_6.gif
193
- - share/html/images/p_ji_n_4.gif
194
- - share/html/images/p_ms2_7.gif
195
- - share/html/images/p_ms6_2.gif
196
- - share/html/images/p_ps2_5.gif
197
- - share/html/images/p_ss4_7.gif
133
+ - share/html/images/c_n_2.gif
134
+ - share/html/images/c_n_3.gif
135
+ - share/html/images/c_n_4.gif
198
136
  - share/html/images/c_s_1.gif
199
- - share/html/images/p_ss9_7.gif
200
- - share/html/images/p_ps3_1.gif
201
- - share/html/images/p_ms6_5.gif
202
- - share/html/images/p_no_2.gif
203
- - share/html/images/p_ss8_7.gif
204
- - share/html/images/p_ms1_0.gif
205
- - share/html/images/p_ss5_5.gif
206
- - share/html/images/p_ms1_7.gif
207
- - share/html/images/p_ji_n_1.gif
137
+ - share/html/images/c_s_2.gif
138
+ - share/html/images/c_s_3.gif
208
139
  - share/html/images/c_s_4.gif
209
- - share/html/images/p_ms9_0.gif
210
- - share/html/images/p_ps8_1.gif
211
- - share/html/images/p_ms9_2.gif
212
- - share/html/images/p_ps8_0.gif
213
- - share/html/images/p_ss7_3.gif
214
- - share/html/images/p_ms8_7.gif
215
- - share/html/images/p_ji_s_3.gif
140
+ - share/html/images/c_w_1.gif
141
+ - share/html/images/c_w_2.gif
142
+ - share/html/images/c_w_3.gif
143
+ - share/html/images/c_w_4.gif
144
+ - share/html/images/dice.gif
145
+ - share/html/images/p_bk_0.gif
146
+ - share/html/images/p_bk_1.gif
147
+ - share/html/images/p_bk_2.gif
216
148
  - share/html/images/p_bk_3.gif
217
- - share/html/images/p_ji_w_0.gif
218
- - share/html/images/p_ji_n_5.gif
219
- - share/html/images/p_ms8_2.gif
220
- - share/html/images/p_ss4_0.gif
221
- - share/html/images/p_ss1_5.gif
222
- - share/html/images/p_ss2_5.gif
223
- - share/html/images/p_ss3_2.gif
224
- - share/html/images/p_ms8_1.gif
225
- - share/html/images/c_e_2.gif
226
- - share/html/images/p_ms4_3.gif
227
- - share/html/images/p_ps1_0.gif
228
- - share/html/images/p_ps4_6.gif
229
- - share/html/images/p_ps7_0.gif
230
- - share/html/images/p_ji_s_2.gif
231
- - share/html/images/p_ji_c_6.gif
232
- - share/html/images/p_ji_w_4.gif
233
- - share/html/images/p_ss3_7.gif
234
- - share/html/images/p_ps3_4.gif
235
- - share/html/images/p_ji_s_4.gif
236
- - share/html/images/p_ps8_6.gif
237
- - share/html/images/p_ms7_4.gif
238
- - share/html/images/p_no_4.gif
239
- - share/html/images/p_ps4_5.gif
240
- - share/html/images/c_e_1.gif
241
- - share/html/images/p_ms8_4.gif
242
- - share/html/images/p_ps5r_3.png
243
- - share/html/images/p_ps5_1.gif
244
- - share/html/images/p_ji_w_7.gif
245
- - share/html/images/p_ji_h_5.gif
246
- - share/html/images/p_ps6_1.gif
247
- - share/html/images/p_ji_s_7.gif
248
- - share/html/images/p_ss6_2.gif
249
- - share/html/images/p_ps8_7.gif
250
- - share/html/images/p_ji_s_5.gif
251
- - share/html/images/b_9_2.gif
252
- - share/html/images/p_ms3_5.gif
253
- - share/html/images/p_ss8_3.gif
254
- - share/html/images/p_ji_w_3.gif
255
- - share/html/images/p_ps5_3.gif
149
+ - share/html/images/p_bk_4.gif
256
150
  - share/html/images/p_bk_5.gif
257
- - share/html/images/p_ps2_0.gif
258
151
  - share/html/images/p_bk_6.gif
259
152
  - share/html/images/p_bk_7.gif
260
- - share/html/images/p_ps2_7.gif
261
- - share/html/images/p_no_7.gif
262
- - share/html/images/p_ms9_1.gif
263
- - share/html/images/p_ss2_3.gif
264
- - share/html/images/p_ms5_7.gif
265
- - share/html/images/p_ss9_6.gif
266
- - share/html/images/p_ms8_5.gif
267
- - share/html/images/p_ps3_3.gif
268
- - share/html/images/p_no_5.gif
269
- - share/html/images/p_ss8_5.gif
270
- - share/html/images/p_ss4_4.gif
153
+ - share/html/images/p_ji_c_0.gif
154
+ - share/html/images/p_ji_c_1.gif
155
+ - share/html/images/p_ji_c_2.gif
156
+ - share/html/images/p_ji_c_3.gif
157
+ - share/html/images/p_ji_c_4.gif
158
+ - share/html/images/p_ji_c_5.gif
159
+ - share/html/images/p_ji_c_6.gif
160
+ - share/html/images/p_ji_c_7.gif
161
+ - share/html/images/p_ji_e_0.gif
162
+ - share/html/images/p_ji_e_1.gif
163
+ - share/html/images/p_ji_e_2.gif
164
+ - share/html/images/p_ji_e_3.gif
165
+ - share/html/images/p_ji_e_4.gif
166
+ - share/html/images/p_ji_e_5.gif
167
+ - share/html/images/p_ji_e_6.gif
168
+ - share/html/images/p_ji_e_7.gif
169
+ - share/html/images/p_ji_h_0.gif
170
+ - share/html/images/p_ji_h_1.gif
271
171
  - share/html/images/p_ji_h_2.gif
272
- - share/html/images/p_ss1_1.gif
273
- - share/html/images/p_ps8_5.gif
172
+ - share/html/images/p_ji_h_3.gif
173
+ - share/html/images/p_ji_h_4.gif
174
+ - share/html/images/p_ji_h_5.gif
274
175
  - share/html/images/p_ji_h_6.gif
275
- - share/html/images/p_ps1_1.gif
276
- - share/html/images/c_w_4.gif
176
+ - share/html/images/p_ji_h_7.gif
177
+ - share/html/images/p_ji_n_0.gif
178
+ - share/html/images/p_ji_n_1.gif
179
+ - share/html/images/p_ji_n_2.gif
180
+ - share/html/images/p_ji_n_3.gif
181
+ - share/html/images/p_ji_n_4.gif
182
+ - share/html/images/p_ji_n_5.gif
277
183
  - share/html/images/p_ji_n_6.gif
278
- - share/html/images/p_ps7_4.gif
279
- - share/html/images/p_ss1_2.gif
280
- - share/html/images/p_ms6_7.gif
281
- - share/html/images/p_ss8_2.gif
282
- - share/html/images/p_no_6.gif
283
- - share/html/images/p_ms6_3.gif
284
- - share/html/images/p_ji_w_1.gif
285
- - share/html/images/p_ji_h_1.gif
286
- - share/html/images/p_ms5_2.gif
287
- - share/html/images/p_ms2_3.gif
288
- - share/html/images/p_ps1_6.gif
289
- - share/html/images/p_ms4_6.gif
290
- - share/html/images/p_ji_c_7.gif
291
- - share/html/images/p_ss3_1.gif
292
- - share/html/images/p_ps1_4.gif
293
- - share/html/images/p_ss3_5.gif
294
- - share/html/images/p_ss7_6.gif
295
- - share/html/images/p_ms8_6.gif
296
- - share/html/images/p_ss9_4.gif
297
- - share/html/images/p_ss2_7.gif
298
- - share/html/images/p_ss7_1.gif
299
- - share/html/images/p_ji_n_2.gif
300
- - share/html/images/p_ss6_3.gif
301
- - share/html/images/p_ss2_0.gif
302
184
  - share/html/images/p_ji_n_7.gif
303
- - share/html/images/p_ss1_6.gif
304
- - share/html/images/p_ps4_0.gif
305
- - share/html/images/p_ji_n_0.gif
306
- - share/html/images/p_ps1_7.gif
185
+ - share/html/images/p_ji_s_0.gif
186
+ - share/html/images/p_ji_s_1.gif
187
+ - share/html/images/p_ji_s_2.gif
188
+ - share/html/images/p_ji_s_3.gif
189
+ - share/html/images/p_ji_s_4.gif
190
+ - share/html/images/p_ji_s_5.gif
191
+ - share/html/images/p_ji_s_6.gif
192
+ - share/html/images/p_ji_s_7.gif
193
+ - share/html/images/p_ji_w_0.gif
194
+ - share/html/images/p_ji_w_1.gif
195
+ - share/html/images/p_ji_w_2.gif
196
+ - share/html/images/p_ji_w_3.gif
197
+ - share/html/images/p_ji_w_4.gif
198
+ - share/html/images/p_ji_w_5.gif
199
+ - share/html/images/p_ji_w_6.gif
200
+ - share/html/images/p_ji_w_7.gif
201
+ - share/html/images/p_ms1_0.gif
202
+ - share/html/images/p_ms1_1.gif
203
+ - share/html/images/p_ms1_2.gif
204
+ - share/html/images/p_ms1_3.gif
307
205
  - share/html/images/p_ms1_4.gif
206
+ - share/html/images/p_ms1_5.gif
207
+ - share/html/images/p_ms1_6.gif
208
+ - share/html/images/p_ms1_7.gif
209
+ - share/html/images/p_ms2_0.gif
210
+ - share/html/images/p_ms2_1.gif
211
+ - share/html/images/p_ms2_2.gif
212
+ - share/html/images/p_ms2_3.gif
213
+ - share/html/images/p_ms2_4.gif
214
+ - share/html/images/p_ms2_5.gif
215
+ - share/html/images/p_ms2_6.gif
216
+ - share/html/images/p_ms2_7.gif
217
+ - share/html/images/p_ms3_0.gif
218
+ - share/html/images/p_ms3_1.gif
219
+ - share/html/images/p_ms3_2.gif
308
220
  - share/html/images/p_ms3_3.gif
309
- - share/html/images/c_c_1.gif
310
- - share/html/images/p_ji_s_0.gif
311
- - share/html/images/p_ps8_3.gif
312
- - share/html/images/p_ms7_6.gif
313
- - share/html/images/p_ss6_1.gif
314
- - share/html/images/c_w_3.gif
315
- - share/html/images/p_ss3_0.gif
221
+ - share/html/images/p_ms3_4.gif
222
+ - share/html/images/p_ms3_5.gif
223
+ - share/html/images/p_ms3_6.gif
224
+ - share/html/images/p_ms3_7.gif
225
+ - share/html/images/p_ms4_0.gif
226
+ - share/html/images/p_ms4_1.gif
227
+ - share/html/images/p_ms4_2.gif
228
+ - share/html/images/p_ms4_3.gif
229
+ - share/html/images/p_ms4_4.gif
230
+ - share/html/images/p_ms4_5.gif
231
+ - share/html/images/p_ms4_6.gif
232
+ - share/html/images/p_ms4_7.gif
233
+ - share/html/images/p_ms5_0.gif
234
+ - share/html/images/p_ms5_1.gif
235
+ - share/html/images/p_ms5_2.gif
236
+ - share/html/images/p_ms5_3.gif
237
+ - share/html/images/p_ms5_4.gif
316
238
  - share/html/images/p_ms5_5.gif
317
- - share/html/images/p_ss2_1.gif
239
+ - share/html/images/p_ms5_6.gif
240
+ - share/html/images/p_ms5_7.gif
241
+ - share/html/images/p_ms5r_1.png
242
+ - share/html/images/p_ms5r_3.png
243
+ - share/html/images/p_ms6_0.gif
318
244
  - share/html/images/p_ms6_1.gif
319
- - share/html/images/p_ji_c_4.gif
320
- - share/html/images/p_ss8_4.gif
245
+ - share/html/images/p_ms6_2.gif
246
+ - share/html/images/p_ms6_3.gif
247
+ - share/html/images/p_ms6_4.gif
248
+ - share/html/images/p_ms6_5.gif
249
+ - share/html/images/p_ms6_6.gif
250
+ - share/html/images/p_ms6_7.gif
251
+ - share/html/images/p_ms7_0.gif
252
+ - share/html/images/p_ms7_1.gif
253
+ - share/html/images/p_ms7_2.gif
254
+ - share/html/images/p_ms7_3.gif
255
+ - share/html/images/p_ms7_4.gif
256
+ - share/html/images/p_ms7_5.gif
257
+ - share/html/images/p_ms7_6.gif
321
258
  - share/html/images/p_ms7_7.gif
322
- - share/html/images/p_ss7_7.gif
323
- - share/html/images/p_ji_h_0.gif
324
- - share/html/images/p_ss6_6.gif
325
- - share/html/images/p_ms5r_1.png
259
+ - share/html/images/p_ms8_0.gif
260
+ - share/html/images/p_ms8_1.gif
261
+ - share/html/images/p_ms8_2.gif
262
+ - share/html/images/p_ms8_3.gif
263
+ - share/html/images/p_ms8_4.gif
264
+ - share/html/images/p_ms8_5.gif
265
+ - share/html/images/p_ms8_6.gif
266
+ - share/html/images/p_ms8_7.gif
267
+ - share/html/images/p_ms9_0.gif
268
+ - share/html/images/p_ms9_1.gif
269
+ - share/html/images/p_ms9_2.gif
270
+ - share/html/images/p_ms9_3.gif
271
+ - share/html/images/p_ms9_4.gif
272
+ - share/html/images/p_ms9_5.gif
273
+ - share/html/images/p_ms9_6.gif
326
274
  - share/html/images/p_ms9_7.gif
327
- - share/html/images/p_bk_2.gif
328
- - share/html/images/p_ps9_0.gif
329
- - share/html/images/p_ps6_6.gif
330
- - share/html/images/p_ps2_6.gif
331
- - share/html/images/p_ms2_6.gif
332
- - share/html/images/p_ms4_5.gif
333
- - share/html/images/p_ps1_5.gif
334
- - share/html/images/p_ps8_2.gif
335
- - share/html/images/p_ss6_7.gif
336
- - share/html/images/p_ms5_4.gif
337
- - share/html/images/p_bk_1.gif
338
- - share/html/images/p_ji_c_5.gif
339
- - share/html/images/p_ji_w_2.gif
275
+ - share/html/images/p_no_0.gif
276
+ - share/html/images/p_no_1.gif
277
+ - share/html/images/p_no_2.gif
340
278
  - share/html/images/p_no_3.gif
341
- - share/html/images/p_ms6_0.gif
342
- - share/html/images/p_ms4_7.gif
343
- - share/html/images/p_ss8_0.gif
344
- - share/html/images/p_ps4_7.gif
345
- - share/html/images/p_ss7_0.gif
346
- - share/html/images/p_ss5r_3.png
347
- - share/html/images/p_ss3_6.gif
348
- - share/html/images/p_ps9_6.gif
349
- - share/html/images/p_ss5_2.gif
350
- - share/html/images/p_ms1_2.gif
279
+ - share/html/images/p_no_4.gif
280
+ - share/html/images/p_no_5.gif
281
+ - share/html/images/p_no_6.gif
282
+ - share/html/images/p_no_7.gif
283
+ - share/html/images/p_ps1_0.gif
284
+ - share/html/images/p_ps1_1.gif
285
+ - share/html/images/p_ps1_2.gif
286
+ - share/html/images/p_ps1_3.gif
287
+ - share/html/images/p_ps1_4.gif
288
+ - share/html/images/p_ps1_5.gif
289
+ - share/html/images/p_ps1_6.gif
290
+ - share/html/images/p_ps1_7.gif
291
+ - share/html/images/p_ps2_0.gif
292
+ - share/html/images/p_ps2_1.gif
293
+ - share/html/images/p_ps2_2.gif
294
+ - share/html/images/p_ps2_3.gif
295
+ - share/html/images/p_ps2_4.gif
296
+ - share/html/images/p_ps2_5.gif
297
+ - share/html/images/p_ps2_6.gif
298
+ - share/html/images/p_ps2_7.gif
299
+ - share/html/images/p_ps3_0.gif
300
+ - share/html/images/p_ps3_1.gif
301
+ - share/html/images/p_ps3_2.gif
302
+ - share/html/images/p_ps3_3.gif
303
+ - share/html/images/p_ps3_4.gif
304
+ - share/html/images/p_ps3_5.gif
305
+ - share/html/images/p_ps3_6.gif
351
306
  - share/html/images/p_ps3_7.gif
352
- - share/html/images/p_ss2_4.gif
307
+ - share/html/images/p_ps4_0.gif
308
+ - share/html/images/p_ps4_1.gif
309
+ - share/html/images/p_ps4_2.gif
310
+ - share/html/images/p_ps4_3.gif
311
+ - share/html/images/p_ps4_4.gif
312
+ - share/html/images/p_ps4_5.gif
313
+ - share/html/images/p_ps4_6.gif
314
+ - share/html/images/p_ps4_7.gif
353
315
  - share/html/images/p_ps5_0.gif
316
+ - share/html/images/p_ps5_1.gif
317
+ - share/html/images/p_ps5_2.gif
318
+ - share/html/images/p_ps5_3.gif
354
319
  - share/html/images/p_ps5_4.gif
355
- - share/html/images/p_ji_e_5.gif
356
- - share/html/images/p_ps6_0.gif
357
- - share/html/images/p_ji_e_6.gif
320
+ - share/html/images/p_ps5_5.gif
321
+ - share/html/images/p_ps5_6.gif
322
+ - share/html/images/p_ps5_7.gif
358
323
  - share/html/images/p_ps5r_1.png
359
- - share/html/images/p_ps2_4.gif
360
- - share/html/images/c_c_4.gif
361
- - share/html/images/p_ji_h_7.gif
362
- - share/html/images/p_ps6_7.gif
363
- - share/html/images/p_ss8_6.gif
364
- - share/html/images/b_5_1.gif
365
- - share/html/images/p_ji_w_6.gif
366
- - share/html/images/p_ms3_2.gif
324
+ - share/html/images/p_ps5r_3.png
325
+ - share/html/images/p_ps6_0.gif
326
+ - share/html/images/p_ps6_1.gif
367
327
  - share/html/images/p_ps6_2.gif
368
- - share/html/images/p_ps9_1.gif
369
- - share/html/images/p_ss9_1.gif
370
- - share/html/images/b_9_1.gif
371
- - share/html/images/p_ss7_2.gif
372
- - share/html/images/c_e_3.gif
373
- - share/html/images/p_ss4_3.gif
374
- - share/html/images/p_no_1.gif
375
- - share/html/images/p_ss5_4.gif
376
- - share/html/images/p_ss5_3.gif
377
- - share/html/images/p_ji_s_1.gif
378
- - share/html/images/p_ms5_3.gif
379
- - share/html/images/p_ji_e_0.gif
380
- - share/html/images/p_ms4_0.gif
381
- - share/html/images/p_ss4_2.gif
382
- - share/html/images/c_n_4.gif
383
- - share/html/images/p_ss1_0.gif
384
- - share/html/images/c_n_3.gif
385
- - share/html/images/p_ss7_5.gif
386
- - share/html/images/p_ms9_6.gif
387
- - share/html/images/p_ji_e_7.gif
388
- - share/html/images/p_ms5_1.gif
389
- - share/html/images/p_ss5_1.gif
390
- - share/html/images/p_ji_c_1.gif
391
- - share/html/images/p_ji_e_3.gif
392
- - share/html/images/b_1_1.gif
393
- - share/html/images/c_s_3.gif
394
- - share/html/images/p_ss6_0.gif
395
- - share/html/images/p_ps5_2.gif
396
- - share/html/images/p_ps2_2.gif
397
- - share/html/images/p_ps8_4.gif
398
- - share/html/images/b_5_2.gif
399
- - share/html/images/p_ms3_7.gif
400
- - share/html/images/p_ji_e_2.gif
401
- - share/html/images/p_ms2_4.gif
402
- - share/html/images/c_n_2.gif
403
- - share/html/images/p_ss3_4.gif
404
- - share/html/images/p_ss1_7.gif
405
- - share/html/images/p_ms8_0.gif
406
- - share/html/images/p_ss5_7.gif
407
- - share/html/images/p_ps7_6.gif
408
- - share/html/images/p_ms7_2.gif
409
- - share/html/images/p_ms1_6.gif
410
- - share/html/images/p_ji_h_4.gif
411
- - share/html/images/p_ms7_3.gif
412
- - share/html/images/p_ms6_4.gif
413
- - share/html/images/p_ss4_5.gif
414
- - share/html/images/dice.gif
415
- - share/html/images/p_ji_e_4.gif
416
- - share/html/images/p_ji_w_5.gif
328
+ - share/html/images/p_ps6_3.gif
417
329
  - share/html/images/p_ps6_4.gif
418
- - share/html/images/p_ms1_1.gif
419
- - share/html/images/p_ms1_5.gif
420
- - share/html/images/p_ps9_7.gif
421
- - share/html/images/p_ss2_6.gif
422
- - share/html/images/p_ms7_0.gif
423
- - share/html/images/p_ji_e_1.gif
330
+ - share/html/images/p_ps6_5.gif
331
+ - share/html/images/p_ps6_6.gif
332
+ - share/html/images/p_ps6_7.gif
333
+ - share/html/images/p_ps7_0.gif
424
334
  - share/html/images/p_ps7_1.gif
425
- - share/html/images/p_ms8_3.gif
335
+ - share/html/images/p_ps7_2.gif
426
336
  - share/html/images/p_ps7_3.gif
427
- - share/html/images/p_bk_4.gif
428
- - share/html/images/p_ps4_1.gif
429
- - share/html/images/p_ms2_2.gif
430
- - share/html/images/p_ss9_0.gif
337
+ - share/html/images/p_ps7_4.gif
431
338
  - share/html/images/p_ps7_5.gif
339
+ - share/html/images/p_ps7_6.gif
340
+ - share/html/images/p_ps7_7.gif
341
+ - share/html/images/p_ps8_0.gif
342
+ - share/html/images/p_ps8_1.gif
343
+ - share/html/images/p_ps8_2.gif
344
+ - share/html/images/p_ps8_3.gif
345
+ - share/html/images/p_ps8_4.gif
346
+ - share/html/images/p_ps8_5.gif
347
+ - share/html/images/p_ps8_6.gif
348
+ - share/html/images/p_ps8_7.gif
349
+ - share/html/images/p_ps9_0.gif
350
+ - share/html/images/p_ps9_1.gif
351
+ - share/html/images/p_ps9_2.gif
352
+ - share/html/images/p_ps9_3.gif
353
+ - share/html/images/p_ps9_4.gif
354
+ - share/html/images/p_ps9_5.gif
355
+ - share/html/images/p_ps9_6.gif
356
+ - share/html/images/p_ps9_7.gif
357
+ - share/html/images/p_ss1_0.gif
358
+ - share/html/images/p_ss1_1.gif
359
+ - share/html/images/p_ss1_2.gif
360
+ - share/html/images/p_ss1_3.gif
361
+ - share/html/images/p_ss1_4.gif
362
+ - share/html/images/p_ss1_5.gif
363
+ - share/html/images/p_ss1_6.gif
364
+ - share/html/images/p_ss1_7.gif
365
+ - share/html/images/p_ss2_0.gif
366
+ - share/html/images/p_ss2_1.gif
367
+ - share/html/images/p_ss2_2.gif
368
+ - share/html/images/p_ss2_3.gif
369
+ - share/html/images/p_ss2_4.gif
370
+ - share/html/images/p_ss2_5.gif
371
+ - share/html/images/p_ss2_6.gif
372
+ - share/html/images/p_ss2_7.gif
373
+ - share/html/images/p_ss3_0.gif
374
+ - share/html/images/p_ss3_1.gif
375
+ - share/html/images/p_ss3_2.gif
376
+ - share/html/images/p_ss3_3.gif
377
+ - share/html/images/p_ss3_4.gif
378
+ - share/html/images/p_ss3_5.gif
379
+ - share/html/images/p_ss3_6.gif
380
+ - share/html/images/p_ss3_7.gif
381
+ - share/html/images/p_ss4_0.gif
382
+ - share/html/images/p_ss4_1.gif
383
+ - share/html/images/p_ss4_2.gif
384
+ - share/html/images/p_ss4_3.gif
385
+ - share/html/images/p_ss4_4.gif
386
+ - share/html/images/p_ss4_5.gif
432
387
  - share/html/images/p_ss4_6.gif
433
- - share/html/images/p_ps1_3.gif
388
+ - share/html/images/p_ss4_7.gif
389
+ - share/html/images/p_ss5_0.gif
390
+ - share/html/images/p_ss5_1.gif
391
+ - share/html/images/p_ss5_2.gif
392
+ - share/html/images/p_ss5_3.gif
393
+ - share/html/images/p_ss5_4.gif
394
+ - share/html/images/p_ss5_5.gif
395
+ - share/html/images/p_ss5_6.gif
396
+ - share/html/images/p_ss5_7.gif
434
397
  - share/html/images/p_ss5r_1.png
435
- - share/html/images/p_ms2_5.gif
398
+ - share/html/images/p_ss5r_3.png
399
+ - share/html/images/p_ss6_0.gif
400
+ - share/html/images/p_ss6_1.gif
401
+ - share/html/images/p_ss6_2.gif
402
+ - share/html/images/p_ss6_3.gif
403
+ - share/html/images/p_ss6_4.gif
404
+ - share/html/images/p_ss6_5.gif
405
+ - share/html/images/p_ss6_6.gif
406
+ - share/html/images/p_ss6_7.gif
407
+ - share/html/images/p_ss7_0.gif
408
+ - share/html/images/p_ss7_1.gif
409
+ - share/html/images/p_ss7_2.gif
410
+ - share/html/images/p_ss7_3.gif
411
+ - share/html/images/p_ss7_4.gif
412
+ - share/html/images/p_ss7_5.gif
413
+ - share/html/images/p_ss7_6.gif
414
+ - share/html/images/p_ss7_7.gif
415
+ - share/html/images/p_ss8_0.gif
416
+ - share/html/images/p_ss8_1.gif
417
+ - share/html/images/p_ss8_2.gif
418
+ - share/html/images/p_ss8_3.gif
419
+ - share/html/images/p_ss8_4.gif
420
+ - share/html/images/p_ss8_5.gif
421
+ - share/html/images/p_ss8_6.gif
422
+ - share/html/images/p_ss8_7.gif
423
+ - share/html/images/p_ss9_0.gif
424
+ - share/html/images/p_ss9_1.gif
436
425
  - share/html/images/p_ss9_2.gif
437
- - share/html/images/b_8_1.gif
426
+ - share/html/images/p_ss9_3.gif
427
+ - share/html/images/p_ss9_4.gif
428
+ - share/html/images/p_ss9_5.gif
429
+ - share/html/images/p_ss9_6.gif
430
+ - share/html/images/p_ss9_7.gif
438
431
  - share/html/js/archive_player.coffee
439
- - share/html/js/dytem.coffee
440
432
  - share/html/js/archive_player.js
441
- - share/html/js/jquery-1.7.2.min.js
433
+ - share/html/js/dytem.coffee
442
434
  - share/html/js/dytem.js
443
- - share/html/css/style.scss
444
- - share/html/css/style.css
435
+ - share/html/js/jquery-1.7.2.min.js
445
436
  - share/html/views/archive_player.erb
446
437
  homepage: https://github.com/gimite/mjai
447
438
  licenses:
448
439
  - New BSD
440
+ metadata: {}
449
441
  post_install_message:
450
442
  rdoc_options: []
451
443
  require_paths:
452
444
  - lib
453
445
  required_ruby_version: !ruby/object:Gem::Requirement
454
- none: false
455
446
  requirements:
456
- - - ! '>='
447
+ - - ">="
457
448
  - !ruby/object:Gem::Version
458
449
  version: '0'
459
450
  required_rubygems_version: !ruby/object:Gem::Requirement
460
- none: false
461
451
  requirements:
462
- - - ! '>='
452
+ - - ">="
463
453
  - !ruby/object:Gem::Version
464
454
  version: '0'
465
455
  requirements: []
466
456
  rubyforge_project:
467
- rubygems_version: 1.8.23
457
+ rubygems_version: 2.2.2
468
458
  signing_key:
469
- specification_version: 3
459
+ specification_version: 4
470
460
  summary: Game server for Japanese Mahjong AI.
471
461
  test_files: []