dxruby_sdl 0.0.1 → 0.0.2

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.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NzJhYzhjNTM0MzdmNTA3NGYzZmU0ZjM0ZmM5Nzg5ZWFmZTQxODI5Mw==
4
+ OGIxYTRjODcxNGNiZjU5MDlkNDY5ZjMxZmZhOTA3MTBjYzk1NmE0ZA==
5
5
  data.tar.gz: !binary |-
6
- Y2Y2ZWIxMmM1Mjc2NTM2OWNmMjE1MjViNDI2NTNmZGVkZmQ4NjgyYw==
6
+ ODQ2MTgzODg3YWY5YWJkNzNkZDI2NjRhYzczMDAxNTUzNmU1MGVjOA==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- MmY1YmJhNmUzMDI3ZjVhZjRhZTk4M2NhMGE1NTI1OTI5MmFjZjAwYTc5NjI4
10
- NGNmYTczNjViMzVhZDQxZjk1OGQ1MGQ5ZjllYjI3Yjc3YmRlNDE2NDBmOTcw
11
- YjQ3ZTRiYTQ4N2UwM2RhZDZkOTRjY2I5YzQ5YTNkMGE5NzRjMTI=
9
+ YmQ0YTVjNzFjZjlkZTQ4OGM3MmIwNzgyZjRiZTdkMmUzZTQ1ZDY0OWUyNzA5
10
+ ZjEyZjhlNzM3NGM5N2UwNTBmNDQwYjdmMjE5MzM5NGM0NDUzODMyZjAzZTI0
11
+ OWEzMWFmOTA2ODY1NDkyN2Q2ZTZlYzAyZjQxN2FiNGY3NGZlZjE=
12
12
  data.tar.gz: !binary |-
13
- MDI5Nzg3NGYxZmRjOTU2YmVlMDJhZjQwNWFjMjFlMWY1ODVmMTNiNjYyNTVk
14
- YjJmNDgxZTkyN2VjYzJjZGY4YzkyNjQzM2Y0ZWRkYmI5ZmFhM2NmZDRhZDll
15
- OTc1M2MwODY2OGU5NDNhZWE4ZjlkODBlYzg4ZjA4NGQzYmE0MjQ=
13
+ MzQ5NTBmNjJhMTljMTQyOGM2OWU0NmY0NTQzNjEzODVkZmMwODcxODg1M2U4
14
+ Mzc5M2Q1MjNlZTkzNzg2MGU4MzAzMDJmYzc1MTg0YTViNmU2MmJhY2M5NjQz
15
+ MzlkZDkzZjU5NzFlMDg4ZjVlNWVjOTEzY2ZmNDI2Y2Y5Njc0YTQ=
data/.rubocop.yml CHANGED
@@ -18,3 +18,7 @@ IfUnlessModifier:
18
18
 
19
19
  RedundantReturn:
20
20
  Enabled: false
21
+
22
+ AsciiComments:
23
+ Enabled: false
24
+
data/.travis.yml CHANGED
@@ -8,4 +8,4 @@ env:
8
8
 
9
9
  before_install:
10
10
  - sudo apt-get update -qq
11
- - sudo apt-get install -qq libsdl1.2-dev libsdl-ttf2.0-dev libsdl-sge-dev otf-ipafont-gothic
11
+ - sudo apt-get install -qq libsdl1.2-dev libsdl-mixer1.2-dev timidity libsdl-ttf2.0-dev libsdl-sge-dev otf-ipafont-gothic
data/LEGAL CHANGED
@@ -9,3 +9,24 @@ lib/dxruby_sdl/window/fpstimer.rb:
9
9
 
10
10
  FPSTimer (Original name is FPSTimerSample) class is implemented in
11
11
  http://www.kmc.gr.jp/~ohai/fpstimer.rb.
