GAME3.TXT
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:5k
源码类别:

Windows编程

开发平台:

Visual C++

  1. $OBJECT=ShipClass
  2. $OBJECT=BubbleClass
  3. $OBJECT=AmmoClass
  4. Option Explicit
  5. '----------------------------------------------------------------------------
  6. ' Game3.txt
  7. '----------------------------------------------------------------------------
  8. ' Use path to this file as parameter to Sprite.exe.  E.g.:
  9. '    Sprite C:TmpGame3.txt
  10. ' See "Game.Pix" for list of images available, numbered 0-n.
  11. '----------------------------------------------------------------------------
  12. Dim sShip               'Player's ship
  13. '----------------------------------------------------------------------------
  14. ' GAME events
  15. '
  16. Sub Game_NewGame()
  17. '   ------------
  18.     'Sprites Bounce on inner border:
  19.     ShipClass.Border   = 15
  20.     BubbleClass.Border = 15
  21.     AmmoClass.Border   = 15
  22.     'Setup Collision possibilities.  Bit 1 is reserved for hitting same-kind objects.
  23.     ShipClass.Collide   = 2
  24.     BubbleClass.Collide = 2 + 4
  25.     AmmoClass.Collide   =     4
  26.     'Setup Standard images for the different classes of sprites
  27.     ShipClass.Image   = 32 'Ship
  28.     BubbleClass.Image = 60 'Small bubble
  29.     AmmoClass.Image   = 35 'Ammo
  30.     'Extra Ship Info
  31.     Game.ScoreFirst1Up = 250
  32.     Game.DScoreNext1Up = 500
  33.     ShipClass.Friction = 0.981
  34.     Set sShip = ShipClass.CreateSprite(Game.Width / 2, Game.Height / 2, 0)
  35.     BubbleClass.CreateSprite 0, 0, 0
  36. End Sub
  37. Sub Game_KeyDown(ByVal ch)
  38. '   ------------
  39.     Dim sT
  40.     'Too many shots on screen already?
  41.     If AmmoClass.SpriteCount > 5 Then Exit Sub
  42.     'Game Over?
  43.     If Game.ShipCount <= 0 Then Exit Sub
  44.     'Up
  45.     If ch = 38 Then
  46.         sShip.Image = 24
  47.         Set sT = AmmoClass.CreateSprite(sShip.Left + sShip.Width / 2, sShip.Top, 0)
  48.         sT.Vx = 0 : sT.Vy = -5
  49.         sShip.Vy = sShip.Vy + 1
  50.     End If
  51.     'Down
  52.     If ch = 40 Then
  53.         sShip.Image = 8
  54.         Set sT = AmmoClass.CreateSprite(sShip.Left + sShip.Width / 2, sShip.Top + sShip.Height, 0)
  55.         sT.Vx = 0 : sT.Vy = 5
  56.         sShip.Vy = sShip.Vy - 1
  57.     End If
  58.     'Left
  59.     If ch = 37 Then
  60.         sShip.Image = 16
  61.         Set sT = AmmoClass.CreateSprite(sShip.Left, sShip.Top + sShip.Height / 2, 0)
  62.         sT.Vx = -5 : sT.Vy = 0
  63.         sShip.Vx = sShip.Vx + 1
  64.     End If
  65.     'Right
  66.     If ch = 39 Then
  67.         sShip.Image = 0
  68.         Set sT = AmmoClass.CreateSprite(sShip.Left + sShip.Width, sShip.Top + sShip.Height / 2, 0)
  69.         sT.Vx = 5 : sT.Vy = 0
  70.         sShip.Vx = sShip.Vx - 1
  71.     End If
  72. End Sub
  73. Sub DoShipHit()      'Decrease # ships, end game if none left
  74. '   ---------
  75.     sShip.Image = 32
  76.     Game.ShipCount = Game.ShipCount - 1
  77.     If Game.ShipCount <= 0 Then
  78.         Game.EndGame
  79.     Else
  80.         sShip.Vx = 0
  81.         sShip.Vy = 0
  82.         sShip.MoveTo Game.Width / 2, Game.Height / 2
  83.     End If
  84. End Sub
  85. Sub DoNewBubble(ByVal left, ByVal top, ByVal vx, ByVal vy)
  86. '   -----------
  87.     Dim sT
  88.     Set sT = BubbleClass.CreateSprite(left, top, 1)
  89.     sT.Vx  = vx * 0.5 + 4 * Rnd() - 2
  90.     sT.Vy  = vy * 0.5 + 4 * Rnd() - 2
  91. End Sub
  92. Sub Game_Collide(ByVal sLowId, ByVal sHighId, ByVal coll)
  93. '   ------------
  94.     Dim ship
  95.     Dim bubble
  96.     Dim ammo
  97.     Dim sT
  98.     Select Case coll
  99.         Case 2
  100.             Set ship   = sLowId
  101.             Set bubble = sHighId
  102.             If ship.Image <> 32 Then
  103.                 'Ship Hit Bubble
  104.                 Call DoShipHit
  105.             End If
  106. Case 4
  107.             Set bubble = sLowId
  108.             Set ammo   = sHighId
  109.             ammo.Remove
  110.             If bubble.Image <= 57 Then
  111.                 Game.AddScore 50
  112.                 bubble.Remove
  113.                 DoNewBubble bubble.Left, bubble.Top, bubble.Vx - ammo.Vx, bubble.Vy - ammo.Vy
  114.                 DoNewBubble bubble.Left, bubble.Top, bubble.Vx + ammo.Vx, bubble.Vy + ammo.Vy
  115.             Else
  116.                 bubble.Image = bubble.Image - 1
  117.                 Game.AddScore 5
  118.             End If
  119.     End Select
  120. End Sub
  121. '----------------------------------------------------------------------------
  122. ' ShipClass events
  123. '
  124. Sub ShipClass_Init(ByVal s, ByVal u)
  125.     s.TickEvent = 5
  126. End Sub
  127. Sub ShipClass_Border(ByVal s, ByVal brd)
  128.     'Randomize velocity, then bounce ship
  129.     s.Vx = s.Vx + 6 * Rnd() - 3
  130.     s.Vy = s.Vy + 6 * Rnd() - 3
  131.     Game.StdBorderBounce s, brd
  132. End Sub
  133. '----------------------------------------------------------------------------
  134. ' BubbleClass events
  135. '
  136. Sub BubbleClass_Init(ByVal s, ByVal u)
  137.     If s.Left = 0 Then
  138.         'New Bubble, so start it at an edge, and give it a random direction
  139.         Game.StdInitEdge s, u
  140.         s.Vx = 12 * Rnd() - 6
  141.         s.Vy = 12 * Rnd() - 6
  142.     End If
  143. End Sub
  144. Sub BubbleClass_Border(ByVal s, ByVal brd)
  145.     Game.StdBorderBounce s, brd
  146. End Sub
  147. 'If no more enemies, create some
  148. Sub BubbleClass_LastTerm()
  149. '   --------------------
  150.     BubbleClass.CreateSprite 0, 0, 0
  151. End Sub
  152. '----------------------------------------------------------------------------
  153. ' AmmoClass events
  154. '
  155. Sub AmmoClass_Border(ByVal s, ByVal brd)
  156.     s.Remove
  157. End Sub
  158. '--- EOF ---