DXRuby API互換のゲームライブラリを作るための頻出メソッド一覧

Ruby用ゲームライブラリ [DXRuby](http://dxruby.osdn.jp) は、使いやすく人気の高いライブラリです。だだし、Windows上でしか動かないため、Macなど他のOSで動かそうという試みがいくつかなされてきました。

- [Wine上でDXRuby](http://qiita.com/wannabe53/items/4bede69da3032fb1734b)
- [dxruby_sdl](https://github.com/smalruby/dxruby_sdl)
- [dxsdl2r](https://github.com/mirichi/dxsdl2r)
- [dxruby on nanogl](https://github.com/Sup3rc4l1fr4g1l1571c3xp14l1d0c10u5/NanoGL/tree/master/ruby/dxruby_on_nanogl)

このうち Wine上で本物のDXRubyを動かす以外は、DXRubyのAPI互換ライブラリを作ろうというものなので、なかなか100%互換とはいきません。

そこで、これからAPIの互換性を高めて開発していくための目安として、いくつかのDXRubyプログラムと、これまで作られたAPI互換ライブラリで採用されたメソッド、定数を一覧にしてみました。

今後の開発の助けになれば幸いです。
（なお、調査はあくまで著者個人で行ったものなのをご承知おきください。）

参考；
→・[よくわかる Ruby ゲーム開発のいま - あおたくノート](http://blog.aotak.me/post/153865094051/よくわかる-ruby-ゲーム開発のいま)
→・[「中高生国際Rubyプログラミングコンテスト2016 in Mitaka」の最終審査対象作品](http://www.mitaka.ne.jp/ruby/work.html)はすべてDXRubyを使っていました。


##参考にしたプログラム・ライブラリ
○ 『[オブジェクト指向言語「Rubyプログラミング入門」テキスト（初心者用または講師用）2nd Edition](http://store.shopping.yahoo.co.jp/mitakamall/mr001.html)』（まちづくり三鷹著・刊、2015年）
（dxruby on nanogl が[対応させる予定にしている](https://github.com/Sup3rc4l1fr4g1l1571c3xp14l1d0c10u5/NanoGL)書籍）
△ 『[小学生から楽しむRubyプログラミング](http://ec.nikkeibp.co.jp/item/books/B26200.html)』（まちづくり三鷹著、日経BP社刊、2014年）
□ [DXRubyで 0から作る「ブロック崩し」](http://blog.livedoor.jp/noanoa07/archives/2045851.html) - noanoa 日々の日記

● [dxruby_sdl](https://github.com/smalruby/dxruby_sdl)
■ [dxsdl2r](https://github.com/mirichi/dxsdl2r)


　
上記資料で使われたDXRubyのメソッド・定数の頭に、資料の記号をつけてあります。
（DXRubyのメソッド・定数一覧は、[DXRuby 1.4.5 リファレンスマニュアル](http://mirichi.github.io/dxruby-doc/index.html) から）

# module Input
○□●■ x
□●■ y
●■ key_down?
○△●■ key_push?
■ key_release?
● pad_down?
● pad_push?
pad_release?
● set_repeat
set_key_repeat
set_pad_repeat
set_config
■ mouse_x
■ mouse_y
○△□●■ mouse_pos_x
○△□●■ mouse_pos_y
set_mouse_pos
○●■ mouse_down?
○△●■ mouse_push?
○■ mouse_release?
mouse_wheel_pos
mouse_wheel_pos=
mouse_enable=
● keys
pads
requested_close?
■ update
pad_num
pad_axis
pad_lstick
pad_rstick
pad_pov
pad_lx
pad_ly
pad_rx
pad_ry
pad_pov_x
pad_pov_y
set_cursor


# module Window
○△□●■ loop
close
created?
closed?
○△□●■ draw
○△● draw_scale
draw_rot
draw_alpha
draw_add
draw_sub
■ draw_shader
●■ draw_ex
○●■ draw_font
draw_font_ex
draw_morph
draw_tile
draw_pixel
draw_line
draw_box
■ draw_box_fill
draw_circle
draw_circle_fill
ox
ox=
oy
oy=
get_screen_shot
get_load
● open_filename
save_filename
folder_dialog
create
sync
○ update
load_icon
hWnd
x
x=
y
y=
●■ width
○△■ width=
●■ height
○△■ height=
●■ caption
○△●■ caption=
● scale
scale=
windowed?
windowed=
full_screen?
full_screen=
■ real_fps
fps
●■ fps=
frameskip?
frameskip=
●■ bgcolor
●■ bgcolor=
min_filter
min_filter=
mag_filter
mag_filter=
resize
active?
running_time
get_screen_modes
get_current_modes
discard
decide
before_call
after_call

# class Font
○△●■ new
■ install
default
default=

dispose
disposed?
● get_width
size
fontname
name
italic
weight
auto_fitting
info

# class Image
○△□●■ new
○△●■ load
●■ load_tiles
create_from_array
load_from_file_in_memory
perlin_noise
octave_perlin_noise
custom_perlin_noise
perlin_seed

dispose
delayed_dispose
disposed?
■ []
■ []=
● compare
○●■ line
△●■ box
○△●■ box_fill
●■ circle
○△□●■ circle_fill
triangle
triangle_fill
fill
■ clear
copy_rect
△● draw
△● draw_font
draw_font_ex
save
● slice
slice_tiles
dup
clone
○△● set_color_key
△□●■ width
○△□●■ height
flush
effect_image_font
change_hls

#class RenderTarget
●■ new

dispose
disposed?
●■ draw
draw_scale
draw_rot
draw_alpha
draw_add
draw_sub
■ draw_shader
■ draw_ex
●■ draw_font
draw_font_ex
draw_morph
draw_tile
draw_pixel
draw_line
draw_box
draw_box_fill
draw_circle
draw_circle_fill
■ update
■ width
■ height
■ bgcolor
■ bgcolor=
min_filter
min_filter=
mag_filter
mag_filter=
to_image
discard
decide
resize
ox
ox=
oy
oy=

# class Shader
■ new

technique
technique=
setter/getter

# class Shader::Core
■ new

dispose

# class Sound
○● new
load_from_memory

dispose
disposed?
○● play
start=
loop_start=
loop_end=
loop_count=
● stop
● set_volume
pan
pan=
frequency
frequency=

# class SoundEffect
SoundEffect
● new
　　● WAVE_SIN
　　● WAVE_SAW
　　● WAVE_TRI
　　● WAVE_RECT

disposed?
● add
● play
● stop
save

# class Sprite
□●■ new
□● check
●■ update
□●■ draw
□●■ clean

□● draw
□● ===
□● check
□■ x
□■ x=
□■ y
□■ y=
■ z
■ z=
angle
angle=
scale_x
scale_x=
scale_y
scale_y=
center_x
center_x=
center_y
center_y=
alpha
alpha=
blend
blend=
■ shader
■ shader=
□■ image
●■ image=
■ target
■ target=
■ collision
■ collision=
collision_enable
collision_enable=
collision_sync
collision_sync=
visible
visible=
□●■ vanish
●■ vanished?
param_hash
offset_sync
offset_sync=

# キーコード定数

マウス
△●■  M_LBUTTON 左ボタン
●■ M_MBUTTON 中ボタン
●■ M_RBUTTON 右ボタン

パッド定数
● P_UP
● P_LEFT
● P_RIGHT
● P_DOWN
● P_BUTTON0（ボタン１５まで）
● P_L_UP(アナログ左スティックのデジタル入力)
● P_L_LEFT
● P_L_RIGHT
● P_L_DOWN
● P_R_UP(アナログ右スティックのデジタル入力)
● P_R_LEFT
● P_R_RIGHT
● P_R_DOWN
● P_D_UP(アナログPOVのデジタル入力)
● P_D_LEFT
● P_D_RIGHT
● P_D_DOWN

キーボード
○△●■ K_ESCAPE	Esc
● K_1	1
● K_2	2
● K_3	3
● K_4	4
● K_5	5
● K_6	6
● K_7	7
● K_8	8
● K_9	9
● K_0	0
● K_MINUS	-
● K_EQUALS	=
● K_BACK	Backspace
● K_TAB	Tab
● K_Q	Q
● K_W	W
● K_E	E
● K_R	R
● K_T	T
● K_Y	Y
● K_U	U
● K_I	I
● K_O	O
● K_P	P
● K_LBRACKET	[
● K_RBRACKET	]
● K_RETURN	Enter
●■ K_LCONTROL	左Ctrl
● K_A	A
● K_S	S
● K_D	D
● K_F	F
● K_G	G
● K_H	H
● K_J	J
● K_K	K
● K_L	L
● K_SEMICOLON	;
● K_APOSTROPHE	'
● K_GRAVE	`
●■ K_LSHIFT	左Shift
● K_BACKSLASH	\
●■ K_Z	Z
●■ K_X	X
●■ K_C	C
● K_V	V
● K_B	B
● K_N	N
● K_M	M
● K_COMMA	,
● K_PERIOD	.
● K_SLASH	/
●■ K_RSHIFT	右Shift
● K_MULTIPLY	*
● K_LMENU	左Alt
● △■ K_SPACE	Space
● K_CAPITAL	Caps Lock
● K_F1	F1
● K_F2	F2
● K_F3	F3
● K_F4	F4
● K_F5	F5
● K_F6	F6
● K_F7	F7
● K_F8	F8
● K_F9	F9
● K_F10	F10
● K_NUMLOCK	NumLock
● K_SCROLL	ScrollLock
● K_NUMPAD7	7
● K_NUMPAD8	8
● K_NUMPAD9	9
● K_SUBTRACT	-
● K_NUMPAD4	4
● K_NUMPAD5	5
● K_NUMPAD6	6
● K_ADD	+ *3
● K_NUMPAD1	1
● K_NUMPAD2	2
● K_NUMPAD3	3
● K_NUMPAD0	0
● K_DECIMAL	.
● K_OEM_102	不明
● K_F11	F11
● K_F12	F12
● K_F13	F13
● K_F14	F14
● K_F15	F15
● K_KANA	カタカナひらがな
● K_ABNT_C1	不明
● K_CONVERT	変換
● K_NOCONVERT	無変換
● K_YEN	￥
● K_ABNT_C2	不明
● K_NUMPADEQUALS	=
● K_PREVTRACK	^
● K_AT	@
● K_COLON	:
● K_UNDERLINE	_
● K_KANJI	半角/全角
● K_STOP	不明
● K_AX	不明
● K_UNLABELED	不明
● K_NEXTTRACK	不明
● K_NUMPADENTER	Enter 
●■ K_RCONTROL	右Ctrl
● K_MUTE	不明
● K_CALCULATOR	不明
● K_PLAYPAUSE	不明
● K_MEDIASTOP	不明
● K_VOLUMEDOWN	不明
● K_VOLUMEUP	不明
● K_WEBHOME	不明
● K_NUMPADCOMMA	,
● K_DIVIDE	/
● K_SYSRQ	不明
● K_RMENU	右Alt
● K_PAUSE	PauseBreak
● K_HOME	Home
●■ K_UP	↑
● K_PRIOR	不明
●■ K_LEFT	←
●■ K_RIGHT	→
● K_END	End
●■ K_DOWN	↓
● K_NEXT	不明
● K_INSERT	Insert
● K_DELETE	Delete
● K_LWIN	左Windows
● K_RWIN	右Windows
● K_APPS	アプリケーション
● K_POWER	不明
● K_SLEEP	不明
● K_WAKE	不明
● K_WEBSEARCH	不明
● K_WEBFAVORITES	不明
● K_WEBREFRESH	不明
● K_WEBSTOP	不明
● K_WEBFORWARD	不明
● K_WEBBACK	不明
● K_MYCOMPUTER	不明
● K_MAIL	不明
● K_MEDIASELECT	不明
● K_BACKSPACE	Backspace
● K_NUMPADSTAR	*
K_LALT	左Alt
K_CAPSLOCK	CapsLock
K_NUMPADMINUS	-
K_NUMPADPLUS	+
K_NUMPADPERIOD	.
K_NUMPADSLASH	/
K_RALT	右Alt
△ K_UPARROW	↑
K_PGUP	PageUp
△ K_LEFTARROW	←
△ K_RIGHTARROW	→
△ K_DOWNARROW	↓
K_PGDN	PageDown

# 色定数
C_BLACK	[255, 0, 0, 0]
□■ C_RED	[255, 255, 0, 0]
C_GREEN	[255, 0, 255, 0]
C_BLUE	[255, 0, 0, 255]
C_YELLOW	[255, 255, 255, 0]
C_CYAN	[255, 0, 255, 255]
C_MAGENTA	[255, 255, 0, 255]
○□■ C_WHITE	[255, 255, 255, 255]
C_DEFAULT	[0, 0, 0, 0]