12
+
13
+ samples/tutorial-2-01.rb, samples/tutorial-2-02.rb,
14
+ samples/tutorial-2-03.rb, samples/tutorial-2-04.rb,
15
+ samples/tutorial-2-05.rb, samples/tutorial-2-06.rb,
16
+ samples/tutorial-2-07.rb, samples/tutorial-2-08.rb,
17
+ samples/tutorial-2-09.rb, samples/tutorial-2-10.rb:
18
+
19
+ These sample programs are copied from DXRuby's tutorial
20
+ http://dxruby.sourceforge.jp/DXRubyReference/200953183259625.htm.
21
+
22
+ spec/fixtures/sound.wav:
23
+
24
+ This is downloaded from maokai(魔王魂)
25
+ http://maoudamashii.jokersounds.com/.
26
+ Original name is 'se_maoudamashii_onepoint26.wav'.
27
+
28
+ spec/fixtures/bgm.mid:
29
+
30
+ This is downloaded from maokai(魔王魂)
31
+ http://maoudamashii.jokersounds.com/.
32
+ Original name is 'song_32_grandiflora.mid'.
@@ -6,6 +6,29 @@ module DXRubySDL
6
6
 
7
7
  attr_reader :_surface
8
8
 
9
+ def self.load(filename, x = nil, y = nil, width = nil, height = nil)
10
+ image = new(0, 0)
11
+ surface = SDL::Surface.load(filename)
12
+ image.instance_variable_set('@_surface', surface)
13
+ return image
14
+ end
15
+
16
+ def self.load_tiles(filename, xcount, ycount)
17
+ surface = SDL::Surface.load(filename)
18
+ width = surface.w / xcount
19
+ height = surface.h / ycount
20
+ images = []
21
+ ycount.times do |y|
22
+ xcount.times do |x|
23
+ image = new(0, 0)
24
+ s = surface.copy_rect(x * width, y * height, width, height)
25
+ image.instance_variable_set('@_surface', s)
26
+ images << image
27
+ end
28
+ end
29
+ return images
30
+ end
31
+
9
32
  def initialize(width, height, color = [0, 0, 0, 0])
10
33
  @color = color
11
34
 
@@ -26,14 +49,25 @@ module DXRubySDL
26
49
  return @_surface.h
27
50
  end
28
51
 
52
+ def slice(x, y, width, height)
53
+ s = @_surface.copy_rect(x, y, width, height)
54
+ image = Image.new(0, 0)
55
+ image.instance_variable_set('@_surface', s)
56
+ return image
57
+ end
58
+
29
59
  def line(x1, y1, x2, y2, color)
30
- @_surface.draw_line(x1, y1, x2, y2,
31
- to_sdl_color(color), true, to_sdl_alpha(color))
60
+ lock do
61
+ @_surface.draw_line(x1, y1, x2, y2,
62
+ to_sdl_color(color), true, to_sdl_alpha(color))
63
+ end
32
64
  end
33
65
 
34
66
  def circle(x, y, r, color)
35
- @_surface.draw_circle(x, y, r, to_sdl_color(color), false, true,
36
- to_sdl_alpha(color))
67
+ lock do
68
+ @_surface.draw_circle(x, y, r, to_sdl_color(color), false, true,
69
+ to_sdl_alpha(color))
70
+ end
37
71
  end
38
72
 
39
73
  def box(x1, y1, x2, y2, color)
@@ -41,14 +75,32 @@ module DXRubySDL
41
75
  w = (x2 - x1).abs
42
76
  y = y1 < y2 ? y1 : y2
43
77
  h = (y2 - y1).abs
44
- @_surface.draw_rect(x, y, w, h, to_sdl_color(color))
78
+ lock do
79
+ @_surface.draw_rect(x, y, w, h, to_sdl_color(color))
80
+ end
45
81
  end
46
82
 
47
- def self.load(filename, x = nil, y = nil, width = nil, height = nil)
48
- image = new(0, 0)
49
- surface = SDL::Surface.load(filename)
50
- image.instance_variable_set('@_surface', surface)
51
- return image
83
+ # rubocop:disable SymbolName
84
+ class << self
85
+ alias_method :loadTiles, :load_tiles
86
+ alias_method :load_to_array, :load_tiles
87
+ alias_method :loadToArray, :load_to_array
88
+ end
89
+ # rubocop:enable SymbolName
90
+
91
+ private
92
+
93
+ def lock(&block)
94
+ if SDL::Surface.auto_lock?
95
+ yield
96
+ else
97
+ begin
98
+ @_surface.lock
99
+ yield
100
+ ensure
101
+ @_surface.unlock
102
+ end
103
+ end
52
104
  end
53
105
  end
54
106
  end
