gridshooter.monkey2 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. ' Copyleft notice: All code created by Leo Santos (www.leosantos.com)
  2. ' Feel free to use it in any form, but please include a credit.
  3. ' More importantly, do not claim to have created any of it, unless you modify it substantially.
  4. ' Thanks!
  5. #Import "gamegraphics/gamegraphics"
  6. #Import "src/renderwindow"
  7. #Import "src/actor"
  8. #Import "src/player"
  9. #Import "src/bullet"
  10. #Import "src/orb"
  11. #Import "fonts/classic_sans.ttf"
  12. #Import "images/grid.png"
  13. #Import "images/starfield.png"
  14. #Import "images/hero.png"
  15. #Import "images/jet.png"
  16. #Import "images/bullet.png"
  17. #Import "images/orbSmall.png"
  18. Using mojo..
  19. Using std..
  20. 'To do: move out of collision
  21. Class Game Extends RenderWindow
  22. Global scrollSpeed := 5.0
  23. Global scrollLimitY:Double = 60
  24. Global cameraSpeed := 1.0
  25. Field hero:Player
  26. Field bg:Background
  27. Field bgGrid:Background
  28. Field smallFont:Font
  29. Field colorTint:= New Color( 0.25, 1.0, 0.5 )
  30. Method New()
  31. Super.New( "Test", 420, 240, False, True ) 'name, width, height, filterTextures, renderToTexture
  32. Layout = "letterbox-int"
  33. End
  34. Method OnStart() Override
  35. Actor.camera = camera
  36. 'Load sprites & font
  37. canvas.Font = Font.Load( "asset::classic_sans.ttf", 10 )
  38. bg = New Background( "asset::starfield.png" )
  39. bgGrid = New Background( "asset::grid.png" )
  40. Local heroSprite := New Sprite( "asset::hero.png", 3, 32, 32, False )
  41. heroSprite.AddAnimationClip( "idle", New Int[]( 0 ) )
  42. heroSprite.AddAnimationClip( "up", New Int[]( 1 ) )
  43. heroSprite.AddAnimationClip( "down", New Int[]( 2 ) )
  44. Local jetSprite := New Sprite( "asset::jet.png", 2, 16, 16, False )
  45. jetSprite.AddAnimationClip( "idle", New Int[]( 0,1 ) )
  46. jetSprite.frameRate = 30
  47. Local bulletSprite := New Sprite( "asset::bullet.png", 5, 32, 32, False )
  48. bulletSprite.AddAnimationClip( "idle", New Int[] ( 0 ) )
  49. bulletSprite.AddAnimationClip( "hit", New Int[] ( 1,2,3,4 ), False )
  50. bulletSprite.frameRate = 15
  51. Local orbSprite := New Sprite( "asset::orbSmall.png", 5, 16, 16, False )
  52. orbSprite.AddAnimationClip( "idle", New Int[] ( 0,1,2,3 ) )
  53. 'Create player sprite
  54. hero = New Player( heroSprite )
  55. 'Create reusable enemy orbs
  56. SeedRnd( 12345 )
  57. Local offset:= 0
  58. For Local n := 0 Until 20
  59. Local neworb := New Orb( orbSprite )
  60. neworb.Reset()
  61. neworb.position.X += offset
  62. offset += 16
  63. Next
  64. 'Pool of 10 reusable bullets
  65. For Local n := 0 Until 10
  66. Local b := New Bullet( bulletSprite )
  67. Actor.bulletPool.Push( b )
  68. Next
  69. Bullet.player = hero
  70. Bullet.cullDistance = Width
  71. canvas.TextureFilteringEnabled = False 'New feature in v009
  72. End
  73. Method OnUpdate() Override
  74. 'camera scrolls up & down a bit, 90's shooter style
  75. camera.X += scrollSpeed
  76. If Keyboard.KeyDown( Key.Up )
  77. camera.Y -= cameraSpeed
  78. Else If Keyboard.KeyDown( Key.Down )
  79. camera.Y += cameraSpeed
  80. End
  81. camera.Y = Clamp( camera.Y, -scrollLimitY, scrollLimitY )
  82. 'Update all actors
  83. Actor.UpdateAll()
  84. 'Display debug info
  85. If Keyboard.KeyHit( Key.D ) Then debug = Not debug
  86. End
  87. Method OnDraw() Override
  88. canvas.Color = colorTint
  89. 'Draw bg objects in three layers with different parallax
  90. canvas.Alpha = 1.0
  91. Parallax = 0.1
  92. bg.Draw( canvas, 0, 0, 1.0, CameraRect )
  93. canvas.Alpha = 0.5
  94. canvas.DrawText( "Monkey2 Side Scrolling Demo by Leo Santos. Press space to shoot!", 260, 100 )
  95. canvas.Alpha = 0.25
  96. Parallax = 0.25
  97. bgGrid.Draw( canvas, 32, 32, 1.0, CameraRect )
  98. canvas.Alpha = 0.5
  99. Parallax = 1.0
  100. bgGrid.Draw( canvas, 0, 0, 1.0, CameraRect )
  101. 'Draw all actors
  102. canvas.Alpha = 1.0
  103. canvas.Color= Color.White
  104. Actor.DrawAll( canvas )
  105. End
  106. End
  107. Function Main()
  108. New AppInstance
  109. New Game()
  110. App.Run()
  111. End