minigl 2.2.2 → 2.2.3
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 +4 -4
 - data/LICENSE +19 -19
 - data/README.md +35 -36
 - data/Rakefile +11 -11
 - data/lib/minigl.rb +4 -4
 - data/lib/minigl/forms.rb +1485 -1485
 - data/lib/minigl/game_object.rb +379 -379
 - data/lib/minigl/global.rb +729 -729
 - data/lib/minigl/map.rb +256 -256
 - data/lib/minigl/movement.rb +585 -585
 - data/lib/minigl/text.rb +190 -188
 - data/test/data/img/barbg.svg +73 -73
 - data/test/data/img/barfg.svg +106 -106
 - data/test/data/img/square.svg +66 -66
 - data/test/data/img/square2.svg +66 -66
 - data/test/data/img/square3.svg +76 -76
 - data/test/data/img/tile1.svg +66 -66
 - data/test/data/img/tile2.svg +66 -66
 - data/test/game.rb +150 -150
 - data/test/game_object_tests.rb +108 -108
 - data/test/iso_game.rb +39 -39
 - data/test/map_tests.rb +57 -57
 - data/test/mov_game.rb +76 -76
 - data/test/movement_tests.rb +86 -86
 - data/test/res_tests.rb +45 -45
 - data/test/vector_tests.rb +55 -55
 - metadata +24 -24
 
    
        data/test/game_object_tests.rb
    CHANGED
    
    | 
         @@ -1,108 +1,108 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'test/unit'
         
     | 
| 
       2 
     | 
    
         
            -
            require_relative '../lib/minigl'
         
     | 
| 
       3 
     | 
    
         
            -
            include MiniGL
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            class SpriteTest < Test::Unit::TestCase
         
     | 
| 
       6 
     | 
    
         
            -
              def setup
         
     | 
| 
       7 
     | 
    
         
            -
                @window = GameWindow.new 800, 600, false
         
     | 
| 
       8 
     | 
    
         
            -
                Res.prefix = File.expand_path(File.dirname(__FILE__)) + '/data'
         
     | 
| 
       9 
     | 
    
         
            -
              end
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
              def test_sprite_position
         
     | 
| 
       12 
     | 
    
         
            -
                s = Sprite.new 10, 20, :image
         
     | 
| 
       13 
     | 
    
         
            -
                assert_equal 10, s.x
         
     | 
| 
       14 
     | 
    
         
            -
                assert_equal 20, s.y
         
     | 
| 
       15 
     | 
    
         
            -
                s = Sprite.new -100, 200, :image
         
     | 
| 
       16 
     | 
    
         
            -
                assert_equal -100, s.x
         
     | 
| 
       17 
     | 
    
         
            -
                assert_equal 200, s.y
         
     | 
| 
       18 
     | 
    
         
            -
              end
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
              def test_sprite_animation
         
     | 
| 
       21 
     | 
    
         
            -
                s = Sprite.new 10, 20, :image, 3, 1
         
     | 
| 
       22 
     | 
    
         
            -
                indices = [0, 1, 2]
         
     | 
| 
       23 
     | 
    
         
            -
                interval = 1
         
     | 
| 
       24 
     | 
    
         
            -
                3.times { s.animate indices, interval }
         
     | 
| 
       25 
     | 
    
         
            -
                assert_equal 0, s.img_index
         
     | 
| 
       26 
     | 
    
         
            -
                5.times { s.animate indices, interval }
         
     | 
| 
       27 
     | 
    
         
            -
                assert_equal 2, s.img_index
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
                10.times { s.animate_once indices, interval }
         
     | 
| 
       30 
     | 
    
         
            -
                assert_equal 2, s.img_index
         
     | 
| 
       31 
     | 
    
         
            -
                s.animate_once indices, interval
         
     | 
| 
       32 
     | 
    
         
            -
                assert_equal 2, s.img_index
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
                indices2 = [0, 1, 2, 3]
         
     | 
| 
       35 
     | 
    
         
            -
                s.animate_once indices2, 1
         
     | 
| 
       36 
     | 
    
         
            -
                assert_equal 0, s.img_index
         
     | 
| 
       37 
     | 
    
         
            -
                10.times { s.animate_once indices2, interval }
         
     | 
| 
       38 
     | 
    
         
            -
                assert_equal 3, s.img_index
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
                s.set_animation 0
         
     | 
| 
       41 
     | 
    
         
            -
                2.times { s.animate_once indices2, 1 }
         
     | 
| 
       42 
     | 
    
         
            -
                assert_equal 1, s.img_index
         
     | 
| 
       43 
     | 
    
         
            -
              end
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
              def test_sprite_visibility
         
     | 
| 
       46 
     | 
    
         
            -
                # m = Map.new(1, 1, 800, 600)
         
     | 
| 
       47 
     | 
    
         
            -
                s = Sprite.new 10, 20, :image, 3, 1 # the sprite will be 1 x 1 pixel
         
     | 
| 
       48 
     | 
    
         
            -
                assert s.visible?
         
     | 
| 
       49 
     | 
    
         
            -
                s.x = 800
         
     | 
| 
       50 
     | 
    
         
            -
                assert(!(s.visible?))
         
     | 
| 
       51 
     | 
    
         
            -
                s.x = -1
         
     | 
| 
       52 
     | 
    
         
            -
                assert(!(s.visible?))
         
     | 
| 
       53 
     | 
    
         
            -
                s.x = 0
         
     | 
| 
       54 
     | 
    
         
            -
                assert s.visible?
         
     | 
| 
       55 
     | 
    
         
            -
                s.y = 600
         
     | 
| 
       56 
     | 
    
         
            -
                assert(!(s.visible?))
         
     | 
| 
       57 
     | 
    
         
            -
              end
         
     | 
| 
       58 
     | 
    
         
            -
            end
         
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
            class GameObjectTest < Test::Unit::TestCase
         
     | 
