cyross-ruby-miyako 2.0.0 → 2.0.5.1.0

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 (102) hide show
  1. data/README +106 -154
  2. data/defines.h +144 -0
  3. data/{miyako_no_katana/extconf.rb → extconf.rb} +10 -0
  4. data/extern.h +29 -0
  5. data/install_miyako.rb +26 -14
  6. data/lib/Miyako/API/audio.rb +2 -2
  7. data/lib/Miyako/API/basic_data.rb +183 -41
  8. data/lib/Miyako/API/bitmap.rb +474 -2
  9. data/lib/Miyako/API/choices.rb +215 -48
  10. data/lib/Miyako/API/collision.rb +267 -251
  11. data/lib/Miyako/API/diagram.rb +58 -70
  12. data/lib/Miyako/API/drawing.rb +93 -52
  13. data/lib/Miyako/API/fixedmap.rb +233 -120
  14. data/lib/Miyako/API/font.rb +59 -40
  15. data/lib/Miyako/API/input.rb +34 -27
  16. data/lib/Miyako/API/layout.rb +154 -172
  17. data/lib/Miyako/API/map.rb +285 -159
  18. data/lib/Miyako/API/map_event.rb +4 -4
  19. data/lib/Miyako/API/modules.rb +1 -1
  20. data/lib/Miyako/API/movie.rb +8 -5
  21. data/lib/Miyako/API/parts.rb +44 -9
  22. data/lib/Miyako/API/plane.rb +37 -2
  23. data/lib/Miyako/API/screen.rb +90 -22
  24. data/lib/Miyako/API/shape.rb +118 -37
  25. data/lib/Miyako/API/sprite.rb +475 -61
  26. data/lib/Miyako/API/sprite_animation.rb +83 -63
  27. data/lib/Miyako/API/spriteunit.rb +47 -13
  28. data/lib/Miyako/API/story.rb +123 -47
  29. data/lib/Miyako/API/textbox.rb +361 -132
  30. data/lib/Miyako/API/utility.rb +388 -0
  31. data/lib/Miyako/API/viewport.rb +54 -349
  32. data/lib/Miyako/API/yuki.rb +570 -353
  33. data/lib/Miyako/EXT/miyako_cairo.rb +5 -3
  34. data/lib/Miyako/EXT/slides.rb +22 -1
  35. data/lib/Miyako/miyako.rb +12 -13
  36. data/logo/EGSR_logo.png +0 -0
  37. data/logo/EGSR_logo_bg.png +0 -0
  38. data/logo/EGSR_logo_fg.png +0 -0
  39. data/logo/EGSR_title_banner.png +0 -0
  40. data/logo/EGSR_title_logo.png +0 -0
  41. data/logo/miyako.png +0 -0
  42. data/logo/miyako_banner.png +0 -0
  43. data/logo/space.png +0 -0
  44. data/miyako_basicdata.c +590 -0
  45. data/miyako_bitmap.c +1225 -0
  46. data/miyako_collision.c +403 -0
  47. data/miyako_drawing.c +187 -0
  48. data/miyako_font.c +334 -0
  49. data/miyako_hsv.c +830 -0
  50. data/miyako_layout.c +191 -0
  51. data/miyako_no_katana.c +1074 -0
  52. data/miyako_transform.c +438 -0
  53. data/miyako_utility.c +288 -0
  54. data/sample/Animation1/m1ku.rb +10 -31
  55. data/sample/Animation1/readme.txt +6 -6
  56. data/sample/Animation2/lex.rb +1 -0
  57. data/sample/Animation2/readme.txt +6 -6
  58. data/sample/Diagram_sample/diagram_sample_yuki2.rb +152 -48
  59. data/sample/Diagram_sample/readme.txt +9 -6
  60. data/sample/Room3/blue.rb +234 -187
  61. data/sample/Room3/ending.rb +68 -63
  62. data/sample/Room3/green.rb +159 -124
  63. data/sample/Room3/main.rb +50 -32
  64. data/sample/Room3/main_component.rb +3 -2
  65. data/sample/Room3/readme.txt +6 -6
  66. data/sample/Room3/red.rb +161 -134
  67. data/sample/Room3/room3.rb +1 -0
  68. data/sample/Room3/title.rb +75 -62
  69. data/sample/ball_action_sample.rb +204 -0
  70. data/sample/blit_rop.rb +70 -0
  71. data/sample/cairo_sample.rb +25 -0
  72. data/sample/circle_collision_test.rb +66 -0
  73. data/sample/collision_test.rb +33 -0
  74. data/sample/collision_test2.rb +108 -0
  75. data/sample/fixed_map_test/fixed_map_sample.rb +23 -32
  76. data/sample/fixed_map_test/readme.txt +38 -38
  77. data/sample/map_test/chara.rb +17 -9
  78. data/sample/map_test/main_parts.rb +30 -9
  79. data/sample/map_test/main_scene.rb +57 -41
  80. data/sample/map_test/map_manager.rb +13 -30
  81. data/sample/map_test/map_test.rb +2 -2
  82. data/sample/map_test/oasis.rb +17 -11
  83. data/sample/map_test/readme.txt +50 -48
  84. data/sample/map_test/route.rb +46 -33
  85. data/sample/map_test/town.rb +19 -13
  86. data/sample/polygon_test.rb +35 -0
  87. data/sample/rasterscroll.rb +25 -0
  88. data/sample/takahashi.rb +42 -0
  89. data/sample/text.png +0 -0
  90. data/sample/textbox_sample.rb +190 -0
  91. data/sample/transform.rb +54 -0
  92. data/sample/utility_test.rb +73 -0
  93. data/sample/utility_test2.rb +61 -0
  94. data/sample/utility_test3.rb +64 -0
  95. data/sample/utility_test4.rb +73 -0
  96. data/uninstall_miyako.rb +19 -0
  97. data/win/miyako_no_katana.so +0 -0
  98. metadata +165 -148
  99. data/miyako.png +0 -0
  100. data/miyako_banner.png +0 -0
  101. data/miyako_no_katana/miyako_no_katana.c +0 -3301
  102. data/sample/fixed_map_test/map_sample.rb +0 -121