@@ -0,0 +1,127 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ module DXRubySDL
4
+ module Input
5
+ module_function
6
+
7
+ def x(pad_number = 0)
8
+ res = 0
9
+ if key_press?(SDL::Key::LEFT)
10
+ res -= 1
11
+ end
12
+ if key_press?(SDL::Key::RIGHT)
13
+ res += 1
14
+ end
15
+ return res
16
+ end
17
+
18
+ def y(pad_number = 0)
19
+ res = 0
20
+ if key_press?(SDL::Key::UP)
21
+ res -= 1
22
+ end
23
+ if key_press?(SDL::Key::DOWN)
24
+ res += 1
25
+ end
26
+ return res
27
+ end
28
+
29
+ def pad_down?(button_code, pad_number = 0)
30
+ if button_code == P_BUTTON0 && key_press?(SDL::Key::Z) ||
31
+ button_code == P_BUTTON1 && key_press?(SDL::Key::X) ||
32
+ button_code == P_BUTTON2 && key_press?(SDL::Key::C) ||
33
+ ((j = joystick(pad_number)) && j.button(button_code))
34
+ return true
35
+ end
36
+ return false
37
+ end
38
+
39
+ def mouse_pos_x
40
+ return SDL::Mouse.state[0]
41
+ end
42
+
43
+ def mouse_pos_y
44
+ return SDL::Mouse.state[1]
45
+ end
46
+
47
+ def key_push?(key_code)
48
+ return key_press?(to_sdl_key(key_code))
49
+ end
50
+
51
+ # rubocop:disable SymbolName
52
+ class << self
53
+ alias_method :padDown?, :pad_down?
54
+ alias_method :mousePosX, :mouse_pos_x
55
+ alias_method :mousePosY, :mouse_pos_y
56
+ alias_method :keyPush?, :key_push?
57
+ end
58
+ # rubocop:enable SymbolName
59
+
60
+ private
61
+
62
+ @joysticks = []
63
+
64
+ class << self
65
+
66
+ private
67
+
68
+ KEY_TABLE = {}
69
+ replace_table = {
70
+ 'BACK' => 'BACKSPACE',
71
+ 'ADD' => 'PLUS',
72
+ 'DIVIDE' => 'SLASH',
73
+ 'LCONTROL' => 'LCTRL',
74
+ 'RCONTROL' => 'RCTRL',
75
+ 'SCROLL' => 'SCROLLOCK',
76
+ 'GRAVE' => 'BACKQUOTE',
77
+ 'LBRACKET' => 'LEFTBRACKET',
78
+ 'RBRACKET' => 'RIGHTBRACKET',
79
+ 'LWIN' => 'LSUPER',
80
+ 'RWIN' => 'RSUPER',
81
+ 'YEN' => 'BACKSLASH',
82
+ }
83
+ ::DXRubySDL.constants.grep(/^K_/).each do |k|
84
+ name = k.to_s.sub(/^K_/, '')
85
+ name.gsub!('COMMA', 'PERIOD')
86
+ if replace_table.key?(name)
87
+ name = replace_table[name]
88
+ end
89
+ case name
90
+ when /^\d$/
91
+ name = "K#{name}"
92
+ when /^NUMPAD(.+)$/
93
+ md = Regexp.last_match
94
+ if md[1].length > 1
95
+ name = "KP_#{md[1]}"
96
+ else
97
+ name = "KP#{md[1]}"
98
+ end
99
+ end
100
+ begin
101
+ KEY_TABLE[DXRubySDL.const_get(k)] = SDL::Key.const_get(name.to_sym)
102
+ rescue NameError
103
+ end
104
+ end
105
+ private_constant :KEY_TABLE
106
+
107
+ def key_press?(key)
108
+ SDL::Key.scan
109
+ return SDL::Key.press?(key)
110
+ end
111
+
112
+ def joystick(pad_number)
113
+ if pad_number >= SDL::Joystick.num
114
+ return nil
115
+ end
116
+ if !@joysticks[pad_number]
117
+ @joysticks[pad_number] = SDL::Joystick.open(pad_number)
118
+ end
119
+ return @joysticks[pad_number]
120
+ end
121
+
122
+ def to_sdl_key(key_code)
123
+ return KEY_TABLE[key_code]
124
+ end
125
+ end
126
+ end
127
+ end
@@ -0,0 +1,54 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ module DXRubySDL
4
+ class Sound
5
+ @sdl_mixer_openend = false
6
+
7
+ def initialize(filename)
8
+ if !self.class.instance_variable_get('@sdl_mixer_openend')
9
+ SDL::Mixer.open
10
+ SDL::Mixer.allocate_channels(2)
11
+ self.class.instance_variable_set('@sdl_mixer_openend', true)
12
+ end
13
+ if /\.mid$/ =~ filename
14
+ @sound = Music.new(filename)
15
+ else
16
+ @sound = Wave.new(filename)
17
+ end
18
+ end
19
+
20
+ def play
21
+ @sound.play
22
+ end
23
+
24
+ private
25
+
26
+ class Music
27
+ def initialize(filename)
28
+ @music = SDL::Mixer::Music.load(filename)
29
+ end
30
+
31
+ def play
32
+ SDL::Mixer.play_music(@music, -1)
33
+ end
34
+ end
35
+ private_constant :Music
36
+
37
+ class Wave
38
+ def initialize(filename)
39
+ @wave = SDL::Mixer::Wave.load(filename)
40
+ @last_played_channel = nil
41
+ end
42
+
43
+ def play
44
+ @last_played_channel = SDL::Mixer.play_channel(-1, @wave, 0)
45
+ rescue SDL::Error => e
46
+ if /No free channels available/ =~ e.message
47
+ SDL::Mixer.halt(@last_played_channel == 0 ? 1 : 0)
48
+ retry
49
+ end
50
+ end
51
+ end
52
+ private_constant :Wave
53
+ end
54
+ end
@@ -1,5 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
3
  module DXRubySDL