| 
       61 
     | 
    
         
            -
              def setup
         
     | 
| 
       62 
     | 
    
         
            -
                @window = GameWindow.new 800, 600, false
         
     | 
| 
       63 
     | 
    
         
            -
                Res.prefix = File.expand_path(File.dirname(__FILE__)) + '/data'
         
     | 
| 
       64 
     | 
    
         
            -
              end
         
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
              def test_game_object_attributes
         
     | 
| 
       67 
     | 
    
         
            -
                o = GameObject.new 10, 20, 3, 1, :image
         
     | 
| 
       68 
     | 
    
         
            -
                assert_equal 10, o.x
         
     | 
| 
       69 
     | 
    
         
            -
                assert_equal 20, o.y
         
     | 
| 
       70 
     | 
    
         
            -
                assert_equal 3, o.w
         
     | 
| 
       71 
     | 
    
         
            -
                assert_equal 1, o.h
         
     | 
| 
       72 
     | 
    
         
            -
                assert_equal 0, o.speed.x
         
     | 
| 
       73 
     | 
    
         
            -
                assert_equal 0, o.speed.y
         
     | 
| 
       74 
     | 
    
         
            -
                assert_equal 0, o.stored_forces.x
         
     | 
| 
       75 
     | 
    
         
            -
                assert_equal 0, o.stored_forces.y
         
     | 
| 
       76 
     | 
    
         
            -
              end
         
     | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
       78 
     | 
    
         
            -
              def test_game_object_animation
         
     | 
| 
       79 
     | 
    
         
            -
                o = GameObject.new 10, 20, 3, 1, :image, nil, 3, 1
         
     | 
| 
       80 
     | 
    
         
            -
                indices = [0, 1, 2]
         
     | 
| 
       81 
     | 
    
         
            -
                interval = 10
         
     | 
| 
       82 
     | 
    
         
            -
                5.times { o.animate indices, interval }
         
     | 
| 
       83 
     | 
    
         
            -
                assert_equal 0, o.img_index
         
     | 
| 
       84 
     | 
    
         
            -
                o.set_animation 0
         
     | 
| 
       85 
     | 
    
         
            -
                5.times { o.animate indices, interval }
         
     | 
| 
       86 
     | 
    
         
            -
                assert_equal 0, o.img_index
         
     | 
| 
       87 
     | 
    
         
            -
                5.times { o.animate indices, interval }
         
     | 
| 
       88 
     | 
    
         
            -
                assert_equal 1, o.img_index
         
     | 
| 
       89 
     | 
    
         
            -
              end
         
     | 
| 
       90 
     | 
    
         
            -
             
     | 
| 
       91 
     | 
    
         
            -
              def test_game_object_visibility
         
     | 
| 
       92 
     | 
    
         
            -
                # m = Map.new(1, 1, 800, 600)
         
     | 
| 
       93 
     | 
    
         
            -
                o = GameObject.new 10, 20, 30, 30, :square, Vector.new(-10, -10)
         
     | 
| 
       94 
     | 
    
         
            -
                assert o.visible?
         
     | 
| 
       95 
     | 
    
         
            -
                o.x = 800
         
     | 
| 
       96 
     | 
    
         
            -
                assert o.visible?
         
     | 
| 
       97 
     | 
    
         
            -
                o.x = 810
         
     | 
| 
       98 
     | 
    
         
            -
                assert(!(o.visible?))
         
     | 
| 
       99 
     | 
    
         
            -
                o.x = -30
         
     | 
| 
       100 
     | 
    
         
            -
                assert o.visible?
         
     | 
| 
       101 
     | 
    
         
            -
                o.y = -50
         
     | 
| 
       102 
     | 
    
         
            -
                assert(!(o.visible?))
         
     | 
| 
       103 
     | 
    
         
            -
                o.x = 0; o.y = -30
         
     | 
| 
       104 
     | 
    
         
            -
                assert o.visible?
         
     | 
| 
       105 
     | 
    
         
            -
                o.y = 610
         
     | 
| 
       106 
     | 
    
         
            -
                assert(!(o.visible?))
         
     | 
| 
       107 
     | 
    
         
            -
              end
         
     | 
| 
       108 
     | 
    
         
            -
            end
         
     | 
| 
      
 1 
     | 
    
         
            +
            require 'test/unit'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require_relative '../lib/minigl'
         
     | 
| 
      
 3 
     | 
    
         
            +
            include MiniGL
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            class SpriteTest < Test::Unit::TestCase
         
     | 
| 
      
 6 
     | 
    
         
            +
              def setup
         
     | 
| 
      
 7 
     | 
    
         
            +
                @window = GameWindow.new 800, 600, false
         
     | 
| 
      
 8 
     | 
    
         
            +
                Res.prefix = File.expand_path(File.dirname(__FILE__)) + '/data'
         
     | 
| 
      
 9 
     | 
    
         
            +
              end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              def test_sprite_position
         
     | 
| 
      
 12 
     | 
    
         
            +
                s = Sprite.new 10, 20, :image
         
     | 
| 
      
 13 
     | 
    
         
            +
                assert_equal 10, s.x
         
     | 
| 
      
 14 
     | 
    
         
            +
                assert_equal 20, s.y
         
     | 
| 
      
 15 
     | 
    
         
            +
                s = Sprite.new -100, 200, :image
         
     | 
| 
      
 16 
     | 
    
         
            +
                assert_equal -100, s.x
         
     | 
| 
      
 17 
     | 
    
         
            +
                assert_equal 200, s.y
         
     | 
| 
      
 18 
     | 
    
         
            +
              end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              def test_sprite_animation
         
     | 
| 
      
 21 
     | 
    
         
            +
                s = Sprite.new 10, 20, :image, 3, 1
         
     | 
| 
      
 22 
     | 
    
         
            +
                indices = [0, 1, 2]
         
     | 
| 
      
 23 
     | 
    
         
            +
                interval = 1
         
     | 