@@ -8,28 +8,27 @@ include Miyako
8
8
  #Screen.fps_view = true
9
9
 
10
10
  def create_arm(num)
11
- spr = Sprite.new({:file=>sprintf("m1ku_arm_#{num}.png"), :type=>:ck})
11
+ spr = Sprite.new(:file=>sprintf("m1ku_arm_#{num}.png"), :type=>:ck)
12
12
  spr.move_to(30, 70)
13
13
  return spr
14
14
  end
15
15
 
16
16
  def create_eye(num)
17
- spr = Sprite.new({:file=>sprintf("m1ku_eye_#{num}.png"), :type=>:ck})
17
+ spr = Sprite.new(:file=>sprintf("m1ku_eye_#{num}.png"), :type=>:ck)
18
18
  spr.move_to(356, 114)
19
19
  return spr
20
20
  end
21
21
 
22
- bk = Sprite.new({:file=>"m1ku_back.jpg", :type=>:as})
23
- back = bk.to_sprite
24
- back.fill([0,0,0])
22
+ back = Sprite.new(:file=>"m1ku_back.jpg", :type=>:as)
23
+ backs = SpriteAnimation.new(:sprite=>Array.new(12){|n| back.to_sprite{|sprite| Bitmap.hue(sprite, sprite, 30 * n) }}, :wait => 0.1).start
25
24
 
26
- body = Sprite.new({:file=>"m1ku_body.png", :type=>:ck})
25
+ body = Sprite.new(:file=>"m1ku_body.png", :type=>:ck)
27
26
  body.move_to(200, 64)
28
27
 
29
- hair_f = Sprite.new({:file=>"m1ku_hair_front.png", :type=>:ck})
28
+ hair_f = Sprite.new(:file=>"m1ku_hair_front.png", :type=>:ck)
30
29
  hair_f.move_to(200, 24)
31
30
 
32
- hair_r = Sprite.new({:file=>"m1ku_hair_rear.png", :type=>:ck})
31
+ hair_r = Sprite.new(:file=>"m1ku_hair_rear.png", :type=>:ck)
33
32
  hair_r.move_to(200, 24)
34
33
 
35
34
  arms = Array.new