4
- VERSION = '0.0.1'
4
+ VERSION = '0.0.2'
5
5
  end
@@ -14,23 +14,23 @@ module DXRubySDL
14
14
  end
15
15
 
16
16
  def loop(&block)
17
- _screen.fill_rect(0, 0, DEFAULTS[:width], DEFAULTS[:height],
18
- DEFAULTS[:background_color])
19
- _screen.update_rect(0, 0, 0, 0)
20
-
21
17
  timer = FPSTimer.instance
22
18
  timer.reset
23
19
 
24
20
  Kernel.loop do
25
- while (event = SDL::Event.poll)
26
- case event
27
- when SDL::Event::Quit
28
- exit
21
+ timer.wait_frame do
22
+ while (event = SDL::Event.poll)
23
+ case event
24
+ when SDL::Event::Quit
25
+ exit
26
+ end
29
27
  end
30
- end
31
28
 
32
- timer.wait_frame do
29
+ _screen.fill_rect(0, 0, DEFAULTS[:width], DEFAULTS[:height],
30
+ DEFAULTS[:background_color])
31
+
33
32
  yield
33
+
34
34
  _screen.update_rect(0, 0, 0, 0)
35
35
  end
36
36
  end
@@ -49,6 +49,12 @@ module DXRubySDL
49
49
  font._ttf.draw_blended_utf8(_screen, string, x, y, r, g, b)
50
50
  end
51
51
 
52
+ # rubocop:disable SymbolName
53
+ class << self
54
+ alias_method :drawFont, :draw_font
55
+ end
56
+ # rubocop:enable SymbolName
57
+
52
58
  private
53
59
 