| 
      
 24 
     | 
    
         
            +
                3.times { s.animate indices, interval }
         
     | 
| 
      
 25 
     | 
    
         
            +
                assert_equal 0, s.img_index
         
     | 
| 
      
 26 
     | 
    
         
            +
                5.times { s.animate indices, interval }
         
     | 
| 
      
 27 
     | 
    
         
            +
                assert_equal 2, s.img_index
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                10.times { s.animate_once indices, interval }
         
     | 
| 
      
 30 
     | 
    
         
            +
                assert_equal 2, s.img_index
         
     | 
| 
      
 31 
     | 
    
         
            +
                s.animate_once indices, interval
         
     | 
| 
      
 32 
     | 
    
         
            +
                assert_equal 2, s.img_index
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                indices2 = [0, 1, 2, 3]
         
     | 
| 
      
 35 
     | 
    
         
            +
                s.animate_once indices2, 1
         
     | 
| 
      
 36 
     | 
    
         
            +
                assert_equal 0, s.img_index
         
     | 
| 
      
 37 
     | 
    
         
            +
                10.times { s.animate_once indices2, interval }
         
     | 
| 
      
 38 
     | 
    
         
            +
                assert_equal 3, s.img_index
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                s.set_animation 0
         
     | 
| 
      
 41 
     | 
    
         
            +
                2.times { s.animate_once indices2, 1 }
         
     | 
| 
      
 42 
     | 
    
         
            +
                assert_equal 1, s.img_index
         
     | 
| 
      
 43 
     | 
    
         
            +
              end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
              def test_sprite_visibility
         
     | 
| 
      
 46 
     | 
    
         
            +
                # m = Map.new(1, 1, 800, 600)
         
     | 
| 
      
 47 
     | 
    
         
            +
                s = Sprite.new 10, 20, :image, 3, 1 # the sprite will be 1 x 1 pixel
         
     | 
| 
      
 48 
     | 
    
         
            +
                assert s.visible?
         
     | 
| 
      
 49 
     | 
    
         
            +
                s.x = 800
         
     | 
| 
      
 50 
     | 
    
         
            +
                assert(!(s.visible?))
         
     | 
| 
      
 51 
     | 
    
         
            +
                s.x = -1
         
     | 
| 
      
 52 
     | 
    
         
            +
                assert(!(s.visible?))
         
     | 
| 
      
 53 
     | 
    
         
            +
                s.x = 0
         
     | 
| 
      
 54 
     | 
    
         
            +
                assert s.visible?
         
     | 
| 
      
 55 
     | 
    
         
            +
                s.y = 600
         
     | 
| 
      
 56 
     | 
    
         
            +
                assert(!(s.visible?))
         
     | 
| 
      
 57 
     | 
    
         
            +
              end
         
     | 
| 
      
 58 
     | 
    
         
            +
            end
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
            class GameObjectTest < Test::Unit::TestCase
         
     | 
| 
      
 61 
     | 
    
         
            +
              def setup
         
     | 
| 
      
 62 
     | 
    
         
            +
                @window = GameWindow.new 800, 600, false
         
     | 
| 
      
 63 
     | 
    
         
            +
                Res.prefix = File.expand_path(File.dirname(__FILE__)) + '/data'
         
     | 
| 
      
 64 
     | 
    
         
            +
              end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
              def test_game_object_attributes
         
     | 
| 
      
 67 
     | 
    
         
            +
                o = GameObject.new 10, 20, 3, 1, :image
         
     | 
| 
      
 68 
     | 
    
         
            +
                assert_equal 10, o.x
         
     | 
| 
      
 69 
     | 
    
         
            +
                assert_equal 20, o.y
         
     | 
| 
      
 70 
     | 
    
         
            +
                assert_equal 3, o.w
         
     | 
| 
      
 71 
     | 
    
         
            +
                assert_equal 1, o.h
         
     | 
| 
      
 72 
     | 
    
         
            +
                assert_equal 0, o.speed.x
         
     | 
| 
      
 73 
     | 
    
         
            +
                assert_equal 0, o.speed.y
         
     | 
| 
      
 74 
     | 
    
         
            +
                assert_equal 0, o.stored_forces.x
         
     | 
| 
      
 75 
     | 
    
         
            +
                assert_equal 0, o.stored_forces.y
         
     | 
| 
      
 76 
     | 
    
         
            +
              end
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
              def test_game_object_animation
         
     | 
| 
      
 79 
     | 
    
         
            +
                o = GameObject.new 10, 20, 3, 1, :image, nil, 3, 1
         
     | 
| 
      
 80 
     | 
    
         
            +
                indices = [0, 1, 2]
         
     | 
| 
      
 81 
     | 
    
         
            +
                interval = 10
         
     | 
| 
      
 82 
     | 
    
         
            +
                5.times { o.animate indices, interval }
         
     | 
| 
      
 83 
     | 
    
         
            +
                assert_equal 0, o.img_index
         
     | 
| 
      
 84 
     | 
    
         
            +
                o.set_animation 0
         
     | 
| 
      
 85 
     | 
    
         
            +
                5.times { o.animate indices, interval }
         
     | 
| 
      
 86 
     | 
    
         
            +
                assert_equal 0, o.img_index
         
     | 
| 
      
 87 
     | 
    
         
            +
                5.times { o.animate indices, interval }
         
     | 
| 
      
 88 
     | 
    
         
            +
                assert_equal 1, o.img_index
         
     | 
| 
      
 89 
     | 
    
         
            +
              end
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
              def test_game_object_visibility
         
     | 
| 
      
 92 
     | 
    
         
            +
                # m = Map.new(1, 1, 800, 600)
         
     | 
| 
      
 93 
     | 
    
         
            +
                o = GameObject.new 10, 20, 30, 30, :square, Vector.new(-10, -10)
         
     | 
| 
      
 94 
     | 
    
         
            +
                assert o.visible?
         
     | 
