ruby-miyako 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (164) hide show
  1. data/README +1115 -0
  2. data/Rakefile +7 -0
  3. data/defines.h +144 -0
  4. data/extconf.rb +44 -0
  5. data/extern.h +29 -0
  6. data/img/cursor.png +0 -0
  7. data/img/cursors.png +0 -0
  8. data/img/dice.png +0 -0
  9. data/img/wait_cursor.png +0 -0
  10. data/img/win_base.png +0 -0
  11. data/img/window.png +0 -0
  12. data/install_miyako.rb +87 -0
  13. data/lib/Miyako/API/audio.rb +584 -0
  14. data/lib/Miyako/API/basic_data.rb +1026 -0
  15. data/lib/Miyako/API/bitmap.rb +534 -0
  16. data/lib/Miyako/API/choices.rb +481 -0
  17. data/lib/Miyako/API/collision.rb +638 -0
  18. data/lib/Miyako/API/diagram.rb +586 -0
  19. data/lib/Miyako/API/drawing.rb +151 -0
  20. data/lib/Miyako/API/exceptions.rb +105 -0
  21. data/lib/Miyako/API/fixedmap.rb +462 -0
  22. data/lib/Miyako/API/font.rb +430 -0
  23. data/lib/Miyako/API/input.rb +456 -0
  24. data/lib/Miyako/API/layout.rb +644 -0
  25. data/lib/Miyako/API/map.rb +583 -0
  26. data/lib/Miyako/API/map_event.rb +222 -0
  27. data/lib/Miyako/API/modules.rb +357 -0
  28. data/lib/Miyako/API/movie.rb +166 -0
  29. data/lib/Miyako/API/parts.rb +188 -0
  30. data/lib/Miyako/API/plane.rb +205 -0
  31. data/lib/Miyako/API/screen.rb +341 -0
  32. data/lib/Miyako/API/shape.rb +443 -0
  33. data/lib/Miyako/API/sprite.rb +773 -0
  34. data/lib/Miyako/API/sprite_animation.rb +494 -0
  35. data/lib/Miyako/API/sprite_list.rb +1135 -0
  36. data/lib/Miyako/API/spriteunit.rb +168 -0
  37. data/lib/Miyako/API/story.rb +350 -0
  38. data/lib/Miyako/API/textbox.rb +773 -0
  39. data/lib/Miyako/API/utility.rb +419 -0
  40. data/lib/Miyako/API/viewport.rb +190 -0
  41. data/lib/Miyako/API/yuki.rb +1180 -0
  42. data/lib/Miyako/EXT/miyako_cairo.rb +62 -0
  43. data/lib/Miyako/EXT/raster_scroll.rb +138 -0
  44. data/lib/Miyako/EXT/slides.rb +157 -0
  45. data/lib/Miyako/miyako.rb +201 -0
  46. data/lib/Miyako/miyako_require_only.rb +35 -0
  47. data/logo/EGSR_logo.png +0 -0
  48. data/logo/EGSR_logo_bg.png +0 -0
  49. data/logo/EGSR_logo_fg.png +0 -0
  50. data/logo/EGSR_title_banner.png +0 -0
  51. data/logo/EGSR_title_logo.png +0 -0
  52. data/logo/miyako.png +0 -0
  53. data/logo/miyako_banner.png +0 -0
  54. data/logo/space.png +0 -0
  55. data/miyako_basicdata.c +484 -0
  56. data/miyako_bitmap.c +1225 -0
  57. data/miyako_collision.c +403 -0
  58. data/miyako_drawing.c +187 -0
  59. data/miyako_font.c +334 -0
  60. data/miyako_hsv.c +830 -0
  61. data/miyako_input_audio.c +254 -0
  62. data/miyako_layout.c +191 -0
  63. data/miyako_no_katana.c +1086 -0
  64. data/miyako_sprite2.c +431 -0
  65. data/miyako_transform.c +438 -0
  66. data/miyako_utility.c +288 -0
  67. data/sample/Animation1/m1ku.rb +68 -0
  68. data/sample/Animation1/m1ku_arm_0.png +0 -0
  69. data/sample/Animation1/m1ku_arm_1.png +0 -0
  70. data/sample/Animation1/m1ku_arm_2.png +0 -0
  71. data/sample/Animation1/m1ku_arm_3.png +0 -0
  72. data/sample/Animation1/m1ku_back.jpg +0 -0
  73. data/sample/Animation1/m1ku_body.png +0 -0
  74. data/sample/Animation1/m1ku_eye_0.png +0 -0
  75. data/sample/Animation1/m1ku_eye_1.png +0 -0
  76. data/sample/Animation1/m1ku_eye_2.png +0 -0
  77. data/sample/Animation1/m1ku_eye_3.png +0 -0
  78. data/sample/Animation1/m1ku_hair_front.png +0 -0
  79. data/sample/Animation1/m1ku_hair_rear.png +0 -0
  80. data/sample/Animation1/readme.txt +72 -0
  81. data/sample/Animation2/lex.rb +96 -0
  82. data/sample/Animation2/lex_back.png +0 -0
  83. data/sample/Animation2/lex_body.png +0 -0
  84. data/sample/Animation2/lex_roadroller.png +0 -0
  85. data/sample/Animation2/lex_wheel_0.png +0 -0
  86. data/sample/Animation2/lex_wheel_1.png +0 -0
  87. data/sample/Animation2/lex_wheel_2.png +0 -0
  88. data/sample/Animation2/readme.txt +72 -0
  89. data/sample/Animation2/song_title.png +0 -0
  90. data/sample/Diagram_sample/back.png +0 -0
  91. data/sample/Diagram_sample/chr01.png +0 -0
  92. data/sample/Diagram_sample/chr02.png +0 -0
  93. data/sample/Diagram_sample/cursor.png +0 -0
  94. data/sample/Diagram_sample/diagram_sample_yuki2.rb +329 -0
  95. data/sample/Diagram_sample/readme.txt +90 -0
  96. data/sample/Diagram_sample/wait_cursor.png +0 -0
  97. data/sample/Room3/blue.rb +297 -0
  98. data/sample/Room3/ending.rb +180 -0
  99. data/sample/Room3/green.rb +220 -0
  100. data/sample/Room3/image/akamatsu.png +0 -0
  101. data/sample/Room3/image/aoyama.png +0 -0
  102. data/sample/Room3/image/congra.png +0 -0
  103. data/sample/Room3/image/congratulation.png +0 -0
  104. data/sample/Room3/image/congratulation_bg.png +0 -0
  105. data/sample/Room3/image/cursor.png +0 -0
  106. data/sample/Room3/image/midori.png +0 -0
  107. data/sample/Room3/image/mittsu_no_oheya.png +0 -0
  108. data/sample/Room3/image/mittsu_no_oheya_logo.png +0 -0
  109. data/sample/Room3/image/room_blue.png +0 -0
  110. data/sample/Room3/image/room_green.png +0 -0
  111. data/sample/Room3/image/room_red.png +0 -0
  112. data/sample/Room3/image/start.png +0 -0
  113. data/sample/Room3/image/three_doors.png +0 -0
  114. data/sample/Room3/image/wait_cursor.png +0 -0
  115. data/sample/Room3/main.rb +120 -0
  116. data/sample/Room3/main_component.rb +59 -0
  117. data/sample/Room3/readme.txt +76 -0
  118. data/sample/Room3/red.rb +227 -0
  119. data/sample/Room3/room3.rb +25 -0
  120. data/sample/Room3/title.rb +184 -0
  121. data/sample/ball_action_sample.rb +204 -0
  122. data/sample/blit_rop.rb +70 -0
  123. data/sample/cairo_sample.rb +25 -0
  124. data/sample/circle_collision_test.rb +66 -0
  125. data/sample/collision_test.rb +33 -0
  126. data/sample/collision_test2.rb +108 -0
  127. data/sample/fixed_map_test/cursor.png +0 -0
  128. data/sample/fixed_map_test/fixed_map_sample.rb +140 -0
  129. data/sample/fixed_map_test/map.csv +19 -0
  130. data/sample/fixed_map_test/map_01.png +0 -0
  131. data/sample/fixed_map_test/mapchip.csv +23 -0
  132. data/sample/fixed_map_test/monster.png +0 -0
  133. data/sample/fixed_map_test/readme.txt +72 -0
  134. data/sample/map_test/chara.rb +58 -0
  135. data/sample/map_test/chr1.png +0 -0
  136. data/sample/map_test/cursor.png +0 -0
  137. data/sample/map_test/main_parts.rb +69 -0
  138. data/sample/map_test/main_scene.rb +153 -0
  139. data/sample/map_test/map.png +0 -0
  140. data/sample/map_test/map2.png +0 -0
  141. data/sample/map_test/map_layer.csv +127 -0
  142. data/sample/map_test/map_manager.rb +75 -0
  143. data/sample/map_test/map_test.rb +23 -0
  144. data/sample/map_test/mapchip.csv +21 -0
  145. data/sample/map_test/oasis.rb +71 -0
  146. data/sample/map_test/readme.txt +89 -0
  147. data/sample/map_test/route.rb +157 -0
  148. data/sample/map_test/sea.png +0 -0
  149. data/sample/map_test/town.rb +74 -0
  150. data/sample/map_test/wait_cursor.png +0 -0
  151. data/sample/map_test/window.png +0 -0
  152. data/sample/polygon_test.rb +35 -0
  153. data/sample/rasterscroll.rb +25 -0
  154. data/sample/takahashi.rb +42 -0
  155. data/sample/text.png +0 -0
  156. data/sample/textbox_sample.rb +192 -0
  157. data/sample/transform.rb +54 -0
  158. data/sample/utility_test.rb +73 -0
  159. data/sample/utility_test2.rb +61 -0
  160. data/sample/utility_test3.rb +64 -0
  161. data/sample/utility_test4.rb +73 -0
  162. data/uninstall_miyako.rb +19 -0
  163. data/win/miyako_no_katana.so +0 -0
  164. metadata +216 -0
