Changeset 28067 for lang/ruby/starframe
- Timestamp:
- 01/07/09 02:18:52 (4 years ago)
- Location:
- lang/ruby/starframe
- Files:
-
- 5 modified
-
lib/starframe/sprite.rb (modified) (4 diffs)
-
samples/15puzzle/main.rb (modified) (2 diffs)
-
samples/stg/main.rb (modified) (6 diffs)
-
test/starframe/sprite/test_collidable.rb (modified) (4 diffs)
-
test/starframe/test_sprite.rb (modified) (15 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/ruby/starframe/lib/starframe/sprite.rb
r28058 r28067 3 3 require "starframe/initializable" 4 4 require "starframe/updatable" 5 require "starframe/renderable" 5 6 6 7 module StarFrame … … 83 84 include Initializable 84 85 include Updatable 86 include Renderable 85 87 86 88 #:stopdoc: … … 111 113 # 112 114 # initializeを参照。 113 def self.new x = 0, y = 0, options = {}, &block115 def self.new screen = nil, x = 0, y = 0, options = {}, &block 114 116 return super unless block 115 117 # Ruby 1.8の場合、inheritの呼ばれる順番がおかしいためclass_evalで後からブロックを実行している。 116 118 klass = Class.new(self) 117 119 klass.class_eval(&block) 118 klass.new x, y, options120 klass.new screen, x, y, options 119 121 end 120 122 121 123 # 初期化し、initイベントをコールする。 122 def initialize x = 0, y = 0, options = {} #:notnew:124 def initialize screen = nil, x = 0, y = 0, options = {} #:notnew: 123 125 initialize_texture 124 126 127 @screen = screen 125 128 @x, @y = x, y 126 129 @movement_x, @movement_y = 0, 0 … … 299 302 end 300 303 304 # 描画する。 305 def render 306 super 307 render_to @screen 308 end 309 301 310 private 302 311 def initialize_texture #:nodoc: -
lang/ruby/starframe/samples/15puzzle/main.rb
r28058 r28067 64 64 height.times do |y| 65 65 width.times do |x| 66 @parts << self[x, y] = PartSprite.new( 0, 0, :px => x, :py => y, :width => @src_width, :height => @src_height)66 @parts << self[x, y] = PartSprite.new(self, 0, 0, :px => x, :py => y, :width => @src_width, :height => @src_height) 67 67 end 68 68 end … … 101 101 102 102 render do 103 @parts.render _to @screen103 @parts.render 104 104 end 105 105 -
lang/ruby/starframe/samples/stg/main.rb
r27903 r28067 25 25 # 爆煙を追加して消滅 26 26 def crash 27 @smoke_collection << Smoke.new(@ x, @y)27 @smoke_collection << Smoke.new(@screen, @x, @y) 28 28 StarRuby::Audio.play_se @crash_se 29 29 @scene.score += @score … … 47 47 animation :shot, :loop => false, :start => false do 48 48 frames 3, 2 do 49 shot Shot::Player.new(@ x-8, @y-16)50 shot Shot::Player.new(@ x+8, @y-16)49 shot Shot::Player.new(@screen, @x-8, @y-16) 50 shot Shot::Player.new(@screen, @x+8, @y-16) 51 51 end 52 52 end … … 171 171 # 自機狙い弾 172 172 def fire_to_player speed = 3, add_angle = 0 173 enemy_shot = Shot::Enemy.new( shot_x, shot_y)173 enemy_shot = Shot::Enemy.new(@screen, shot_x, shot_y) 174 174 shot_angle = to_target_angle + add_angle 175 175 enemy_shot.movement_x = Math.cos(shot_angle) * speed … … 320 320 animation :enemy do 321 321 frame 30 do 322 @enemies << Enemy::Disc.new( 16+rand(320-32), -64, @enemy_options)322 @enemies << Enemy::Disc.new(@screen, 16+rand(320-32), -64, @enemy_options) 323 323 end 324 324 end … … 332 332 @enemy_shots = StarFrame::Sprite::Collection.new 333 333 334 @player = Player.new( -64, -64,:scene => self, :shot_collection => @shots, :smoke_collection => @smokes)335 @enemy_options = {:target => @player, :scene => self, :shot_collection => @enemy_shots, :smoke_collection => @smokes}334 @player = Player.new(@screen, -64, -64, :scene => self, :shot_collection => @shots, :smoke_collection => @smokes) 335 @enemy_options = {:target => @player, :scene => self, :shot_collection => @enemy_shots, :smoke_collection => @smokes} 336 336 337 337 @score = 0 … … 439 439 render_texture @background, 0, @bg_scroll-544 440 440 441 @enemies.render _to @screen442 @player.render _to @screen443 444 @shots.render _to @screen445 @enemy_shots.render _to @screen446 @smokes.render _to @screen441 @enemies.render 442 @player.render 443 444 @shots.render 445 @enemy_shots.render 446 @smokes.render 447 447 448 448 render_number 96, 8, @score -
lang/ruby/starframe/test/starframe/sprite/test_collidable.rb
r28001 r28067 60 60 61 61 def test_initialize 62 sprite = CollisionSprite.new( 10, 10)62 sprite = CollisionSprite.new(nil, 10, 10) 63 63 assert_equal 1, sprite.collisions.size 64 64 assert_equal true, sprite.collisions.key?(:test) … … 68 68 69 69 def test_collision_reader 70 sprite = CollisionSprite.new( 10, 10)70 sprite = CollisionSprite.new(nil, 10, 10) 71 71 assert_not_nil sprite.collision(:test) 72 72 assert_equal sprite.collisions[:test], sprite.collision(:test) … … 78 78 end 79 79 def assert_collide_sprite_and_sprite expected, collide = false, &block 80 sprite1 = CollisionSprite.new( 10, 10)81 sprite2 = CollisionSprite.new( (expected ? 10 : 11), 10)80 sprite1 = CollisionSprite.new(nil, 10, 10) 81 sprite2 = CollisionSprite.new(nil, (expected ? 10 : 11), 10) 82 82 83 83 assert_collide sprite1, sprite2, expected, &block … … 136 136 def assert_collide_collection_and_sprite collide = false, &block 137 137 collection = StarFrame::Sprite::Collection.new 138 collection << csprite1 = CollisionSprite.new( 10, 10)139 collection << csprite2 = CollisionSprite.new( 10, 10)140 collection << csprite3 = CollisionSprite.new( 11, 10)141 sprite = CollisionSprite.new( 10, 10)138 collection << csprite1 = CollisionSprite.new(nil, 10, 10) 139 collection << csprite2 = CollisionSprite.new(nil, 10, 10) 140 collection << csprite3 = CollisionSprite.new(nil, 11, 10) 141 sprite = CollisionSprite.new(nil, 10, 10) 142 142 143 143 assert_collide collection, sprite, 2, &block -
lang/ruby/starframe/test/starframe/test_sprite.rb
r27987 r28067 45 45 46 46 def setup 47 @sprite = TestSprite.new48 49 47 @screen = StarRuby::Texture.new(100, 100) 48 @sprite = TestSprite.new(@screen) 50 49 end 51 50 … … 133 132 sprite = TestSprite.new 134 133 assert_kind_of TestSprite, sprite 134 assert_nil sprite.screen 135 135 assert_equal 0, sprite.x 136 136 assert_equal 0, sprite.y … … 139 139 end 140 140 def test_initialize_with_position 141 sprite = TestSprite.new( 1, 2)141 sprite = TestSprite.new(nil, 1, 2) 142 142 assert_equal 1, sprite.x 143 143 assert_equal 2, sprite.y … … 146 146 end 147 147 def test_initialize_with_options 148 sprite = TestSprite.new( 1, 2, :angle => 3, :alpha => 4)148 sprite = TestSprite.new(nil, 1, 2, :angle => 3, :alpha => 4) 149 149 assert_equal 1, sprite.x 150 150 assert_equal 2, sprite.y … … 153 153 end 154 154 def test_initialize_with_block 155 sprite = TestSprite.new( 1, 2) do155 sprite = TestSprite.new(nil, 1, 2) do 156 156 @texture = StarRuby::Texture.load("test2") 157 157 end … … 163 163 164 164 def test_position_reader 165 sprite = MovableSprite.new( 1, 2)165 sprite = MovableSprite.new(nil, 1, 2) 166 166 assert_kind_of Array, sprite.position 167 167 assert_equal [1, 2], sprite.position … … 170 170 end 171 171 def test_position_writer 172 sprite = MovableSprite.new( 1, 2)172 sprite = MovableSprite.new(nil, 1, 2) 173 173 sprite.position = 2, 3 174 174 assert_equal 2, sprite.x … … 184 184 end 185 185 def test_movement_writer 186 sprite = MovableSprite.new( 1, 2)186 sprite = MovableSprite.new(nil, 1, 2) 187 187 sprite.movement = 20, 22 188 188 assert_equal 20, sprite.movement_x … … 323 323 end 324 324 325 def test_render 326 @sprite.x = 0 327 @sprite.y = 1 328 @sprite.render 329 330 assert_equal :render_texture, @screen.last_method 331 assert_equal @sprite.instance_variable_get(:@texture), @screen.last_method_args[0] 332 assert_equal 0, @screen.last_method_args[1] 333 assert_equal 1, @screen.last_method_args[2] 334 assert_equal 0, @screen.last_method_args[3].size 335 assert_equal({}, @screen.last_method_args[3]) 336 end 337 325 338 def test_render_to 326 339 @sprite.x = 0 … … 379 392 380 393 def test_call 381 sprite = MovableSprite.new( 1, 2)394 sprite = MovableSprite.new(nil, 1, 2) 382 395 sprite.call 383 396 assert_equal [11, 14], sprite.position … … 386 399 end 387 400 def test_move 388 sprite = MovableSprite.new( 1, 2)401 sprite = MovableSprite.new(nil, 1, 2) 389 402 sprite.move 390 403 assert_equal [11, 14], sprite.position … … 393 406 end 394 407 def test_move_minute 395 sprite = MovableSprite.new( 1, 2)408 sprite = MovableSprite.new(nil, 1, 2) 396 409 sprite.move_minute 0.6 397 410 assert_equal [7, 9.2], sprite.position … … 400 413 end 401 414 def test_futures 402 sprite = MovableSprite.new( 1, 2)415 sprite = MovableSprite.new(nil, 1, 2) 403 416 assert_equal [7, 9.2], sprite.future_position(0.6) 404 417 assert_equal 8.4, sprite.future_angle(0.6) … … 407 420 408 421 def test_squared_distance 409 sprite1 = TestSprite.new( 0, 0)410 sprite2 = TestSprite.new( 3, 4)422 sprite1 = TestSprite.new(nil, 0, 0) 423 sprite2 = TestSprite.new(nil, 3, 4) 411 424 assert_equal 25, sprite1.squared_distance(sprite2) 412 425 413 sprite1 = TestSprite.new( 0, 0)414 sprite2 = TestSprite.new( 2, 2)426 sprite1 = TestSprite.new(nil, 0, 0) 427 sprite2 = TestSprite.new(nil, 2, 2) 415 428 assert_equal 8, sprite1.squared_distance(sprite2) 416 429 end 417 430 def test_distance 418 sprite1 = TestSprite.new( 0, 0)419 sprite2 = TestSprite.new( 3, 4)431 sprite1 = TestSprite.new(nil, 0, 0) 432 sprite2 = TestSprite.new(nil, 3, 4) 420 433 assert_equal 5, sprite1.distance(sprite2) 421 434 422 sprite1 = TestSprite.new( 0, 0)423 sprite2 = TestSprite.new( 2, 2)435 sprite1 = TestSprite.new(nil, 0, 0) 436 sprite2 = TestSprite.new(nil, 2, 2) 424 437 assert_in_delta 2.828, 0.00, sprite1.distance(sprite2) 425 438 end … … 427 440 def bench 428 441 require "benchmark" 429 sprite1 = TestSprite.new( 0, 0)430 sprite2 = TestSprite.new( 2, 2)442 sprite1 = TestSprite.new(nil, 0, 0) 443 sprite2 = TestSprite.new(nil, 2, 2) 431 444 Benchmark.bmbm do |bm| 432 445 bm.report{ 10000.times{ sprite1.distance(sprite2) } }
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)