| 
      
 95 
     | 
    
         
            +
                o.x = 800
         
     | 
| 
      
 96 
     | 
    
         
            +
                assert o.visible?
         
     | 
| 
      
 97 
     | 
    
         
            +
                o.x = 810
         
     | 
| 
      
 98 
     | 
    
         
            +
                assert(!(o.visible?))
         
     | 
| 
      
 99 
     | 
    
         
            +
                o.x = -30
         
     | 
| 
      
 100 
     | 
    
         
            +
                assert o.visible?
         
     | 
| 
      
 101 
     | 
    
         
            +
                o.y = -50
         
     | 
| 
      
 102 
     | 
    
         
            +
                assert(!(o.visible?))
         
     | 
| 
      
 103 
     | 
    
         
            +
                o.x = 0; o.y = -30
         
     | 
| 
      
 104 
     | 
    
         
            +
                assert o.visible?
         
     | 
| 
      
 105 
     | 
    
         
            +
                o.y = 610
         
     | 
| 
      
 106 
     | 
    
         
            +
                assert(!(o.visible?))
         
     | 
| 
      
 107 
     | 
    
         
            +
              end
         
     | 
| 
      
 108 
     | 
    
         
            +
            end
         
     | 
    
        data/test/iso_game.rb
    CHANGED
    
    | 
         @@ -1,39 +1,39 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require_relative '../lib/minigl'
         
     | 
| 
       2 
     | 
    
         
            -
            include MiniGL
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            class MyGame < GameWindow
         
     | 
| 
       5 
     | 
    
         
            -
              def initialize
         
     | 
| 
       6 
     | 
    
         
            -
                super 800, 600, false
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
                @tile1 = Res.img :tile2
         
     | 
| 
       9 
     | 
    
         
            -
                @tile2 = Res.img :tile2b
         
     | 
| 
       10 
     | 
    
         
            -
                @map = Map.new 25, 17, 200, 200, 800, 600, true
         
     | 
| 
       11 
     | 
    
         
            -
                @p = Vector.new -1, -1
         
     | 
| 
       12 
     | 
    
         
            -
              end
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
              def needs_cursor?
         
     | 
| 
       15 
     | 
    
         
            -
                true
         
     | 
| 
       16 
     | 
    
         
            -
              end
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
              def update
         
     | 
| 
       19 
     | 
    
         
            -
                KB.update
         
     | 
| 
       20 
     | 
    
         
            -
                Mouse.update
         
     | 
| 
       21 
     | 
    
         
            -
                p = @map.get_map_pos Mouse.x, Mouse.y
         
     | 
| 
       22 
     | 
    
         
            -
                @p = p if @map.is_in_map p
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
                @map.move_camera 0, -4.5 if KB.key_down? Gosu::KbUp
         
     | 
| 
       25 
     | 
    
         
            -
                @map.move_camera 4.5, 0 if KB.key_down? Gosu::KbRight
         
     | 
| 
       26 
     | 
    
         
            -
                @map.move_camera 0, 4.5 if KB.key_down? Gosu::KbDown
         
     | 
| 
       27 
     | 
    
         
            -
                @map.move_camera -4.5, 0 if KB.key_down? Gosu::KbLeft
         
     | 
| 
       28 
     | 
    
         
            -
                @map.set_camera 0, 0 if KB.key_down? Gosu::KbReturn
         
     | 
| 
       29 
     | 
    
         
            -
              end
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
              def draw
         
     | 
| 
       32 
     | 
    
         
            -
                @map.foreach do |i, j, x, y|
         
     | 
| 
       33 
     | 
    
         
            -
                  if (i - @p.x).abs <= 1 and (j - @p.y).abs <= 1; @tile2.draw x, y, 0
         
     | 
| 
       34 
     | 
    
         
            -
                  else; @tile1.draw x, y, 0; end
         
     | 
| 
       35 
     | 
    
         
            -
                end
         
     | 
| 
       36 
     | 
    
         
            -
              end
         
     | 
| 
       37 
     | 
    
         
            -
            end
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
            MyGame.new.show
         
     | 
| 
      
 1 
     | 
    
         
            +
            require_relative '../lib/minigl'
         
     | 
| 
      
 2 
     | 
    
         
            +
            include MiniGL
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            class MyGame < GameWindow
         
     | 
| 
      
 5 
     | 
    
         
            +
              def initialize
         
     | 
| 
      
 6 
     | 
    
         
            +
                super 800, 600, false
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                @tile1 = Res.img :tile2
         
     | 
| 
      
 9 
     | 
    
         
            +
                @tile2 = Res.img :tile2b
         
     | 
| 
      
 10 
     | 
    
         
            +
                @map = Map.new 25, 17, 200, 200, 800, 600, true
         
     | 
| 
      
 11 
     | 
    
         
            +
                @p = Vector.new -1, -1
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              def needs_cursor?
         
     | 
| 
      
 15 
     | 
    
         
            +
                true
         
     | 
| 
      
 16 
     | 
    
         
            +
              end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              def update
         
     | 
| 
      
 19 
     | 
    
         
            +
                KB.update
         
     | 
| 
      
 20 
     | 
    
         
            +
                Mouse.update
         
     | 
| 
      
 21 
     | 
    
         
            +
                p = @map.get_map_pos Mouse.x, Mouse.y
         
     | 
| 
      
 22 
     | 
    
         
            +
                @p = p if @map.is_in_map p
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                @map.move_camera 0, -4.5 if KB.key_down? Gosu::KbUp
         
     | 
| 
      
 25 
     | 
    
         
            +
                @map.move_camera 4.5, 0 if KB.key_down? Gosu::KbRight
         
     | 
| 
      
 26 
     | 
    
         
            +
                @map.move_camera 0, 4.5 if KB.key_down? Gosu::KbDown
         
     | 
| 
      
 27 
     | 
    
         
            +
                @map.move_camera -4.5, 0 if KB.key_down? Gosu::KbLeft
         
     | 