@@ -0,0 +1,157 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # 道しるべ(1)を表すイベントクラス
3
+ class EventRouteMarker
4
+ include MapEvent
5
+
6
+ attr_reader :margin, :collision
7
+
8
+ def init(map, x, y)
9
+ # イベント用チップを取得
10
+ @spr = Sprite.new({:filename => "map2.png", :type => :color_key})
11
+ @spr.ow = @spr.oh = 32
12
+ @spr.ox = 96
13
+ @spr.move_to!(x, y)
14
+ @coll = Collision.new([0, 0, @spr.ow, @spr.oh])
15
+ @pos = Point.new(x, y)
16
+ @margin = Size.new(0, 0)
17
+ @parts = CommonParts.instance
18
+ @yuki = Yuki.new
19
+ @yuki.setup(@parts.box[:box]){|box|
20
+ select_textbox(box)
21
+ }
22
+ end
23
+
24
+ # キャラの立ち位置とイベントの位置が重なり合っているかの判別
25
+ def met?(param = nil)
26
+ return @coll.collision?(@pos, param[:collision], param[:pos])
27
+ end
28
+
29
+ # イベントの実行
30
+ def start(param = nil)
31
+ @yuki.start_plot(plot)
32
+ end
33
+
34
+ def executing?
35
+ @yuki.executing?
36
+ end
37
+
38
+ def plot
39
+ yuki_plot do
40
+ text " ここに立て札がある。"
41
+ pause
42
+ clear
43
+ text " しかし、そこには何も書かれていない。"
44
+ pause
45
+ clear
46
+ end
47
+ end
48
+
49
+ def move!(dx, dy)
50
+ @spr.move!(-dx, -dy)
51
+ end
52
+
53
+ def move_to!(x, y)
54
+ @spr.move_to!(x, y)
55
+ end
56
+
57
+ def update(map_obj, events, params)
58
+ if @yuki.executing?
59
+ @yuki.update
60
+ @parts.box.update_animation
61
+ end
62
+ end
63
+
64
+ # イベントキャラクタの描画
65
+ def render
66
+ @spr.move!(-@margin.w, -@margin.h)
67
+ @spr.render
68
+ @spr.move!(@margin.w, @margin.h)
69
+ end
70
+
71
+ #(Yuki起動時)メッセージボックスの表示
72
+ def render_box
73
+ @parts.box.render if @yuki.executing?
74
+ end
75
+ end
76
+
77
+ # 道しるべ(2)を表すイベントクラス
78
+ class EventRouteMarker2
79
+ include MapEvent
80
+
81
+ attr_reader :margin
82
+
83
+ def init(map, x, y)
84
+ # イベント用チップを取得
85
+ @spr = Sprite.new({:filename => "map2.png", :type => :color_key})
86
+ @spr.ow = @spr.oh = 32
87
+ @spr.ox = 96
88
+ @spr.move!(x, y)
89
+ @coll = Collision.new([0, 0, @spr.ow, @spr.oh])
90
+ @pos = Point.new(x, y)
91
+ @margin = Size.new(0, 0)
92
+ @parts = CommonParts.instance
93
+ @yuki = Yuki.new
94
+ @yuki.setup(@parts.box[:box]){|box|
95
+ select_textbox(box)
96
+ }
97
+ end
98
+
99
+ # キャラの立ち位置とイベントの位置が重なり合っているかの判別
100
+ def met?(param = nil)
101
+ return @coll.collision?(@pos, param[:collision], param[:pos])
102
+ end
103
+
104
+ # イベントの開始
105
+ def start(param = nil)
106
+ @yuki.start_plot(plot)
107
+ end
108
+
109
+ def executing?
110
+ @yuki.executing?
111
+ end
112
+
113
+ def plot
114
+ yuki_plot do
115
+ text " ここに立て札がある。"
116
+ pause
117
+ cr
118
+ text " 読んでみよう。"
119
+ pause
120
+ clear
121
+ color(:blue){"東"}.text("・・・果て野")
122
+ cr
123
+ color(:blue){"西"}.text("・・・荒れ海")
124
+ cr
125
+ color(:blue){"南"}.text("・・・グリージアの街")
126
+ pause
127
+ clear
128
+ end
129
+ end
130
+
131
+ def move!(dx, dy)
132
+ @spr.move!(-dx, -dy)
133
+ end
134
+
135
+ def move_to!(x, y)
136
+ @spr.move_to!(x, y)
137
+ end
138
+
139
+ def update(map_obj, events, params)
140
+ if @yuki.executing?
141
+ @yuki.update
142
+ @parts.box.update_animation
143
+ end
144
+ end
145
+
146
+ # イベントキャラクタの描画
147
+ def render
148
+ @spr.move!(-@margin.w, -@margin.h)
149
+ @spr.render
150
+ @spr.move!(@margin.w, @margin.h)
151
+ end
152
+
153
+ #(Yuki起動時)メッセージボックスの表示
154
+ def render_box
155
+ @parts.box.render if @yuki.executing?
156
+ end
157
+ end
Binary file
@@ -0,0 +1,74 @@
1
+ # -*- encoding: utf-8 -*-
2
+ #街を表すイベントクラス
3
+ class EventTown
4
+ include MapEvent
5
+
6
+ attr_reader :margin
7
+
8
+ def init(map, x, y)
9
+ # イベント用チップを取得
10
+ @spr = Sprite.new({:filename => "map2.png", :type => :color_key})
11
+ @spr.ox = @spr.oy = @spr.ow = @spr.oh = 32
12
+ @spr.move_to!(x, y)
13
+ @coll = Collision.new([0, 0, @spr.ow, @spr.oh])
14
+ @pos = Point.new(x, y)
15
+ @margin = Size.new(0, 0)
16
+ @parts = CommonParts.instance
17
+ @yuki = Yuki.new
18
+ @yuki.select_textbox(@parts.box[:box])
19
+ end
20
+
21
+ # キャラの立ち位置とイベントの位置が重なり合っているかの判別
22
+ def met?(param = nil)
23
+ return @coll.collision?(@pos, param[:collision], param[:pos])
24
+ end
25
+
26
+ # イベントの開始
27
+ def start(param = nil)
28
+ @yuki.start_plot(plot)
29
+ end
30
+
31
+ def executing?
32
+ @yuki.executing?
33
+ end
34
+
35
+ # イベントの実行
36
+ def plot
37
+ yuki_plot do
38
+ text " ここが"
39
+ color([255,200,200]){"グリージアの街"}
40
+ text "か・・・。"
41
+ cr
42
+ text " まぁ、入るつもりは無いが。"
43
+ pause
44
+ clear
45
+ end
46
+ end
47
+
48
+ def move!(dx, dy)
49
+ @spr.move!(-dx, -dy)
50
+ end
51
+
52
+ def move_to!(x, y)
53
+ @spr.move_to!(x, y)
54
+ end
55
+
56
+ def update(map_obj, events, params)
57
+ if @yuki.executing?
58
+ @yuki.update
59
+ @parts.box.update_animation
60
+ end
61
+ end
62
+
63
+ # イベントキャラクタの描画
64
+ def render
65
+ @spr.move!(-@margin.w, -@margin.h)
66
+ @spr.render
67
+ @spr.move!(@margin.w, @margin.h)
68
+ end
69
+
70
+ #(Yuki起動時)メッセージボックスの表示
71
+ def render_box
72
+ @parts.box.render if @yuki.executing?
73
+ end
74
+ end
Binary file
Binary file
@@ -0,0 +1,35 @@
1
+ # Drawing.polygonサンプル
2
+ # 2009.4.12 Cyross Makoto
3
+
4
+ require 'Miyako/miyako'
5
+
6
+ max_vertexes = 32 # 最大頂点数
7
+
8
+ # 設定配列(Enumerator)
9
+ flags = [[true, true], # 塗りつぶし、アンチエイリアス有り
10
+ [true], # 塗りつぶし
11
+ [false, true], # 線描、アンチエイリアス有り
12
+ [false] # 線描
13
+ ].cycle
14
+
15
+ # 色配列(Enumerator)
16
+ colors = [[0,0,255], # 青色
17
+ [0,255,0], # 緑色
18
+ [0,255,255], # 水色
19
+ [255,0,0], # 赤色
20
+ [255,0,255], # 紫色
21
+ [255,255,0], # 黄色
22
+ [255,255,255] # 白色
23
+ ].cycle
24
+
25
+ loop do
26
+ Miyako::Input.update
27
+ break if Miyako::Input.quit_or_escape?
28
+ # 3 ~ max_vertexes までのランダム個数の頂点を作成
29
+ pairs = Array.new(rand(max_vertexes - 3) + 3){
30
+ [rand(Miyako::Screen.w), rand(Miyako::Screen.h)]
31
+ }
32
+ # 多角形を描画
33
+ Miyako::Drawing.polygon(Miyako::Screen, pairs, colors.next, *(flags.next))
34
+ Miyako::Screen.render
35
+ end
@@ -0,0 +1,25 @@
1
+ # encoding: utf-8
2
+ # ���X�^�X�N���[���T���v��
3
+ # 2009.4.12 Cyross Makoto
4
+
5
+ require 'Miyako/miyako'
6
+ require 'Miyako/EXT/raster_scroll'
7
+
8
+ include Miyako
9
+
10
+ #1�b��Ƀ��X�^�X�N���[���̃t�F�[�h�A�E�g��ݒ肷��
11
+ wait = WaitCounter.new(1.0).start
12
+ # 0.05�b���ƂɁA2���C�����A8�s�N�Z���P�ʂ̃��X�^�X�N���[�����s��
13
+ sprite = Sprite.new(:file => "Animation2/lex_body.png", :type => :ck).centering!
14
+ rs = RasterScroll.new(sprite).start({:lines => 2, :size => 8, :wait=>WaitCounter.new(0.05)})
15
+ fade = false
16
+
17
+ Miyako.main_loop do
18
+ break if Input.quit_or_escape?
19
+ rs.effecting? ? rs.update.render : sprite.render
20
+ if fade == false && wait.finish?
21
+ #1�b�ゲ�ƂɁA���X�^�X�N���[���̕����k�߂�
22
+ rs.fade_out(1, WaitCounter.new(1.0))
23
+ fade = true
24
+ end
25
+ end
@@ -0,0 +1,42 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # テキスト表示・高橋メソッド形式サンプル
3
+ # 2009.4.12 Cyross Makoto
4
+
5
+ require 'Miyako/miyako'
6
+
7
+ include Miyako
8
+
9
+ # 高橋メソッド形式文字列の表示
10
+ shape1 = Shape.takahashi(:font=>Font.serif, :align=>:center, :valign=>:bottom, :size=>Screen.size){|v|
11
+ size(20){ text "えーびーしー" }
12
+ cr
13
+ text "ABC"
14
+ cr
15
+ under_line{"でー"} . text("えーえふじー")
16
+ cr
17
+ text("DEFG")
18
+ }
19
+
20
+ # 通常形式で表示
21
+ shape2 = Shape.text(:font=>Font.serif, :align=>:right){|v|
22
+ size(24){
23
+ text "えー"
24
+ color(:yellow){ "びー" }
25
+ text "しー"
26
+ }
27
+ cr
28
+ text "ABC"
29
+ cr
30
+ under_line{"でー"} . text("えーえふじー")
31
+ cr
32
+ text("DEFG")
33
+ }
34
+
35
+ # 自動描画配列にshape1、shape2を組み込み
36
+ Screen.auto_render_array << shape1
37
+ Screen.auto_render_array << shape2
38
+
39
+ Miyako.main_loop do
40
+ break if Input.quit_or_escape?
41
+ Drawing.fill(Screen, [100,100,100])
42
+ end
data/sample/text.png ADDED
Binary file
@@ -0,0 +1,192 @@
1
+ #encoding: utf-8
2
+ #テキストボックス サンプル
3
+ #2009 Cyross Makoto
4
+
5
+ require 'Miyako/miyako'
6
+
7
+ include Miyako
8
+
9
+ TEXTBOX_MARGIN = 16
10
+
11
+ # pause用カーソルの用意
12
+ ws = Sprite.new(:file=>"../img/wait_cursor.png", :type=>:ac)
13
+ ws.oh = ws.ow
14
+ @ws = SpriteAnimation.new(:sprite=>ws, :wait=>0.2, :pattern_list=>[0,1,2,3,2,1])
15
+
16
+ # 選択用カーソルの用意
17
+ cs = Sprite.new(:file=>"../img/cursor.png", :type=>:ac)
18
+ cs.oh = cs.ow
19
+ @cs = SpriteAnimation.new(:sprite=>cs, :wait=>0.2, :pattern_list=>[0,1,2,3,2,1])
20
+
21
+ # フォントの用意
22
+ font = Font.sans_serif
23
+ font.color = Color[:white]
24
+ font.size = 16
25
+
26
+ # テキストボックスの用意
27
+ box = TextBox.new(:size=>[32,20], :wait_cursor => @ws, :select_cursor => @cs, :font => font)
28
+
29
+ # テキストボックス背景の用意
30
+ box_bg = Sprite.new(:size => box.size.to_a.map{|v| v + TEXTBOX_MARGIN}, :type => :ac)
31
+ box_bg.fill([128,0,64,128])
32
+
33
+ # Partsをまとめて一つのボックスにする
34
+ @parts = Parts.new(box.size)
35
+ @parts[:box_bg] = box_bg
36
+ @parts[:box] = box
37
+ @parts[:box_bg].centering!
38
+ @parts[:box].centering!
39
+ @parts.centering!
40
+
41
+ p @parts.broad_rect
42
+
43
+ # 選択肢の作成
44
+ list = [
45
+ [Shape.text(:font=>font, :text=>"選択肢1"), nil, 1],
46
+ [Shape.text(:font=>font, :text=>"選択肢2"), nil, 2],
47
+ [Shape.text(:font=>font, :text=>"選択肢3"), nil, 3]
48
+ ]
49
+ @choices = @parts[:box].create_choices_chain(list)
50
+
51
+ # カーソルのアニメーションの開始
52
+ @parts[:box].start
53
+
54
+ # 実行させる処理をテキストボックスに登録
55
+ @parts[:box].execute(@choices){|box, params|
56
+ box.draw_text "やあ。"
57
+ box.pause.cr
58
+
59
+ box.draw_text "Miyakoのテキストボックスサンプルにようこそ。"
60
+ box.pause.cr
61
+
62
+ box.draw_text "ここでは、テキストボックスの機能をいくつか例示してみます。"
63
+ box.pause.clear
64
+
65
+ box.draw_text "まず、"
66
+ box.pause.cr
67
+
68
+ box.font_size_during(24){ box.draw_text "文字の大きさを変えます。" }
69
+ box.pause.cr
70
+
71
+ box.draw_text "変わりましたね?"
72
+ box.pause.clear
73
+
74
+ box.draw_text "次に、"
75
+ box.pause.cr
76
+
77
+ box.color_during(:blue){ box.draw_text "文字の色を変えてみます。" }
78
+ box.pause.cr
79
+
80
+ box.draw_text "変わりましたね?"
81
+ box.pause.clear
82
+
83
+ box.draw_text "続いて、"
84
+ box.pause.cr
85
+
86
+ box.font_size_during(24){
87
+ box.color_during(:blue){
88
+ box.draw_text "文字の大きさを変えながら"
89
+ box.cr
90
+ box.draw_text "色を変えてみます。"
91
+ }
92
+ }
93
+ box.pause.cr
94
+
95
+ box.draw_text "ほら、簡単でしょ?"
96
+ box.pause.clear
97
+
98
+ box.draw_text "文字の修飾も出来ます。"
99
+ box.pause.cr
100
+
101
+ box.font_bold{ box.draw_text "ボールド体でも" }
102
+ box.pause.cr
103
+
104
+ box.font_italic{ box.draw_text "イタリック体でも(フォントによって可・不可あるかも)" }
105
+ box.pause.cr
106
+
107
+ box.font_under_line{ box.draw_text "下線付きでも" }
108
+ box.pause.cr
109
+
110
+ box.draw_text "OKです"
111
+ box.pause.clear
112
+
113
+ box.draw_text "文字の位置を変更してみましょう。"
114
+ box.pause.cr
115
+
116
+ box.draw_text "一番左に表示しています"
117
+ box.cr
118
+
119
+ text = "真ん中に表示しています"
120
+ # 文字列の長さ(ピクセル単位)を取得
121
+ len = box.font.text_size(text)[0]
122
+ # x座標の位置を変更
123
+ box.locate.x = (box.size.w-len)/2
124
+ box.draw_text text
125
+ box.cr
126
+
127
+ text = "右に表示しています"
128
+ # 文字列の長さ(ピクセル単位)を取得
129
+ len = box.font.text_size(text)[0]
130
+ # x座標の位置を変更
131
+ box.locate.x = (box.size.w-len)
132
+ box.draw_text text
133
+ box.cr
134
+
135
+ text = "一番下の真ん中に表示しています"
136
+ # 文字列の長さ(ピクセル単位)を取得
137
+ len = box.font.text_size(text)
138
+ # x座標の位置を変更
139
+ box.locate.x = (box.size.w-len[0])/2
140
+ box.locate.y = (box.size.h-len[1])
141
+ box.draw_text text
142
+ box.cr
143
+
144
+ box.pause.clear
145
+
146
+ box.draw_text "最後に、選択肢を表示させてみます"
147
+ box.pause.cr
148
+
149
+ # params[0] == @choices
150
+ box.command params[0]
151
+
152
+ box.draw_text "選択結果は#{box.result}ですね。"
153
+ box.pause.cr.cr
154
+
155
+ box.draw_text "だいたい、テキストボックスの使い方が"
156
+ box.cr
157
+
158
+ box.draw_text "おわかりになりましたでしょうか?"
159
+ box.pause.cr
160
+
161
+ box.draw_text "それでは、そろそろ失礼いたします・・・。"
162
+ box.pause.cr
163
+ }
164
+
165
+ # テキストボックスのまとめ処理
166
+ def process_textbox
167
+ @parts.update_animation
168
+ @parts.render
169
+ end
170
+
171
+ Miyako.main_loop do
172
+ break if Input.quit_or_escape? || !@parts[:box].execute?
173
+ # テキストボックスはポーズ中?
174
+ # ポーズ中はupdateを呼んではいけないので、ポーズ中は直前で回避している
175
+ if @parts[:box].pause?
176
+ # 1ボタンを押したとき、ポーズを解除する
177
+ @parts[:box].release if Input.pushed_any?(:btn1)
178
+ process_textbox
179
+ next
180
+ end
181
+ # テキストボックスはコマンド選択中?
182
+ if @parts[:box].selecting?
183
+ # カーソルの移動
184
+ @parts[:box].move_cursor(*Input.pushed_amount)
185
+ # 1ボタンを押したとき、選択状態を解除する
186
+ @parts[:box].finish_command if Input.pushed_any?(:btn1)
187
+ process_textbox
188
+ next
189
+ end
190
+ @parts[:box].update
191
+ process_textbox
192
+ end
@@ -0,0 +1,54 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # 画像拡大・縮小・回転サンプル
3
+ # 2009.4.12 Cyross Makoto
4
+
5
+ require 'Miyako/miyako'
6
+
7
+ include Miyako
8
+
9
+ Screen::fps_view = true
10
+
11
+ MAX = 8.0 # 最大拡大率8倍
12
+ MIN = -8.0 # 最小拡大率8分の1
13
+ RATE = 0.4 # 拡大率間隔0.4倍
14
+
15
+ @sprite = Sprite.new(:file=>"map_test/map.png", :type=>:ck).centering!
16
+
17
+ # 変形対象画像を半透明にする
18
+ Bitmap.dec_alpha!(@sprite, 0.5)
19
+
20
+ # スプライトの変形中心を設定
21
+ @sprite.center_x = @sprite.ow/2
22
+ @sprite.center_y = @sprite.oh/2
23
+
24
+ # 回転角度単位を30度に設定(ラジアンに変換)
25
+ @rate = Math::PI * 2.0 * 30.0 / 360.0
26
+
27
+ xscale = 4.0 # 初期拡大率(x座標)4倍
28
+ yscale = 4.0 # 初期拡大率(y座標)4倍
29
+ angle = 0.0 # 初期回転角度0度
30
+
31
+ # 画面の中心に画像を表示指定(pre_render)
32
+ Screen.pre_render_array << [Sprite.new(:file=>"Animation1/m1ku_back.jpg", :type=>:ac).centering!, @sprite]
33
+
34
+ # 画面の変形中心を設定
35
+ Screen.center_x = Screen.w/2
36
+ Screen.center_y = Screen.h/2
37
+
38
+ Miyako.main_loop do
39
+ break if Input.quit_or_escape?
40
+ Screen.pre_render
41
+ # 回転
42
+ # Bitmap.rotate(@sprite, Screen, angle)
43
+ # 拡大/縮小
44
+ # Bitmap.scale(@sprite, Screen, xscale, yscale)
45
+ # 回転/拡大/縮小
46
+ Bitmap.transform(@sprite, Screen, angle, xscale, yscale)
47
+ # 拡大縮小率の変更
48
+ xscale -= RATE
49
+ xscale = MAX if xscale < MIN
50
+ yscale -= RATE
51
+ yscale = MAX if yscale < MIN
52
+ # 回転角度の変更
53
+ angle = (angle + @rate) % (Math::PI*2.0)
54
+ end
@@ -0,0 +1,73 @@
1
+ # Utility.product_linerサンプル
2
+ # 2009.4.12 Cyross Makoto
3
+
4
+ require 'Miyako/miyako'
5
+
6
+ # 色配列(Enumerator)
7
+ Colors = [[0,0,255], # 青色
8
+ [0,255,0], # 緑色
9
+ [0,255,255], # 水色
10
+ [255,0,0], # 赤色
11
+ [255,0,255], # 紫色
12
+ [255,255,0], # 黄色
13
+ [255,255,255] # 白色
14
+ ].cycle
15
+
16
+ # 線形配列生成メソッドを用意
17
+ def draw_liner(sprite, info)
18
+ # 画面の真ん中から指定の位置までの線形配列を、
19
+ # 1~16間ランダム値の刻みで作成する
20
+ square = Miyako::Square.new(
21
+ Miyako::Screen.w/2, Miyako::Screen.h/2,
22
+ rand(Miyako::Screen.w), rand(Miyako::Screen.h)
23
+ )
24
+ amount = rand(16)+1
25
+ # 線形配列を作成
26
+ array = Miyako::Utility.product_liner_by_square(square, amount)
27
+ # 画像内容の消去
28
+ sprite.fill([0,0,0,0])
29
+ # 配列の位置を元に矩形を描画
30
+ array.each{|pos| Miyako::Drawing.rect(sprite, pos+[amount,amount], Colors.next)}
31
+
32
+ info.dispose if info
33
+ info = Miyako::Shape.text(
34
+ :font => Miyako::Font.serif,
35
+ :text => "square = (#{square[0]}, #{square[1]})-(#{square[2]}, #{square[3]}), amount = #{amount}"
36
+ )
37
+
38
+ [sprite, info]
39
+ end
40
+
41
+ # 描画間隔の設定(ここでは2秒)
42
+ wait = Miyako::WaitCounter.new(2)
43
+
44
+ # 描画用スプライトの作成
45
+ screen = Miyako::Sprite.new(
46
+ :size=>Miyako::Screen.size,
47
+ :type=>:ac
48
+ )
49
+
50
+ # 情報表示用スプライト変数の用意
51
+ screen, info = draw_liner(screen, nil)
52
+
53
+ # メインループの開始
54
+ loop do
55
+ Miyako::Input.update
56
+ # Escキー押下もしくは×印クリックのときは終了
57
+ break if Miyako::Input.quit_or_escape?
58
+ # 時間が来たら画面内容の更新
59
+ if wait.finish?
60
+ screen, info = draw_liner(screen, info)
61
+ wait.start
62
+ end
63
+ # 画面の描画
64
+ # 画面の消去
65
+ Miyako::Screen.clear
66
+ # 線形配列結果の表示
67
+ screen.render
68
+ # 情報画像の表示
69
+ info.render
70
+ # 画面の更新
71
+ Miyako::Screen.render
72
+ end
73
+