cyross-ruby-miyako 2.0.5.1 → 2.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.
- data/README +1092 -929
- data/Rakefile +7 -7
- data/defines.h +144 -144
- data/extern.h +29 -29
- data/install_miyako.rb +87 -87
- data/lib/Miyako/API/audio.rb +572 -198
- data/lib/Miyako/API/basic_data.rb +825 -573
- data/lib/Miyako/API/bitmap.rb +534 -507
- data/lib/Miyako/API/choices.rb +481 -475
- data/lib/Miyako/API/collision.rb +486 -460
- data/lib/Miyako/API/diagram.rb +586 -561
- data/lib/Miyako/API/drawing.rb +151 -151
- data/lib/Miyako/API/exceptions.rb +105 -0
- data/lib/Miyako/API/fixedmap.rb +462 -428
- data/lib/Miyako/API/font.rb +430 -403
- data/lib/Miyako/API/input.rb +456 -447
- data/lib/Miyako/API/layout.rb +636 -433
- data/lib/Miyako/API/map.rb +583 -529
- data/lib/Miyako/API/map_event.rb +222 -198
- data/lib/Miyako/API/modules.rb +357 -109
- data/lib/Miyako/API/movie.rb +166 -154
- data/lib/Miyako/API/parts.rb +276 -189
- data/lib/Miyako/API/plane.rb +205 -166
- data/lib/Miyako/API/screen.rb +341 -325
- data/lib/Miyako/API/shape.rb +443 -443
- data/lib/Miyako/API/sprite.rb +771 -752
- data/lib/Miyako/API/sprite_animation.rb +490 -481
- data/lib/Miyako/API/sprite_list.rb +1135 -0
- data/lib/Miyako/API/spriteunit.rb +168 -147
- data/lib/Miyako/API/story.rb +350 -300
- data/lib/Miyako/API/textbox.rb +770 -725
- data/lib/Miyako/API/utility.rb +419 -388
- data/lib/Miyako/API/viewport.rb +189 -139
- data/lib/Miyako/API/yuki.rb +1226 -996
- data/lib/Miyako/EXT/miyako_cairo.rb +62 -62
- data/lib/Miyako/EXT/raster_scroll.rb +138 -138
- data/lib/Miyako/EXT/slides.rb +157 -157
- data/lib/Miyako/miyako.rb +201 -171
- data/lib/Miyako/miyako_require_only.rb +35 -0
- data/miyako_basicdata.c +590 -590
- data/miyako_bitmap.c +1225 -1225
- data/miyako_collision.c +403 -403
- data/miyako_drawing.c +187 -187
- data/miyako_font.c +334 -334
- data/miyako_hsv.c +830 -830
- data/miyako_input_audio.c +254 -0
- data/miyako_layout.c +191 -191
- data/miyako_no_katana.c +1078 -1074
- data/miyako_sprite2.c +431 -0
- data/miyako_transform.c +438 -438
- data/miyako_utility.c +288 -288
- data/sample/Animation1/m1ku.rb +68 -68
- data/sample/Animation2/lex.rb +96 -96
- data/sample/Diagram_sample/diagram_sample_yuki2.rb +328 -386
- data/sample/Room3/blue.rb +297 -297
- data/sample/Room3/ending.rb +180 -180
- data/sample/Room3/green.rb +220 -220
- data/sample/Room3/main.rb +119 -119
- data/sample/Room3/main_component.rb +59 -59
- data/sample/Room3/red.rb +227 -227
- data/sample/Room3/room3.rb +25 -27
- data/sample/Room3/title.rb +184 -184
- data/sample/ball_action_sample.rb +204 -204
- data/sample/blit_rop.rb +70 -70
- data/sample/cairo_sample.rb +25 -25
- data/sample/circle_collision_test.rb +66 -66
- data/sample/collision_test.rb +33 -33
- data/sample/collision_test2.rb +108 -108
- data/sample/fixed_map_test/fixed_map_sample.rb +140 -140
- data/sample/fixed_map_test/readme.txt +72 -72
- data/sample/map_test/chara.rb +58 -58
- data/sample/map_test/main_parts.rb +69 -69
- data/sample/map_test/main_scene.rb +153 -153
- data/sample/map_test/map_manager.rb +75 -75
- data/sample/map_test/map_test.rb +23 -23
- data/sample/map_test/oasis.rb +71 -71
- data/sample/map_test/readme.txt +89 -89
- data/sample/map_test/route.rb +157 -157
- data/sample/map_test/town.rb +74 -74
- data/sample/polygon_test.rb +35 -35
- data/sample/rasterscroll.rb +24 -24
- data/sample/takahashi.rb +42 -42
- data/sample/textbox_sample.rb +189 -189
- data/sample/transform.rb +54 -54
- data/sample/utility_test.rb +73 -73
- data/sample/utility_test2.rb +61 -61
- data/sample/utility_test3.rb +64 -64
- data/sample/utility_test4.rb +73 -73
- data/uninstall_miyako.rb +19 -19
- data/win/miyako_no_katana.so +0 -0
- metadata +7 -2
data/sample/transform.rb
CHANGED
@@ -1,54 +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
|
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
|
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
|
data/sample/utility_test.rb
CHANGED
@@ -1,73 +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
|
-
|
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
|
+
|
data/sample/utility_test2.rb
CHANGED
@@ -1,61 +1,61 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
# Utility.product_positionサンプル
|
3
|
-
# 2009.4.12 Cyross Makoto
|
4
|
-
|
5
|
-
require 'Miyako/miyako'
|
6
|
-
|
7
|
-
# 色配列(Enumerator)
|
8
|
-
colors = [[0,0,255], # 青色
|
9
|
-
[0,255,0], # 緑色
|
10
|
-
[0,255,255], # 水色
|
11
|
-
[255,0,0], # 赤色
|
12
|
-
[255,0,255], # 紫色
|
13
|
-
[255,255,0] # 黄色
|
14
|
-
].cycle
|
15
|
-
|
16
|
-
# 矩形サイズの設定
|
17
|
-
size = 16
|
18
|
-
|
19
|
-
# コリジョンの設定
|
20
|
-
collision = Miyako::Collision.new(Miyako::Rect.new(0,0,size,size))
|
21
|
-
position = Miyako::Point.new(0, 0)
|
22
|
-
amount = 4
|
23
|
-
|
24
|
-
# メインループの開始
|
25
|
-
loop do
|
26
|
-
Miyako::Input.update
|
27
|
-
# Escキー押下もしくは×印クリックのときは終了
|
28
|
-
break if Miyako::Input.quit_or_escape?
|
29
|
-
|
30
|
-
# キャラの位置の更新
|
31
|
-
# キーが押されたとき、移動先が画面の範囲内なら移動
|
32
|
-
# [仮移動量,座標,コリジョンサイズ,画面サイズ] の形式で取り込んで、Utility.in_bounds?メソッドで判定
|
33
|
-
move_amount = Miyako::Input.trigger_amount.map{|v| v * amount}. # 入力値 * amount = 仮移動量
|
34
|
-
zip(position, collision.rect.
|
35
|
-
map{|qual|
|
36
|
-
Miyako::Utility.in_bounds?(
|
37
|
-
[qual[1],qual[1]+qual[2]-1],
|
38
|
-
[0, qual[3]-1],
|
39
|
-
qual[0]
|
40
|
-
) ? qual[0] : 0
|
41
|
-
}
|
42
|
-
position.move(*move_amount)
|
43
|
-
|
44
|
-
array = Miyako::Utility.product_position(position,collision.rect,[size,size])
|
45
|
-
|
46
|
-
# 画面の描画
|
47
|
-
# 画面の消去
|
48
|
-
Miyako::Screen.clear
|
49
|
-
|
50
|
-
# 当たり判定の表示
|
51
|
-
array.each{|pos|
|
52
|
-
Miyako::Drawing.rect(Miyako::Screen, pos+[size,size], colors.next)
|
53
|
-
}
|
54
|
-
|
55
|
-
# 現在操作しているキャラの表示
|
56
|
-
Miyako::Drawing.rect(Miyako::Screen, position.to_a+collision.rect.
|
57
|
-
|
58
|
-
# 画面の更新
|
59
|
-
Miyako::Screen.render
|
60
|
-
end
|
61
|
-
|
1
|
+
# encoding: utf-8
|
2
|
+
# Utility.product_positionサンプル
|
3
|
+
# 2009.4.12 Cyross Makoto
|
4
|
+
|
5
|
+
require 'Miyako/miyako'
|
6
|
+
|
7
|
+
# 色配列(Enumerator)
|
8
|
+
colors = [[0,0,255], # 青色
|
9
|
+
[0,255,0], # 緑色
|
10
|
+
[0,255,255], # 水色
|
11
|
+
[255,0,0], # 赤色
|
12
|
+
[255,0,255], # 紫色
|
13
|
+
[255,255,0] # 黄色
|
14
|
+
].cycle
|
15
|
+
|
16
|
+
# 矩形サイズの設定
|
17
|
+
size = 16
|
18
|
+
|
19
|
+
# コリジョンの設定
|
20
|
+
collision = Miyako::Collision.new(Miyako::Rect.new(0,0,size,size))
|
21
|
+
position = Miyako::Point.new(0, 0)
|
22
|
+
amount = 4
|
23
|
+
|
24
|
+
# メインループの開始
|
25
|
+
loop do
|
26
|
+
Miyako::Input.update
|
27
|
+
# Escキー押下もしくは×印クリックのときは終了
|
28
|
+
break if Miyako::Input.quit_or_escape?
|
29
|
+
|
30
|
+
# キャラの位置の更新
|
31
|
+
# キーが押されたとき、移動先が画面の範囲内なら移動
|
32
|
+
# [仮移動量,座標,コリジョンサイズ,画面サイズ] の形式で取り込んで、Utility.in_bounds?メソッドで判定
|
33
|
+
move_amount = Miyako::Input.trigger_amount.map{|v| v * amount}. # 入力値 * amount = 仮移動量
|
34
|
+
zip(position, collision.rect.size, Miyako::Screen.size).
|
35
|
+
map{|qual|
|
36
|
+
Miyako::Utility.in_bounds?(
|
37
|
+
[qual[1],qual[1]+qual[2]-1],
|
38
|
+
[0, qual[3]-1],
|
39
|
+
qual[0]
|
40
|
+
) ? qual[0] : 0
|
41
|
+
}
|
42
|
+
position.move!(*move_amount)
|
43
|
+
|
44
|
+
array = Miyako::Utility.product_position(position,collision.rect,[size,size])
|
45
|
+
|
46
|
+
# 画面の描画
|
47
|
+
# 画面の消去
|
48
|
+
Miyako::Screen.clear
|
49
|
+
|
50
|
+
# 当たり判定の表示
|
51
|
+
array.each{|pos|
|
52
|
+
Miyako::Drawing.rect(Miyako::Screen, pos+[size,size], colors.next)
|
53
|
+
}
|
54
|
+
|
55
|
+
# 現在操作しているキャラの表示
|
56
|
+
Miyako::Drawing.rect(Miyako::Screen, position.to_a+collision.rect.size, [255,255,255])
|
57
|
+
|
58
|
+
# 画面の更新
|
59
|
+
Miyako::Screen.render
|
60
|
+
end
|
61
|
+
|
data/sample/utility_test3.rb
CHANGED
@@ -1,64 +1,64 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
# Utility.product_positionサンプル
|
3
|
-
# 内部では実数(Utility.product_position_f)で算出
|
4
|
-
# 2009.4.19 Cyross Makoto
|
5
|
-
|
6
|
-
require 'Miyako/miyako'
|
7
|
-
|
8
|
-
# 色配列(Enumerator)
|
9
|
-
colors = [[0,0,255], # 青色
|
10
|
-
[0,255,0], # 緑色
|
11
|
-
[0,255,255], # 水色
|
12
|
-
[255,0,0], # 赤色
|
13
|
-
[255,0,255], # 紫色
|
14
|
-
[255,255,0] # 黄色
|
15
|
-
].cycle
|
16
|
-
|
17
|
-
# 矩形サイズの設定
|
18
|
-
size = 16
|
19
|
-
|
20
|
-
# コリジョンの設定
|
21
|
-
collision = Miyako::Collision.new(Miyako::Rect.new(0,0,size,size))
|
22
|
-
position = Miyako::Point.new(0, 0)
|
23
|
-
amount = 4
|
24
|
-
|
25
|
-
# メインループの開始
|
26
|
-
loop do
|
27
|
-
Miyako::Input.update
|
28
|
-
# Escキー押下もしくは×印クリックのときは終了
|
29
|
-
break if Miyako::Input.quit_or_escape?
|
30
|
-
|
31
|
-
# キャラの位置の更新
|
32
|
-
# キーが押されたとき、移動先が画面の範囲内なら移動
|
33
|
-
# [仮移動量,座標,コリジョンサイズ,画面サイズ] の形式で取り込んで、Utility.in_bounds?メソッドで判定
|
34
|
-
move_amount = Miyako::Input.trigger_amount.map{|v| v * amount}. # 入力値 * amount = 仮移動量
|
35
|
-
zip(position, collision.rect.
|
36
|
-
map{|qual|
|
37
|
-
Miyako::Utility.in_bounds?(
|
38
|
-
[qual[1],qual[1]+qual[2]-1],
|
39
|
-
[0, qual[3]-1],
|
40
|
-
qual[0]
|
41
|
-
) ? qual[0] : 0
|
42
|
-
}
|
43
|
-
position.move(*move_amount)
|
44
|
-
|
45
|
-
# 矩形上の位置の組み合わせを求める
|
46
|
-
# 内部では実数で算出
|
47
|
-
array = Miyako::Utility.product_position_f(position,collision.rect,[size,size])
|
48
|
-
|
49
|
-
# 画面の描画
|
50
|
-
# 画面の消去
|
51
|
-
Miyako::Screen.clear
|
52
|
-
|
53
|
-
# 当たり判定の表示
|
54
|
-
array.each{|pos|
|
55
|
-
Miyako::Drawing.rect(Miyako::Screen, pos+[size,size], colors.next)
|
56
|
-
}
|
57
|
-
|
58
|
-
# 現在操作しているキャラの表示
|
59
|
-
Miyako::Drawing.rect(Miyako::Screen, position.to_a+collision.rect.
|
60
|
-
|
61
|
-
# 画面の更新
|
62
|
-
Miyako::Screen.render
|
63
|
-
end
|
64
|
-
|
1
|
+
# encoding: utf-8
|
2
|
+
# Utility.product_positionサンプル
|
3
|
+
# 内部では実数(Utility.product_position_f)で算出
|
4
|
+
# 2009.4.19 Cyross Makoto
|
5
|
+
|
6
|
+
require 'Miyako/miyako'
|
7
|
+
|
8
|
+
# 色配列(Enumerator)
|
9
|
+
colors = [[0,0,255], # 青色
|
10
|
+
[0,255,0], # 緑色
|
11
|
+
[0,255,255], # 水色
|
12
|
+
[255,0,0], # 赤色
|
13
|
+
[255,0,255], # 紫色
|
14
|
+
[255,255,0] # 黄色
|
15
|
+
].cycle
|
16
|
+
|
17
|
+
# 矩形サイズの設定
|
18
|
+
size = 16
|
19
|
+
|
20
|
+
# コリジョンの設定
|
21
|
+
collision = Miyako::Collision.new(Miyako::Rect.new(0,0,size,size))
|
22
|
+
position = Miyako::Point.new(0, 0)
|
23
|
+
amount = 4
|
24
|
+
|
25
|
+
# メインループの開始
|
26
|
+
loop do
|
27
|
+
Miyako::Input.update
|
28
|
+
# Escキー押下もしくは×印クリックのときは終了
|
29
|
+
break if Miyako::Input.quit_or_escape?
|
30
|
+
|
31
|
+
# キャラの位置の更新
|
32
|
+
# キーが押されたとき、移動先が画面の範囲内なら移動
|
33
|
+
# [仮移動量,座標,コリジョンサイズ,画面サイズ] の形式で取り込んで、Utility.in_bounds?メソッドで判定
|
34
|
+
move_amount = Miyako::Input.trigger_amount.map{|v| v * amount}. # 入力値 * amount = 仮移動量
|
35
|
+
zip(position, collision.rect.size, Miyako::Screen.size).
|
36
|
+
map{|qual|
|
37
|
+
Miyako::Utility.in_bounds?(
|
38
|
+
[qual[1],qual[1]+qual[2]-1],
|
39
|
+
[0, qual[3]-1],
|
40
|
+
qual[0]
|
41
|
+
) ? qual[0] : 0
|
42
|
+
}
|
43
|
+
position.move!(*move_amount)
|
44
|
+
|
45
|
+
# 矩形上の位置の組み合わせを求める
|
46
|
+
# 内部では実数で算出
|
47
|
+
array = Miyako::Utility.product_position_f(position,collision.rect,[size,size])
|
48
|
+
|
49
|
+
# 画面の描画
|
50
|
+
# 画面の消去
|
51
|
+
Miyako::Screen.clear
|
52
|
+
|
53
|
+
# 当たり判定の表示
|
54
|
+
array.each{|pos|
|
55
|
+
Miyako::Drawing.rect(Miyako::Screen, pos+[size,size], colors.next)
|
56
|
+
}
|
57
|
+
|
58
|
+
# 現在操作しているキャラの表示
|
59
|
+
Miyako::Drawing.rect(Miyako::Screen, position.to_a+collision.rect.size, [255,255,255])
|
60
|
+
|
61
|
+
# 画面の更新
|
62
|
+
Miyako::Screen.render
|
63
|
+
end
|
64
|
+
|