| 
      
 28 
     | 
    
         
            +
                @map.set_camera 0, 0 if KB.key_down? Gosu::KbReturn
         
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
              def draw
         
     | 
| 
      
 32 
     | 
    
         
            +
                @map.foreach do |i, j, x, y|
         
     | 
| 
      
 33 
     | 
    
         
            +
                  if (i - @p.x).abs <= 1 and (j - @p.y).abs <= 1; @tile2.draw x, y, 0
         
     | 
| 
      
 34 
     | 
    
         
            +
                  else; @tile1.draw x, y, 0; end
         
     | 
| 
      
 35 
     | 
    
         
            +
                end
         
     | 
| 
      
 36 
     | 
    
         
            +
              end
         
     | 
| 
      
 37 
     | 
    
         
            +
            end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            MyGame.new.show
         
     | 
    
        data/test/map_tests.rb
    CHANGED
    
    | 
         @@ -1,57 +1,57 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'test/unit'
         
     | 
| 
       2 
     | 
    
         
            -
            require_relative '../lib/minigl'
         
     | 
| 
       3 
     | 
    
         
            -
            include MiniGL
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            class MapTest < Test::Unit::TestCase
         
     | 
| 
       6 
     | 
    
         
            -
              def test_map_attributes
         
     | 
| 
       7 
     | 
    
         
            -
                m = Map.new 16, 16, 300, 200
         
     | 
| 
       8 
     | 
    
         
            -
                assert_equal 16, m.tile_size.x
         
     | 
| 
       9 
     | 
    
         
            -
                assert_equal 16, m.tile_size.y
         
     | 
| 
       10 
     | 
    
         
            -
                assert_equal 300, m.size.x
         
     | 
| 
       11 
     | 
    
         
            -
                assert_equal 200, m.size.y
         
     | 
| 
       12 
     | 
    
         
            -
                assert_equal 0, m.cam.x
         
     | 
| 
       13 
     | 
    
         
            -
                assert_equal 0, m.cam.y
         
     | 
| 
       14 
     | 
    
         
            -
                m = Map.new 25, 17, 49, 133
         
     | 
| 
       15 
     | 
    
         
            -
                assert_equal 25, m.tile_size.x
         
     | 
| 
       16 
     | 
    
         
            -
                assert_equal 17, m.tile_size.y
         
     | 
| 
       17 
     | 
    
         
            -
                assert_equal 49, m.size.x
         
     | 
| 
       18 
     | 
    
         
            -
                assert_equal 133, m.size.y
         
     | 
| 
       19 
     | 
    
         
            -
                assert_equal 0, m.cam.x
         
     | 
| 
       20 
     | 
    
         
            -
                assert_equal 0, m.cam.y
         
     | 
| 
       21 
     | 
    
         
            -
              end
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
              def test_absolute_size
         
     | 
| 
       24 
     | 
    
         
            -
                m = Map.new 16, 16, 300, 200
         
     | 
| 
       25 
     | 
    
         
            -
                v = m.get_absolute_size
         
     | 
| 
       26 
     | 
    
         
            -
                assert_equal 300 * 16, v.x
         
     | 
| 
       27 
     | 
    
         
            -
                assert_equal 200 * 16, v.y
         
     | 
| 
       28 
     | 
    
         
            -
              end
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
              def test_center
         
     | 
| 
       31 
     | 
    
         
            -
                m = Map.new 16, 16, 300, 200
         
     | 
| 
       32 
     | 
    
         
            -
                v = m.get_center
         
     | 
| 
       33 
     | 
    
         
            -
                assert_equal 300 * 16 / 2, v.x
         
     | 
| 
       34 
     | 
    
         
            -
                assert_equal 200 * 16 / 2, v.y
         
     | 
| 
       35 
     | 
    
         
            -
              end
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
              def test_screen_pos
         
     | 
| 
       38 
     | 
    
         
            -
                m = Map.new 16, 16, 300, 200
         
     | 
| 
       39 
     | 
    
         
            -
                v = m.get_screen_pos 8, 5
         
     | 
| 
       40 
     | 
    
         
            -
                assert_equal 8 * 16, v.x
         
     | 
| 
       41 
     | 
    
         
            -
                assert_equal 5 * 16, v.y
         
     | 
| 
       42 
     | 
    
         
            -
              end
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
              def test_map_pos
         
     | 
| 
       45 
     | 
    
         
            -
                m = Map.new 16, 16, 300, 200
         
     | 
| 
       46 
     | 
    
         
            -
                v = m.get_map_pos 410, 300
         
     | 
| 
       47 
     | 
    
         
            -
                assert_equal 25, v.x
         
     | 
| 
       48 
     | 
    
         
            -
                assert_equal 18, v.y
         
     | 
| 
       49 
     | 
    
         
            -
              end
         
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
              def test_in_map
         
     | 
| 
       52 
     | 
    
         
            -
                m = Map.new 16, 16, 300, 200
         
     | 
| 
       53 
     | 
    
         
            -
                assert m.is_in_map(Vector.new 30, 20)
         
     | 
| 
       54 
     | 
    
         
            -
                assert m.is_in_map(Vector.new 299, 199)
         
     | 
| 
       55 
     | 
    
         
            -
                assert !m.is_in_map(Vector.new 300, 200)
         
     | 
| 
       56 
     | 
    
         
            -
              end
         
     | 
| 
       57 
     | 
    
         
            -
            end
         
     | 
| 
      
 1 
     | 
    
         
            +
            require 'test/unit'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require_relative '../lib/minigl'
         
     | 
| 
      
 3 
     | 
    
         
            +
            include MiniGL
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            class MapTest < Test::Unit::TestCase
         
     | 
| 
      
 6 
     | 
    
         
            +
              def test_map_attributes
         
     | 
| 
      
 7 
     | 
    
         
            +
                m = Map.new 16, 16, 300, 200
         
     | 
