ruby-miyako 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README +1115 -0
- data/Rakefile +7 -0
- data/defines.h +144 -0
- data/extconf.rb +44 -0
- data/extern.h +29 -0
- data/img/cursor.png +0 -0
- data/img/cursors.png +0 -0
- data/img/dice.png +0 -0
- data/img/wait_cursor.png +0 -0
- data/img/win_base.png +0 -0
- data/img/window.png +0 -0
- data/install_miyako.rb +87 -0
- data/lib/Miyako/API/audio.rb +584 -0
- data/lib/Miyako/API/basic_data.rb +1026 -0
- data/lib/Miyako/API/bitmap.rb +534 -0
- data/lib/Miyako/API/choices.rb +481 -0
- data/lib/Miyako/API/collision.rb +638 -0
- data/lib/Miyako/API/diagram.rb +586 -0
- data/lib/Miyako/API/drawing.rb +151 -0
- data/lib/Miyako/API/exceptions.rb +105 -0
- data/lib/Miyako/API/fixedmap.rb +462 -0
- data/lib/Miyako/API/font.rb +430 -0
- data/lib/Miyako/API/input.rb +456 -0
- data/lib/Miyako/API/layout.rb +644 -0
- data/lib/Miyako/API/map.rb +583 -0
- data/lib/Miyako/API/map_event.rb +222 -0
- data/lib/Miyako/API/modules.rb +357 -0
- data/lib/Miyako/API/movie.rb +166 -0
- data/lib/Miyako/API/parts.rb +188 -0
- data/lib/Miyako/API/plane.rb +205 -0
- data/lib/Miyako/API/screen.rb +341 -0
- data/lib/Miyako/API/shape.rb +443 -0
- data/lib/Miyako/API/sprite.rb +773 -0
- data/lib/Miyako/API/sprite_animation.rb +494 -0
- data/lib/Miyako/API/sprite_list.rb +1135 -0
- data/lib/Miyako/API/spriteunit.rb +168 -0
- data/lib/Miyako/API/story.rb +350 -0
- data/lib/Miyako/API/textbox.rb +773 -0
- data/lib/Miyako/API/utility.rb +419 -0
- data/lib/Miyako/API/viewport.rb +190 -0
- data/lib/Miyako/API/yuki.rb +1180 -0
- data/lib/Miyako/EXT/miyako_cairo.rb +62 -0
- data/lib/Miyako/EXT/raster_scroll.rb +138 -0
- data/lib/Miyako/EXT/slides.rb +157 -0
- data/lib/Miyako/miyako.rb +201 -0
- data/lib/Miyako/miyako_require_only.rb +35 -0
- data/logo/EGSR_logo.png +0 -0
- data/logo/EGSR_logo_bg.png +0 -0
- data/logo/EGSR_logo_fg.png +0 -0
- data/logo/EGSR_title_banner.png +0 -0
- data/logo/EGSR_title_logo.png +0 -0
- data/logo/miyako.png +0 -0
- data/logo/miyako_banner.png +0 -0
- data/logo/space.png +0 -0
- data/miyako_basicdata.c +484 -0
- data/miyako_bitmap.c +1225 -0
- data/miyako_collision.c +403 -0
- data/miyako_drawing.c +187 -0
- data/miyako_font.c +334 -0
- data/miyako_hsv.c +830 -0
- data/miyako_input_audio.c +254 -0
- data/miyako_layout.c +191 -0
- data/miyako_no_katana.c +1086 -0
- data/miyako_sprite2.c +431 -0
- data/miyako_transform.c +438 -0
- data/miyako_utility.c +288 -0
- data/sample/Animation1/m1ku.rb +68 -0
- data/sample/Animation1/m1ku_arm_0.png +0 -0
- data/sample/Animation1/m1ku_arm_1.png +0 -0
- data/sample/Animation1/m1ku_arm_2.png +0 -0
- data/sample/Animation1/m1ku_arm_3.png +0 -0
- data/sample/Animation1/m1ku_back.jpg +0 -0
- data/sample/Animation1/m1ku_body.png +0 -0
- data/sample/Animation1/m1ku_eye_0.png +0 -0
- data/sample/Animation1/m1ku_eye_1.png +0 -0
- data/sample/Animation1/m1ku_eye_2.png +0 -0
- data/sample/Animation1/m1ku_eye_3.png +0 -0
- data/sample/Animation1/m1ku_hair_front.png +0 -0
- data/sample/Animation1/m1ku_hair_rear.png +0 -0
- data/sample/Animation1/readme.txt +72 -0
- data/sample/Animation2/lex.rb +96 -0
- data/sample/Animation2/lex_back.png +0 -0
- data/sample/Animation2/lex_body.png +0 -0
- data/sample/Animation2/lex_roadroller.png +0 -0
- data/sample/Animation2/lex_wheel_0.png +0 -0
- data/sample/Animation2/lex_wheel_1.png +0 -0
- data/sample/Animation2/lex_wheel_2.png +0 -0
- data/sample/Animation2/readme.txt +72 -0
- data/sample/Animation2/song_title.png +0 -0
- data/sample/Diagram_sample/back.png +0 -0
- data/sample/Diagram_sample/chr01.png +0 -0
- data/sample/Diagram_sample/chr02.png +0 -0
- data/sample/Diagram_sample/cursor.png +0 -0
- data/sample/Diagram_sample/diagram_sample_yuki2.rb +329 -0
- data/sample/Diagram_sample/readme.txt +90 -0
- data/sample/Diagram_sample/wait_cursor.png +0 -0
- data/sample/Room3/blue.rb +297 -0
- data/sample/Room3/ending.rb +180 -0
- data/sample/Room3/green.rb +220 -0
- data/sample/Room3/image/akamatsu.png +0 -0
- data/sample/Room3/image/aoyama.png +0 -0
- data/sample/Room3/image/congra.png +0 -0
- data/sample/Room3/image/congratulation.png +0 -0
- data/sample/Room3/image/congratulation_bg.png +0 -0
- data/sample/Room3/image/cursor.png +0 -0
- data/sample/Room3/image/midori.png +0 -0
- data/sample/Room3/image/mittsu_no_oheya.png +0 -0
- data/sample/Room3/image/mittsu_no_oheya_logo.png +0 -0
- data/sample/Room3/image/room_blue.png +0 -0
- data/sample/Room3/image/room_green.png +0 -0
- data/sample/Room3/image/room_red.png +0 -0
- data/sample/Room3/image/start.png +0 -0
- data/sample/Room3/image/three_doors.png +0 -0
- data/sample/Room3/image/wait_cursor.png +0 -0
- data/sample/Room3/main.rb +120 -0
- data/sample/Room3/main_component.rb +59 -0
- data/sample/Room3/readme.txt +76 -0
- data/sample/Room3/red.rb +227 -0
- data/sample/Room3/room3.rb +25 -0
- data/sample/Room3/title.rb +184 -0
- data/sample/ball_action_sample.rb +204 -0
- data/sample/blit_rop.rb +70 -0
- data/sample/cairo_sample.rb +25 -0
- data/sample/circle_collision_test.rb +66 -0
- data/sample/collision_test.rb +33 -0
- data/sample/collision_test2.rb +108 -0
- data/sample/fixed_map_test/cursor.png +0 -0
- data/sample/fixed_map_test/fixed_map_sample.rb +140 -0
- data/sample/fixed_map_test/map.csv +19 -0
- data/sample/fixed_map_test/map_01.png +0 -0
- data/sample/fixed_map_test/mapchip.csv +23 -0
- data/sample/fixed_map_test/monster.png +0 -0
- data/sample/fixed_map_test/readme.txt +72 -0
- data/sample/map_test/chara.rb +58 -0
- data/sample/map_test/chr1.png +0 -0
- data/sample/map_test/cursor.png +0 -0
- data/sample/map_test/main_parts.rb +69 -0
- data/sample/map_test/main_scene.rb +153 -0
- data/sample/map_test/map.png +0 -0
- data/sample/map_test/map2.png +0 -0
- data/sample/map_test/map_layer.csv +127 -0
- data/sample/map_test/map_manager.rb +75 -0
- data/sample/map_test/map_test.rb +23 -0
- data/sample/map_test/mapchip.csv +21 -0
- data/sample/map_test/oasis.rb +71 -0
- data/sample/map_test/readme.txt +89 -0
- data/sample/map_test/route.rb +157 -0
- data/sample/map_test/sea.png +0 -0
- data/sample/map_test/town.rb +74 -0
- data/sample/map_test/wait_cursor.png +0 -0
- data/sample/map_test/window.png +0 -0
- data/sample/polygon_test.rb +35 -0
- data/sample/rasterscroll.rb +25 -0
- data/sample/takahashi.rb +42 -0
- data/sample/text.png +0 -0
- data/sample/textbox_sample.rb +192 -0
- data/sample/transform.rb +54 -0
- data/sample/utility_test.rb +73 -0
- data/sample/utility_test2.rb +61 -0
- data/sample/utility_test3.rb +64 -0
- data/sample/utility_test4.rb +73 -0
- data/uninstall_miyako.rb +19 -0
- data/win/miyako_no_katana.so +0 -0
- 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
|
data/sample/takahashi.rb
ADDED
@@ -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
|
data/sample/transform.rb
ADDED
@@ -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
|
+
|