54
60
  DEFAULTS = {
data/lib/dxruby_sdl.rb CHANGED
@@ -2,12 +2,213 @@
2
2
 
3
3
  require 'dxruby_sdl/version'
4
4
  require 'sdl'
5
+
6
+ module DXRubySDL
7
+ %w[
8
+ DIK_0
9
+ DIK_1
10
+ DIK_2
11
+ DIK_3
12
+ DIK_4
13
+ DIK_5
14
+ DIK_6
15
+ DIK_7
16
+ DIK_8
17
+ DIK_9
18
+ DIK_A
19
+ DIK_ABNT_C1
20
+ DIK_ABNT_C2
21
+ DIK_ADD
22
+ DIK_APOSTROPHE
23
+ DIK_APPS
24
+ DIK_AT
25
+ DIK_AX
26
+ DIK_B
27
+ DIK_BACK
28
+ DIK_BACKSLASH
29
+ DIK_C
30
+ DIK_CALCULATOR
31
+ DIK_CAPITAL
32
+ DIK_COLON
33
+ DIK_COMMA
34
+ DIK_CONVERT
35
+ DIK_D
36
+ DIK_DECIMAL
37
+ DIK_DELETE
38
+ DIK_DIVIDE
39
+ DIK_DOWN
40
+ DIK_E
41
+ DIK_END
42
+ DIK_EQUALS
43
+ DIK_ESCAPE
44
+ DIK_F
45
+ DIK_F1
46
+ DIK_F2
47
+ DIK_F3
48
+ DIK_F4
49
+ DIK_F5
50
+ DIK_F6
51
+ DIK_F7
52
+ DIK_F8
53
+ DIK_F9
54
+ DIK_F10
55
+ DIK_F11
56
+ DIK_F12
57
+ DIK_F13
58
+ DIK_F14
59
+ DIK_F15
60
+ DIK_G
61
+ DIK_GRAVE
62
+ DIK_H
63
+ DIK_HOME
64
+ DIK_I
65
+ DIK_INSERT
66
+ DIK_J
67
+ DIK_K
68
+ DIK_KANA
69
+ DIK_KANJI
70
+ DIK_L
71
+ DIK_LBRACKET
72
+ DIK_LCONTROL
73
+ DIK_LEFT
74
+ DIK_LMENU
75
+ DIK_LSHIFT
76
+ DIK_LWIN
77
+ DIK_M
78
+ DIK_MAIL
79
+ DIK_MEDIASELECT
80
+ DIK_MEDIASTOP
81
+ DIK_MINUS
82
+ DIK_MULTIPLY
83
+ DIK_MUTE
84
+ DIK_MYCOMPUTER
85
+ DIK_N
86
+ DIK_NEXT
87
+ DIK_NEXTTRACK
88
+ DIK_NOCONVERT
89
+ DIK_NUMLOCK
90
+ DIK_NUMPAD0
91
+ DIK_NUMPAD1
92
+ DIK_NUMPAD2
93
+ DIK_NUMPAD3
94
+ DIK_NUMPAD4
95
+ DIK_NUMPAD5
96
+ DIK_NUMPAD6
97
+ DIK_NUMPAD7
98
+ DIK_NUMPAD8
99
+ DIK_NUMPAD9
100
+ DIK_NUMPADCOMMA
101
+ DIK_NUMPADENTER
102
+ DIK_NUMPADEQUALS
103
+ DIK_O
104
+ DIK_OEM_102
105
+ DIK_P
106
+ DIK_PAUSE
107
+ DIK_PERIOD
108
+ DIK_PLAYPAUSE
109
+ DIK_POWER
110
+ DIK_PREVTRACK
111
+ DIK_PRIOR
112
+ DIK_Q
113
+ DIK_R
114
+ DIK_RBRACKET
115
+ DIK_RCONTROL
116
+ DIK_RETURN
117
+ DIK_RIGHT
118
+ DIK_RMENU
119
+ DIK_RSHIFT
120
+ DIK_RWIN
121
+ DIK_S
122
+ DIK_SCROLL
123
+ DIK_SEMICOLON
124
+ DIK_SLASH
125
+ DIK_SLEEP
126
+ DIK_SPACE
127
+ DIK_STOP
128
+ DIK_SUBTRACT
129
+ DIK_SYSRQ
130
+ DIK_T
131
+ DIK_TAB
132
+ DIK_U
133
+ DIK_UNDERLINE
134
+ DIK_UNLABELED
135
+ DIK_UP
136
+ DIK_V
137
+ DIK_VOLUMEDOWN
138
+ DIK_VOLUMEUP
139
+ DIK_W
140
+ DIK_WAKE
141
+ DIK_WEBBACK
142
+ DIK_WEBFAVORITES
143
+ DIK_WEBFORWARD
144
+ DIK_WEBHOME
145
+ DIK_WEBREFRESH
146
+ DIK_WEBSEARCH
147
+ DIK_WEBSTOP
148
+ DIK_X
149
+ DIK_Y
150
+ DIK_YEN
151
+ DIK_Z
152
+ ].each.with_index do |dik_name, i|
153
+ const_set(dik_name.sub(/\ADI/, '').to_sym, i)
154
+ end
155
+
156
+ %w[
157
+ P_LEFT
158
+ P_RIGHT
159
+ P_UP
160
+ P_DOWN
161
+ P_BUTTON0
162
+ P_BUTTON1
163
+ P_BUTTON2
164
+ P_BUTTON3
165
+ P_BUTTON4
166
+ P_BUTTON5
167
+ P_BUTTON6
168
+ P_BUTTON7
169
+ P_BUTTON8
170
+ P_BUTTON9
171
+ P_BUTTON10
172
+ P_BUTTON11
173
+ P_BUTTON12
174
+ P_BUTTON13
175
+ P_BUTTON14
176
+ P_BUTTON15
177
+ P_D_LEFT
178
+ P_D_RIGHT
179
+ P_D_UP
180
+ P_D_DOWN
181
+ P_R_LEFT
182
+ P_R_RIGHT
183
+ P_R_UP
184
+ P_R_DOWN
185
+ ].each.with_index do |name, i|
186
+ const_set(name.to_sym, i)
187
+ end
188
+
189
+ %w[
190
+ P_L_LEFT
191
+ P_L_RIGHT
192
+ P_L_UP
193
+ P_L_DOWN
194
+ ].each.with_index do |name, i|
195
+ const_set(name.to_sym, i)
196
+ end
197
+
198
+ %w[
199
+ M_LBUTTON
200
+ M_RBUTTON
201
+ M_MBUTTON
202
+ ].each.with_index do |name, i|
203
+ const_set(name.to_sym, i)
204
+ end
205
+ end
206
+
5
207
  require 'dxruby_sdl/window'
6
208
  require 'dxruby_sdl/color'
7
209
  require 'dxruby_sdl/image'
8
210
  require 'dxruby_sdl/font'
9
-
10
- module DXRubySDL
11
- end
211
+ require 'dxruby_sdl/input'
212
+ require 'dxruby_sdl/sound'
12
213
 
13
214
  SDL.init(SDL::INIT_EVERYTHING)
data/samples/bgm.mid ADDED
Binary file
data/samples/data.png ADDED
Binary file
data/samples/sound.wav ADDED
Binary file
@@ -0,0 +1,7 @@
1
+ # -*- coding: utf-8 -*-
2
+ # http://dxruby.sourceforge.jp/DXRubyReference/200953121821750.htm
3
+ require 'dxruby'
4
+
5
+ Window.loop do
6
+ # ここにゲームの処理を書く
7
+ end
@@ -0,0 +1,9 @@
1
+ # -*- coding: utf-8 -*-
2
+ # http://dxruby.sourceforge.jp/DXRubyReference/2009531213147953.htm
3
+ require 'dxruby'
4
+
5
+ image = Image.load('data.png') # data.pngを読み込む
6
+
7
+ Window.loop do
8
+ Window.draw(100, 100, image) # data.pngを描画する
9
+ end
@@ -0,0 +1,12 @@
1
+ # -*- coding: utf-8 -*-
2
+ # http://dxruby.sourceforge.jp/DXRubyReference/2009531224032156.htm
3
+ require 'dxruby'
4
+
5
+ image = Image.loadToArray('data.png', 2, 2) # data.pngを読み込んで、横2つ、縦2つに分割する
6
+
7
+ Window.loop do
8
+ Window.draw(100, 100, image[0]) # data.pngの左上を描画する
9
+ Window.draw(150, 100, image[1]) # data.pngの右上を描画する
10
+ Window.draw(100, 150, image[2]) # data.pngの左下を描画する
11
+ Window.draw(150, 150, image[3]) # data.pngの右下を描画する
12
+ end
@@ -0,0 +1,10 @@
1
+ # -*- coding: utf-8 -*-
2
+ # http://dxruby.sourceforge.jp/DXRubyReference/2009531224931296.htm
3
+ require 'dxruby'
4
+
5
+ baseimage = Image.load('data.png') # data.pngを読み込む
6
+ image = baseimage.slice(0, 0, 20, 20) # data.pngの(0, 0)から20*20pixel分だけ画像を切り出す
7
+
8
+ Window.loop do
9
+ Window.draw(100, 100, image) # data.pngの左上20pixel正方形を描画する
10
+ end
@@ -0,0 +1,14 @@
1
+ # -*- coding: utf-8 -*-
2
+ # http://dxruby.sourceforge.jp/DXRubyReference/200953122575875.htm
3
+ require 'dxruby'
4
+
5
+ image = Image.load('data.png') # data.pngを読み込む
6
+ x = 0
7
+ y = 0
8
+
9
+ Window.loop do
10
+ x = x + Input.x # x座標の更新
11
+ y = y + Input.y # y座標の更新
12
+
13
+ Window.draw(x, y, image) # data.pngを描画する
14
+ end