| 
      
 8 
     | 
    
         
            +
                assert_equal 16, m.tile_size.x
         
     | 
| 
      
 9 
     | 
    
         
            +
                assert_equal 16, m.tile_size.y
         
     | 
| 
      
 10 
     | 
    
         
            +
                assert_equal 300, m.size.x
         
     | 
| 
      
 11 
     | 
    
         
            +
                assert_equal 200, m.size.y
         
     | 
| 
      
 12 
     | 
    
         
            +
                assert_equal 0, m.cam.x
         
     | 
| 
      
 13 
     | 
    
         
            +
                assert_equal 0, m.cam.y
         
     | 
| 
      
 14 
     | 
    
         
            +
                m = Map.new 25, 17, 49, 133
         
     | 
| 
      
 15 
     | 
    
         
            +
                assert_equal 25, m.tile_size.x
         
     | 
| 
      
 16 
     | 
    
         
            +
                assert_equal 17, m.tile_size.y
         
     | 
| 
      
 17 
     | 
    
         
            +
                assert_equal 49, m.size.x
         
     | 
| 
      
 18 
     | 
    
         
            +
                assert_equal 133, m.size.y
         
     | 
| 
      
 19 
     | 
    
         
            +
                assert_equal 0, m.cam.x
         
     | 
| 
      
 20 
     | 
    
         
            +
                assert_equal 0, m.cam.y
         
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              def test_absolute_size
         
     | 
| 
      
 24 
     | 
    
         
            +
                m = Map.new 16, 16, 300, 200
         
     | 
| 
      
 25 
     | 
    
         
            +
                v = m.get_absolute_size
         
     | 
| 
      
 26 
     | 
    
         
            +
                assert_equal 300 * 16, v.x
         
     | 
| 
      
 27 
     | 
    
         
            +
                assert_equal 200 * 16, v.y
         
     | 
| 
      
 28 
     | 
    
         
            +
              end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
              def test_center
         
     | 
| 
      
 31 
     | 
    
         
            +
                m = Map.new 16, 16, 300, 200
         
     | 
| 
      
 32 
     | 
    
         
            +
                v = m.get_center
         
     | 
| 
      
 33 
     | 
    
         
            +
                assert_equal 300 * 16 / 2, v.x
         
     | 
| 
      
 34 
     | 
    
         
            +
                assert_equal 200 * 16 / 2, v.y
         
     | 
| 
      
 35 
     | 
    
         
            +
              end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
              def test_screen_pos
         
     | 
| 
      
 38 
     | 
    
         
            +
                m = Map.new 16, 16, 300, 200
         
     | 
| 
      
 39 
     | 
    
         
            +
                v = m.get_screen_pos 8, 5
         
     | 
| 
      
 40 
     | 
    
         
            +
                assert_equal 8 * 16, v.x
         
     | 
| 
      
 41 
     | 
    
         
            +
                assert_equal 5 * 16, v.y
         
     | 
| 
      
 42 
     | 
    
         
            +
              end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
              def test_map_pos
         
     | 
| 
      
 45 
     | 
    
         
            +
                m = Map.new 16, 16, 300, 200
         
     | 
| 
      
 46 
     | 
    
         
            +
                v = m.get_map_pos 410, 300
         
     | 
| 
      
 47 
     | 
    
         
            +
                assert_equal 25, v.x
         
     | 
| 
      
 48 
     | 
    
         
            +
                assert_equal 18, v.y
         
     | 
| 
      
 49 
     | 
    
         
            +
              end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
              def test_in_map
         
     | 
| 
      
 52 
     | 
    
         
            +
                m = Map.new 16, 16, 300, 200
         
     | 
| 
      
 53 
     | 
    
         
            +
                assert m.is_in_map(Vector.new 30, 20)
         
     | 
| 
      
 54 
     | 
    
         
            +
                assert m.is_in_map(Vector.new 299, 199)
         
     | 
| 
      
 55 
     | 
    
         
            +
                assert !m.is_in_map(Vector.new 300, 200)
         
     | 
| 
      
 56 
     | 
    
         
            +
              end
         
     | 
| 
      
 57 
     | 
    
         
            +
            end
         
     | 
    
        data/test/mov_game.rb
    CHANGED
    
    | 
         @@ -1,77 +1,77 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'gosu'
         
     | 
| 
       2 
     | 
    
         
            -
            require_relative '../lib/minigl'
         
     | 
| 
       3 
     | 
    
         
            -
            include MiniGL
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            class MyGame < GameWindow
         
     | 
| 
       6 
     | 
    
         
            -
              def initialize
         
     | 
| 
       7 
     | 
    
         
            -
                super 800, 600, false
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
                @obj = GameObject.new(0, 0, 50, 50, :square)
         
     | 
| 
       10 
     | 
    
         
            -
                @obj2 = GameObject.new(100, 0, 50, 50, :square2)
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                @obsts = [
         
     | 
| 
       13 
     | 
    
         
            -
                  Block.new(0, 600, 800, 1, false),
         
     | 
| 
       14 
     | 
    
         
            -
                  Block.new(-1, 0, 1, 600, false),
         
     | 
| 
       15 
     | 
    
         
            -
                  Block.new(800, 0, 1, 600, false),
         
     | 
| 
       16 
     | 
    
         
            -
                  Block.new(300, 430, 50, 50),
         
     | 
| 
       17 
     | 
    
         
            -
                  # Block.new(375, 550, 50, 50, true),
         
     | 
| 
       18 
     | 
    
         
            -
                  # Block.new(150, 200, 20, 300, false),
         
     | 
| 
       19 
     | 
    
         
            -
                  # Block.new(220, 300, 100, 20, true),
         
     | 
| 
       20 
     | 
    
         
            -
                  # Block.new(485, 490, 127, 10, false),
         
     | 
| 
       21 
     | 
    
         
            -
                ]
         
     | 