@@ -52,24 +51,13 @@ eye_anim_param = {
52
51
  eye_anim = SpriteAnimation.new(eye_anim_param)
53
52
  eye_anim.start
54
53
 
55
- rate = 1.0
56
- amt = -0.1
57
- degree = 0
58
- damt = 10
59
- pos = 0
60
- rate = 10
61
-
54
+ damt = 30
62
55
 
63
56
  # Main Routine
64
57
  Miyako.main_loop do
65
58
  break if Input.quit_or_escape?
66
- back.render
67
- # back.render{|src|
68
- # src.x = pos
69
- # pos += rate
70
- # rate = -10 if pos == 50
71
- # rate = 10 if pos == 0
72
- # }
59
+ backs.render
60
+ backs.update_animation
73
61
  hair_r.render
74
62
  arm_anim.update_animation
75
63
  arm_anim.render
@@ -77,13 +65,4 @@ Miyako.main_loop do
77
65
  eye_anim.update_animation
78
66
  eye_anim.render
79
67
  hair_f.render
80
- back.fill([0,0,0])
81
- Bitmap.hue!(bk.to_unit, back.to_unit, degree)
82
- degree = (degree + damt) % 360
83
- # Bitmap.dec_alpha!(bk.to_unit, back.to_unit, rate, 0, 0)
84
- # rate += amt
85
- # rate = 0.0 if rate < 0.01
86
- # amt = 0.1 if rate == 0.0
87
- # rate = 1.0 if rate > 0.99
88
- # amt = -0.1 if rate == 1.0
89
68
  end
@@ -1,11 +1,11 @@
1
1
  *******************************************************************************
2
2
  �y ��Җ� �z�@�T�C���X��
3
- �y �\�t�g�� �z�@Miyako v1.4.4�T���v��(�A�j���[�V�����P)
4
- �y �o�[�W���� �z�@1.0
5
- �y �쐬�� �z�@2008/01/14
3
+ �y �\�t�g�� �z�@Miyako v2.0�T���v��(�A�j���[�V�����P)
4
+ �y �o�[�W���� �z�@2.0
5
+ �y �쐬�� �z�@2009/04/13
6
6
  �y ��� �z�@�t���[�E�F�A
7
- �y �J������ �z�@Ruby 1.8.6-p111
8
- �y �����^�C�� �z�@Miyako v1.4.4
7
+ �y �J������ �z�@Ruby 1.9.1-p0
8
+ �y �����^�C�� �z�@Miyako v2.0
9
9
  �y �Ή��@�� �z�@Windows 2000/XP/Vista�ALinux
10
10
  �y �Ĕz�z �z�@�C��BSD���C�Z���X�ɂ��
11
11
  �y �]�� �z�@�C��BSD���C�Z���X�ɂ��
@@ -15,7 +15,7 @@
15
15
 
16
16
  �E�T�v
17
17
 
18
- �@���̃v���O�����́AMiyako v1.4.4�ȍ~�ɑΉ�����AMiyako�T���v���v���O�����ł��B
18
+ �@���̃v���O�����́AMiyako v2.0�ȍ~�ɑΉ�����AMiyako�T���v���v���O�����ł��B
19
19
  �@�ǂ����Ō������Ƃ���悤�Ȗ����悤�ȃL�����N�^�[���A����l�M��U���Ă��܂��B
20
20
 
21
21
  �EMiyako�ɂ‚���
@@ -1,3 +1,4 @@
1
+ # -*- encoding: utf-8 -*-
1
2
  #! /usr/bin/ruby
2
3
  # Lex sample for Miyako v2.0
3
4
  # 2008.11.24 Cyross Makoto
@@ -1,11 +1,11 @@
1
1
  *******************************************************************************
2
2
  �y ��Җ� �z�@�T�C���X��
3
- �y �\�t�g�� �z�@Miyako v1.4.4�T���v��(�A�j���[�V�����Q)
4
- �y �o�[�W���� �z�@1.0
5
- �y �쐬�� �z�@2008/01/14
3
+ �y �\�t�g�� �z�@Miyako v2.0�T���v��(�A�j���[�V�����Q)
4
+ �y �o�[�W���� �z�@2.0
5
+ �y �쐬�� �z�@2009/04/13
6
6
  �y ��� �z�@�t���[�E�F�A
7
- �y �J������ �z�@Ruby 1.8.6-p111
8
- �y �����^�C�� �z�@Miyako v1.4.4
7
+ �y �J������ �z�@Ruby 1.9.1-p0
8
+ �y �����^�C�� �z�@Miyako v2.0
9
9
  �y �Ή��@�� �z�@Windows 2000/XP/Vista�ALinux
10
10
  �y �Ĕz�z �z�@�C��BSD���C�Z���X�ɂ��
11
11
  �y �]�� �z�@�C��BSD���C�Z���X�ɂ��
@@ -15,7 +15,7 @@
15
15
 
16
16
  �E�T�v
17
17
 
18
- �@���̃v���O�����́AMiyako v1.4.4�ȍ~�ɑΉ�����AMiyako�T���v���v���O�����ł��B
18
+ �@���̃v���O�����́AMiyako v2.0�ȍ~�ɑΉ�����AMiyako�T���v���v���O�����ł��B
19
19
  �@�ǂ����Ō������Ƃ���悤�Ȗ����悤�ȃL�����N�^�[���A���[�h���[���[���^�]���Ă��܂��B
20
20
 
21
21
  �EMiyako�ɂ‚���
@@ -1,6 +1,7 @@
1
+ # -*- encoding: utf-8 -*-
1
2
  #! /usr/bin/ruby
2
3
  # Diagram sample for Miyako v2.0
3
- # 2008.11.23 Cyross Makoto
4
+ # 2009.1.16 Cyross Makoto
4
5
 
5
6
  require 'Miyako/miyako'
6
7
 
@@ -25,6 +26,10 @@ class MoveSlower
25
26
  @spr.move(-2,0)
26
27
  end
27
28
 
29
+ def render
30
+ @spr.render
31
+ end
32
+
28
33
  def finish?
29
34
  return @finish
30
35
  end
@@ -49,6 +54,10 @@ class MoveFaster
49
54
  @spr.move(-4,0)
50
55
  end
51
56
 
57
+ def render
58
+ @spr.render
59
+ end
60
+
52
61
  def finish?
53
62
  return @finish
54
63
  end
@@ -82,15 +91,16 @@ end
82
91
  class Moving
83
92
  include Diagram::NodeBase
84
93
 
85
- def initialize(chr1, chr2, wait)
94
+ def initialize(parts, wait)
95
+ @parts = parts
86
96
  @pr = {}
87
97
  @pr[:fast] = Diagram::Processor.new{|dia|
88
- dia.add :scroll, MoveFaster.new(chr1), WaitTrigger.new(wait)
98
+ dia.add :scroll, MoveFaster.new(@parts[:c1]), WaitTrigger.new(wait)
89
99
  dia.add_arrow(:scroll, nil)
90
100
  }
91
101
 
92
102
  @pr[:slow] = Diagram::Processor.new{|dia|
93
- dia.add :scroll, MoveSlower.new(chr2), WaitTrigger.new(wait)
103
+ dia.add :scroll, MoveSlower.new(@parts[:c2]), WaitTrigger.new(wait)
94
104
  dia.add_arrow(:scroll, nil)
95
105
  }
96
106
 
@@ -102,24 +112,37 @@ class Moving
102
112
  end
103
113
 
104
114
  def update
105
- @finished = @pr.keys.inject(true){|r, k| r &= @pr[k].finish? } # アニメーション処理が終了するまで繰り返し
115
+ @finished = @pr.keys.inject(true){|r, k|
116
+ @pr[k].update
117
+ r &= @pr[k].finish?
118
+ } # アニメーション処理が終了するまで繰り返し
106
119
  end
107
120
 
108
121
  def stop
109
122
  @pr.keys.each{|k| @pr[k].stop }
110
123
  end
111
124
 
125
+ def render
126
+ @parts[:bk].render
127
+ # 通常なら。@pr[:fast].render,@pr[:slow].renderが筋だが、
128
+ # @pr[:fast]が終了すると、renderを呼んでも描画されないため、元の画像を表示する
129
+ @parts[:c1].render
130
+ @parts[:c2].render
131
+ end
132
+
112
133
  def finish?
113
134
  return @finished
114
135
  end
115
136
  end
116
137
 
117
- # Yukiプロット実行
138
+ # Yukiプロット開始
118
139
  class StartPlot
119
140
  include Diagram::NodeBase
120
141
 
121
- def initialize(manager)
142
+ def initialize(manager, parts, imgs)
122
143
  @manager = manager
144
+ @parts = parts
145
+ @imgs = imgs
123
146
  @finished = false
124
147
  end
125
148
 
@@ -127,13 +150,20 @@ class StartPlot
127
150
  end
128
151
 
129
152
  def update
130
- @manager.start
153
+ @manager.start_plot
154
+ @parts.start
131
155
  @finished = true
132
156
  end
133
157
 
134
158
  def stop
135
159
  end
136
160
 
161
+ def render
162
+ @imgs[:bk].render
163
+ @imgs[:c1].render
164
+ @imgs[:c2].render
165
+ end
166
+
137
167
  def finish?
138
168
  return @finished
139
169
  end
@@ -143,8 +173,10 @@ end
143
173
  class Plotting
144
174
  include Diagram::NodeBase
145
175
 
146
- def initialize(manager, set_wait)
176
+ def initialize(manager, parts, imgs, set_wait)
147
177
  @manager = manager
178
+ @parts = parts
179
+ @imgs = imgs
148
180
  @set = set_wait
149
181
  @finished = false
150
182
  end
@@ -153,12 +185,22 @@ class Plotting
153
185
  end
154
186
 
155
187
  def update
188
+ @manager.update
189
+ @parts.update
190
+ @parts.update_animation
156
191
  @finished = !(@manager.executing?)
157
192
  end
158
193
 
159
194
  def update_input
160
- @set.call(0.0) if Input.pushed_any?(:btn1) # 1ボタンを押したら、表示途中のメッセージをすべて表示
161
- @manager.update_input
195
+ @set.call(0.0) if (Input.pushed_any?(:btn1) || Input.click?(:left)) # 1ボタンを押すor左クリックしたら、表示途中のメッセージをすべて表示
196
+ end
197
+
198
+ def render
199
+ @imgs[:bk].render
200
+ @imgs[:c1].render
201
+ @imgs[:c2].render
202
+ @manager.render
203
+ @parts.render
162
204
  end
163
205
 
164
206
  def stop
@@ -174,11 +216,12 @@ class MainScene
174
216
 
175
217
  TEXTBOX_MARGIN = 16
176
218
  TEXTBOX_BOTTOM = 24
177
-
219
+
178
220
  def init
179
221
  ws = Sprite.new(:file=>"wait_cursor.png", :type=>:ac)
180
222
  ws.oh = ws.ow
181
223
  ws = SpriteAnimation.new(:sprite=>ws, :wait=>0.2, :pattern_list=>[0,1,2,3,2,1])
224
+ @ws = ws
182
225
  cs = Sprite.new(:file=>"cursor.png", :type=>:ac)
183
226
  cs.oh = cs.ow
184
227
  cs = SpriteAnimation.new(:sprite=>cs, :wait=>0.2, :pattern_list=>[0,1,2,3,2,1])
@@ -197,17 +240,17 @@ class MainScene
197
240
 
198
241
  @yuki = Yuki.new
199
242
  @yuki.update_text = self.method(:update_text)
200
- @y_manager = @yuki.manager(@yuki.to_plot(self, :plot), false, true)
201
243
 
202
- @c1 = Sprite.new(:file=>"chr01.png", :type=>:ac).bottom
203
- @c2 = Sprite.new(:file=>"chr02.png", :type=>:ac).bottom
204
- @bk = Sprite.new(:file=>"back.png", :type=>:as).centering
244
+ @imgs = {}
245
+ @imgs[:c1] = Sprite.new(:file=>"chr01.png", :type=>:ac).bottom
246
+ @imgs[:c2] = Sprite.new(:file=>"chr02.png", :type=>:ac).bottom
247
+ @imgs[:bk] = Sprite.new(:file=>"back.png", :type=>:as).centering
205
248
 
206
249
 
207
250
  @pr = Diagram::Processor.new{|dia|
208
- dia.add :move, Moving.new(@c1, @c2, 0.01)
209
- dia.add :start, StartPlot.new(@y_manager)
210
- dia.add :plot, Plotting.new(@y_manager, lambda{|w| set_wait(w) })
251
+ dia.add :move, Moving.new(@imgs, 0.01)
252
+ dia.add :start, StartPlot.new(@yuki, @parts, @imgs)
253
+ dia.add :plot, Plotting.new(@yuki, @parts, @imgs, lambda{|w| set_wait(w) })
211
254
  dia.add_arrow(:move, :start){|from| from.finish? }
212
255
  dia.add_arrow(:start, :plot){|from| from.finish? }
213
256
  dia.add_arrow(:plot, nil){|from| from.finish? }
@@ -215,54 +258,62 @@ class MainScene
215
258
 
216
259
  @base_wait = 0.1 # ウェイト基本値
217
260
  @wait = @base_wait # ウェイト
261
+ @exed = false
218
262
  end
219
263
 
220
264
  def setup
221
265
  @pr.start
222
- @yuki.setup
223
- @yuki.select_textbox(@box)
266
+ @yuki.setup(@box, plot){|box, pl|
267
+ select_textbox box
268
+ select_plot pl
269
+ select_first_page nil # nil, :page1, :page2が選択可能
270
+ }
224
271
  end
225
272
 
226
273
  def update
227
274
  return nil if Input.quit_or_escape?
275
+ unless @exed
276
+ @exed = true
277
+ return OverScene
278
+ end
228
279
  @pr.update_input
229
- @parts.update_animation
280
+ @pr.update
230
281
  return nil if @pr.finish?
231
282
  return @now
232
283
  end
233
284
 
234
285
  def render
235
- @bk.render
236
- @c1.render
237
- @c2.render
238
- @parts.render if @y_manager.executing?
286
+ @pr.render
239
287
  end
240
288
 
241
- def plot(yuki)
242
- yuki.text "「ねえ、あんたの担当のセリフ、ちゃんと覚えてるわよねぇ?"
243
- yuki.cr
244
- unless @wait == 0
245
- yuki.pause
246
- reset_wait
247
- end
248
- yuki.text " まさか、忘れてたなんて言わないわよねぇ?」"
249
- yuki.cr
250
- yuki.pause
251
- reset_wait
252
- yuki.clear
253
- yuki.color(:red){
254
- yuki.text "「そんなことないよぉ~"
255
- yuki.cr
256
- yuki.pause
257
- reset_wait
258
- yuki.text " ちゃんと覚えてるよぉ~」"
259
- yuki.cr
289
+ def plot
290
+ yuki_plot{
291
+ text_method :string do
292
+ page :page1 do
293
+ text "「ねえ、あんたの担当のセリフ、ちゃんと覚えてるわよねぇ?"
294
+ cr
295
+ pause
296
+ text " まさか、忘れてたなんて言わないわよねぇ?」"
297
+ end
298
+ clear
299
+ page :page2 do
300
+ color :red do
301
+ size 32 do
302
+ size(24){ "「そんなこと" }
303
+ text "ない"
304
+ size(24){ "よぉ~" }
305
+ end
306
+ cr
307
+ pause
308
+ text " ちゃんと覚えてるよぉ~」"
309
+ cr
310
+ end
311
+ end
312
+ end
260
313
  }
261
- yuki.pause
262
- reset_wait
263
314
  end
264
315
 
265
- def update_text(yuki)
316
+ def update_text(yuki, ch)
266
317
  yuki.wait @wait # 1文字ずつ表示させる
267
318
  end
268
319
 
@@ -279,5 +330,58 @@ class MainScene
279
330
  end
280
331
  end
281
332
 
333
+ class OverScene
334
+ include Story::Scene
335
+
336
+ def OverScene.scene_type
337
+ :over_scene
338
+ end
339
+
340
+ def init
341
+ @spr = Shape.text(:font=>Font.serif){ text "あいうえお" }
342
+ @max_count = 2000
343
+ @count = 0
344
+ @exed = false
345
+ end
346
+
347
+ def update
348
+ unless @exed
349
+ @exed = true
350
+ return OverScene2
351
+ end
352
+ return nil if @count == @max_count
353
+ @count = @count.succ
354
+ return @now
355
+ end
356
+
357
+ def render
358
+ @spr.render
359
+ end
360
+ end
361
+
362
+ class OverScene2
363
+ include Story::Scene
364
+
365
+ def OverScene2.scene_type
366
+ :over_scene
367
+ end
368
+
369
+ def init
370
+ @spr = Shape.text(:font=>Font.serif){ text "かきくけこ" }
371
+ @max_count = 1000
372
+ @count = 0
373
+ end
374
+
375
+ def update
376
+ return nil if @count == @max_count
377
+ @count = @count.succ
378
+ return @now
379
+ end
380
+
381
+ def render
382
+ @spr.render
383
+ end
384
+ end
385
+
282
386
  ds = Story.new
283
387
  ds.run(MainScene)