home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 1_2002.ISO / Data / Zips / Simple Gam24222872001.psc / SimpleGame.bas < prev    next >
Encoding:
BASIC Source File  |  2001-08-07  |  5.3 KB  |  151 lines

  1. Attribute VB_Name = "Module1"
  2. Public Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
  3. Public Declare Function GetTickCount Lib "kernel32.dll" () As Long
  4. Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
  5. Public Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
  6.  
  7. 'these are for sound
  8. Const SND_SYNC = &H0
  9. Const SND_ASYNC = &H1
  10. Const SND_NODEFAULT = &H2
  11. Const SND_LOOP = &H8
  12. Const SND_NOSTOP = &H10
  13.  
  14. Public Type Player
  15.  X As Integer
  16.  Y As Integer
  17.  Dire As Byte
  18. End Type
  19. Public Type Goal
  20.  X As Integer
  21.  Y As Integer
  22.  Tag As Byte
  23. End Type
  24.  
  25.  
  26. Public P1 As Player '<-- The player
  27. Public G1 As Goal '<-- The Goal
  28.  
  29. Public Board() As Boolean
  30. Public Width As Integer
  31. Public Height As Integer
  32.  
  33. Public FlagDead As Boolean
  34.  
  35. Public Const Size As Byte = 30
  36.  
  37. Public Sub LoadMap()
  38.     Main.picMap.AutoSize = False
  39.     Main.picMap.Picture = LoadPicture(App.Path & "\map.bmp") 'load the board form file
  40.     Main.picMap.AutoSize = True
  41.     
  42.     Width = Main.picMap.ScaleWidth 'get the height and width of the board
  43.     Height = Main.picMap.ScaleHeight
  44.     
  45.     ReDim Board(1 To Width, 1 To Height)
  46.     
  47.     For Y = 1 To Height
  48.         For X = 1 To Width
  49.             a = Main.picMap.Point(X - 1, Y - 1) 'Get the color of this pixel
  50.             Select Case a
  51.             Case 0 'if it's black, do nothing
  52.             Case vbBlue 'If it's blue...
  53.                 P1.X = X '... Set player startpoint to here...
  54.                 P1.Y = Y
  55.                 Board(X, Y) = True '... and mark it as walkable
  56.             Case vbRed 'if it's Red...
  57.                 G1.X = X '... move the goal to here...
  58.                 G1.Y = Y
  59.                 Board(X, Y) = True '... and mark it as walkable
  60.             Case Else
  61.                 Board(X, Y) = True 'if it's any other color, mark it as walkable
  62.             End Select
  63.         Next X
  64.     Next Y
  65. End Sub
  66.  
  67. Public Sub PaintBoard()
  68.     'Paint the Board
  69.     Main.picBuffer.Cls
  70.     For Y = 1 To Height
  71.         For X = 1 To Width
  72.             If Board(X, Y) Then
  73.                 BitBlt Main.picBuffer.hDC, (X - 1) * Size, (Y - 1) * Size, Size, Size, Main.picTile.hDC, 0, 0, vbSrcCopy
  74.             End If
  75.         Next X
  76.     Next Y
  77.     
  78.     
  79.     If Not FlagDead Then 'Now paint The Player
  80.         BitBlt Main.picBuffer.hDC, (P1.X - 1) * Size, (P1.Y - 1) * Size, Size, Size, Main.picPM(P1.Dire - 1).hDC, 0, 0, vbSrcAnd
  81.         BitBlt Main.picBuffer.hDC, (P1.X - 1) * Size, (P1.Y - 1) * Size, Size, Size, Main.picP(P1.Dire - 1).hDC, 0, 0, vbSrcPaint
  82.     Else 'The player is dead, paint his scream
  83.         BitBlt Main.picBuffer.hDC, (P1.X - 2) * Size, (P1.Y - 0.7) * Size, Size * 3, Size, Main.picAaaM.hDC, 0, 0, vbSrcAnd
  84.         BitBlt Main.picBuffer.hDC, (P1.X - 2) * Size, (P1.Y - 0.7) * Size, Size * 3, Size, Main.picAaa.hDC, 0, 0, vbSrcPaint
  85.     End If
  86.     'Paint The Flag
  87.     BitBlt Main.picBuffer.hDC, (G1.X - 1) * Size, (G1.Y - 1) * Size, Size, Size, Main.picFlagM(G1.Tag).hDC, 0, 0, vbSrcAnd
  88.     BitBlt Main.picBuffer.hDC, (G1.X - 1) * Size, (G1.Y - 1) * Size, Size, Size, Main.picFlag(G1.Tag).hDC, 0, 0, vbSrcPaint
  89.     
  90.     
  91.     BitBlt Main.picMain.hDC, 0, 0, Main.picMain.ScaleWidth, Main.picMain.ScaleHeight, Main.picBuffer.hDC, 0, 0, vbSrcCopy
  92. End Sub
  93.  
  94. Public Sub DoKeys()
  95.     
  96.     If GetAsyncKeyState(vbKeyLeft) <> 0 Then
  97.         P1.X = P1.X - 1
  98.         P1.Dire = 1
  99.     End If
  100.     If GetAsyncKeyState(vbKeyDown) <> 0 Then
  101.         P1.Y = P1.Y + 1
  102.         P1.Dire = 2
  103.     End If
  104.     If GetAsyncKeyState(vbKeyRight) <> 0 Then
  105.         P1.X = P1.X + 1
  106.         P1.Dire = 3
  107.     End If
  108.     If GetAsyncKeyState(vbKeyUp) <> 0 Then
  109.         P1.Y = P1.Y - 1
  110.         P1.Dire = 4
  111.     End If
  112.     
  113.     
  114.     If P1.X <= 1 Then P1.X = 1 'Prevent us from going of the edge of the world
  115.     If P1.Y <= 1 Then P1.Y = 1
  116.     If P1.X >= Width Then P1.X = Height
  117.     If P1.Y >= Height Then P1.Y = Width
  118.  
  119. End Sub
  120.  
  121. Public Sub CheckFallOff()
  122.     If Board(P1.X, P1.Y) Then Exit Sub 'There is ground under our feet :)
  123.     FlagDead = True 'Falg for our death!
  124. End Sub
  125.  
  126. Public Sub CheckInGoal()
  127.     If P1.X = G1.X And P1.Y = G1.Y Then 'Are we at our goal?
  128.         EndGame 2 'if so, end the game in style 2: WE WIN! :D
  129.     End If
  130. End Sub
  131. Public Sub EndGame(Why)
  132.     Select Case Why
  133.     Case 1 'Bummer, we lost....
  134.         PlaySound "fall"
  135.         MsgBox "Nope. Wrong! You shouldn't have fallen off!" & vbNewLine _
  136.         & "It's not good for you. Thanks for playing though :)", vbOKOnly, "Game Over"
  137.         End '<-- End ends the game
  138.     Case 2 'Yeay, we won!
  139.         PlaySound "win"
  140.         MsgBox "Hey! You made it! Not too hard I guess..." & vbNewLine _
  141.         & "But thanks for playing anyway! :)", vbOKOnly, "Game Over" '^^^ This _ can be used to break statments into several lines
  142.         End '<-- End ends the game
  143.     End Select
  144.     
  145. End Sub
  146.  
  147. Public Function PlaySound(File As String)
  148.     wFlags% = SND_ASYNC Or SND_NODEFAULT 'Dont mind this, just copy it if you don't understand :)
  149.     Svar = sndPlaySound(App.Path & "\" & File & ".wav", wFlags%)
  150. End Function
  151.