| 
       22 
     | 
    
         
            -
                @ramps = [
         
     | 
| 
       23 
     | 
    
         
            -
                  Ramp.new(200, 550, 200, 50, true),
         
     | 
| 
       24 
     | 
    
         
            -
                  Ramp.new(0, 200, 150, 300, false),
         
     | 
| 
       25 
     | 
    
         
            -
                  Ramp.new(150, 500, 150, 100, false),
         
     | 
| 
       26 
     | 
    
         
            -
                  Ramp.new(500, 500, 150, 100, true),
         
     | 
| 
       27 
     | 
    
         
            -
                  Ramp.new(650, 300, 150, 200, true),
         
     | 
| 
       28 
     | 
    
         
            -
                  Ramp.new(650, 500, 150, 100, true),
         
     | 
| 
       29 
     | 
    
         
            -
                ]
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
                # @cycle = [Vector.new(100, 530), Vector.new(650, 500)]
         
     | 
| 
       32 
     | 
    
         
            -
                # @cyc_obj = GameObject.new(@cycle[0].x, @cycle[0].y, 50, 50, :square)
         
     | 
| 
       33 
     | 
    
         
            -
                # @cyc_obj.instance_eval('@passable = true')
         
     | 
| 
       34 
     | 
    
         
            -
                # @obsts.push @cyc_obj
         
     | 
| 
       35 
     | 
    
         
            -
              end
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
              def update
         
     | 
| 
       38 
     | 
    
         
            -
                KB.update
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
                forces = Vector.new(0, 0)
         
     | 
| 
       41 
     | 
    
         
            -
                if @obj.bottom
         
     | 
| 
       42 
     | 
    
         
            -
                  forces.y -= 15 if KB.key_pressed?(Gosu::KbSpace)
         
     | 
| 
       43 
     | 
    
         
            -
                  forces.x -= 0.5 if KB.key_down?(Gosu::KbLeft)
         
     | 
| 
       44 
     | 
    
         
            -
                  forces.x += 0.5 if KB.key_down?(Gosu::KbRight)
         
     | 
| 
       45 
     | 
    
         
            -
                  forces.x -= @obj.speed.x * 0.1
         
     | 
| 
       46 
     | 
    
         
            -
                else
         
     | 
| 
       47 
     | 
    
         
            -
                  forces.x -= 0.2 if KB.key_down?(Gosu::KbLeft)
         
     | 
| 
       48 
     | 
    
         
            -
                  forces.x += 0.2 if KB.key_down?(Gosu::KbRight)
         
     | 
| 
       49 
     | 
    
         
            -
                end
         
     | 
| 
       50 
     | 
    
         
            -
                @obj.move(forces, @obsts, @ramps)
         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
                speed = Vector.new(0, 0)
         
     | 
| 
       53 
     | 
    
         
            -
                speed.y -= 3 if KB.key_down? Gosu::KbW
         
     | 
| 
       54 
     | 
    
         
            -
                speed.y += 3 if KB.key_down? Gosu::KbS
         
     | 
| 
       55 
     | 
    
         
            -
                speed.x -= 3 if KB.key_down? Gosu::KbA
         
     | 
| 
       56 
     | 
    
         
            -
                speed.x += 3 if KB.key_down? Gosu::KbD
         
     | 
| 
       57 
     | 
    
         
            -
                @obj2.move(speed, @obsts, @ramps, true)
         
     | 
| 
       58 
     | 
    
         
            -
              end
         
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
              def draw
         
     | 
| 
       61 
     | 
    
         
            -
                @obj.draw
         
     | 
| 
       62 
     | 
    
         
            -
                @obj2.draw
         
     | 
| 
       63 
     | 
    
         
            -
                @obsts.each do |o|
         
     | 
| 
       64 
     | 
    
         
            -
                  draw_quad o.x, o.y, 0xffffffff,
         
     | 
| 
       65 
     | 
    
         
            -
                            o.x + o.w, o.y, 0xffffffff,
         
     | 
| 
       66 
     | 
    
         
            -
                            o.x + o.w, o.y + o.h, 0xffffffff,
         
     | 
| 
       67 
     | 
    
         
            -
                            o.x, o.y + o.h, 0xffffffff, 0
         
     | 
| 
       68 
     | 
    
         
            -
                end
         
     | 
| 
       69 
     | 
    
         
            -
                @ramps.each do |r|
         
     | 
| 
       70 
     | 
    
         
            -
                  draw_triangle r.left ? r.x + r.w : r.x, r.y, 0xffffffff,
         
     | 
| 
       71 
     | 
    
         
            -
                                r.x + r.w, r.y + r.h, 0xffffffff,
         
     | 
| 
       72 
     | 
    
         
            -
                                r.x, r.y + r.h, 0xffffffff, 0
         
     | 
| 
       73 
     | 
    
         
            -
                end
         
     | 
| 
       74 
     | 
    
         
            -
              end
         
     | 
| 
       75 
     | 
    
         
            -
            end
         
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            require 'gosu'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require_relative '../lib/minigl'
         
     | 
| 
      
 3 
     | 
    
         
            +
            include MiniGL
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            class MyGame < GameWindow
         
     | 
| 
      
 6 
     | 
    
         
            +
              def initialize
         
     | 
| 
      
 7 
     | 
    
         
            +
                super 800, 600, false
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                @obj = GameObject.new(0, 0, 50, 50, :square)
         
     | 
| 
      
 10 
     | 
    
         
            +
                @obj2 = GameObject.new(100, 0, 50, 50, :square2)
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                @obsts = [
         
     | 
| 
      
 13 
     | 
    
         
            +
                  Block.new(0, 600, 800, 1, false),
         
     | 
| 
      
 14 
     | 
    
         
            +
                  Block.new(-1, 0, 1, 600, false),
         
     | 
| 
      
 15 
     | 
    
         
            +
                  Block.new(800, 0, 1, 600, false),
         
     | 
| 
      
 16 
     | 
    
         
            +
                  Block.new(300, 430, 50, 50),
         
     | 
| 
      
 17 
     | 
    
         
            +
                  # Block.new(375, 550, 50, 50, true),
         
     | 
| 
      
 18 
     | 
    
         
            +
                  # Block.new(150, 200, 20, 300, false),
         
     | 
| 
      
 19 
     | 
    
         
            +
                  # Block.new(220, 300, 100, 20, true),
         
     | 
| 
      
 20 
     | 
    
         
            +
                  # Block.new(485, 490, 127, 10, false),
         
     | 
| 
      
 21 
     | 
    
         
            +
                ]
         
     | 
| 
      
 22 
     | 
    
         
            +
                @ramps = [
         
     | 
| 
      
 23 
     | 
    
         
            +
                  Ramp.new(200, 550, 200, 50, true),
         
     | 
| 
      
 24 
     | 
    
         
            +
                  Ramp.new(0, 200, 150, 300, false),
         
     | 
| 
      
 25 
     | 
    
         
            +
                  Ramp.new(150, 500, 150, 100, false),
         
     | 
| 
      
 26 
     | 
    
         
            +
                  Ramp.new(500, 500, 150, 100, true),
         
     | 
| 
      
 27 
     | 
    
         
            +
                  Ramp.new(650, 300, 150, 200, true),
         
     | 
| 
      
 28 
     | 
    
         
            +
                  Ramp.new(650, 500, 150, 100, true),
         
     | 
| 
      
 29 
     | 
    
         
            +
                ]
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                # @cycle = [Vector.new(100, 530), Vector.new(650, 500)]
         
     | 
| 
      
 32 
     | 
    
         
            +
                # @cyc_obj = GameObject.new(@cycle[0].x, @cycle[0].y, 50, 50, :square)
         
     | 
| 
      
 33 
     | 
    
         
            +
                # @cyc_obj.instance_eval('@passable = true')
         
     | 
| 
      
 34 
     | 
    
         
            +
                # @obsts.push @cyc_obj
         
     | 
| 
      
 35 
     | 
    
         
            +
              end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
              def update
         
     | 
| 
      
 38 
     | 
    
         
            +
                KB.update
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                forces = Vector.new(0, 0)
         
     | 
| 
      
 41 
     | 
    
         
            +
                if @obj.bottom
         
     | 
| 
      
 42 
     | 
    
         
            +
                  forces.y -= 15 if KB.key_pressed?(Gosu::KbSpace)
         
     | 
| 
      
 43 
     | 
    
         
            +
                  forces.x -= 0.5 if KB.key_down?(Gosu::KbLeft)
         
     | 
| 
      
 44 
     | 
    
         
            +
                  forces.x += 0.5 if KB.key_down?(Gosu::KbRight)
         
     | 
| 
      
 45 
     | 
    
         
            +
                  forces.x -= @obj.speed.x * 0.1
         
     | 
| 
      
 46 
     | 
    
         
            +
                else
         
     | 
| 
      
 47 
     | 
    
         
            +
                  forces.x -= 0.2 if KB.key_down?(Gosu::KbLeft)
         
     | 
| 
      
 48 
     | 
    
         
            +
                  forces.x += 0.2 if KB.key_down?(Gosu::KbRight)
         
     | 
| 
      
 49 
     | 
    
         
            +
                end
         
     | 
| 
      
 50 
     | 
    
         
            +
                @obj.move(forces, @obsts, @ramps)
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                speed = Vector.new(0, 0)
         
     | 
| 
      
 53 
     | 
    
         
            +
                speed.y -= 3 if KB.key_down? Gosu::KbW
         
     | 
| 
      
 54 
     | 
    
         
            +
                speed.y += 3 if KB.key_down? Gosu::KbS
         
     | 
| 
      
 55 
     | 
    
         
            +
                speed.x -= 3 if KB.key_down? Gosu::KbA
         
     | 
| 
      
 56 
     | 
    
         
            +
                speed.x += 3 if KB.key_down? Gosu::KbD
         
     | 
| 
      
 57 
     | 
    
         
            +
                @obj2.move(speed, @obsts, @ramps, true)
         
     | 
| 
      
 58 
     | 
    
         
            +
              end
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
              def draw
         
     | 
| 
      
 61 
     | 
    
         
            +
                @obj.draw
         
     | 
| 
      
 62 
     | 
    
         
            +
                @obj2.draw
         
     | 
| 
      
 63 
     | 
    
         
            +
                @obsts.each do |o|
         
     | 
| 
      
 64 
     | 
    
         
            +
                  draw_quad o.x, o.y, 0xffffffff,
         
     | 
| 
      
 65 
     | 
    
         
            +
                            o.x + o.w, o.y, 0xffffffff,
         
     | 
| 
      
 66 
     | 
    
         
            +
                            o.x + o.w, o.y + o.h, 0xffffffff,
         
     | 
| 
      
 67 
     | 
    
         
            +
                            o.x, o.y + o.h, 0xffffffff, 0
         
     | 
| 
      
 68 
     | 
    
         
            +
                end
         
     | 
| 
      
 69 
     | 
    
         
            +
                @ramps.each do |r|
         
     | 
| 
      
 70 
     | 
    
         
            +
                  draw_triangle r.left ? r.x + r.w : r.x, r.y, 0xffffffff,
         
     | 
| 
      
 71 
     | 
    
         
            +
                                r.x + r.w, r.y + r.h, 0xffffffff,
         
     | 
| 
      
 72 
     | 
    
         
            +
                                r.x, r.y + r.h, 0xffffffff, 0
         
     | 
| 
      
 73 
     | 
    
         
            +
                end
         
     | 
| 
      
 74 
     | 
    
         
            +
              end
         
     | 
| 
      
 75 
     | 
    
         
            +
            end
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
       77 
77 
     | 
    
         
             
            MyGame.new.show
         
     |