home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / jpi / ai.bas < prev    next >
Encoding:
BASIC Source File  |  1998-01-29  |  1.8 KB  |  57 lines

  1. Attribute VB_Name = "AI"
  2. Private Type CompAI
  3.   Active As Boolean
  4.   PlayerIndex As Integer
  5.   Difficulty As Integer
  6. End Type
  7. Global ComputerPlayers(10) As CompAI
  8. Global MaxComputerPlayers As Integer
  9. Public Sub GenerateComputerPlayer(Difficulty, PlayerIndex)
  10. MaxComputerPlayers = MaxComputerPlayers + 1
  11. CompNum = MaxComputerPlayers
  12. ComputerPlayers(CompNum).Active = True
  13. ComputerPlayers(CompNum).Difficulty = Difficulty
  14. ComputerPlayers(CompNum).PlayerIndex = PlayerIndex
  15. End Sub
  16. Public Sub DestroyComputerPlayers()
  17. For I = 1 To MaxComputerPlayers
  18.   ComputerPlayers(I).Active = False
  19. Next I
  20. End Sub
  21. Public Sub RunComputerPlayers()
  22. For I = 1 To MaxComputerPlayers
  23.   If ComputerPlayers(I).Active = True Then
  24.     Call RunIntelligence(I)
  25.   End If
  26. Next I
  27. End Sub
  28. Public Static Sub RunIntelligence(CompNumber)
  29. MyPlayerIndex = ComputerPlayers(CompNumber).PlayerIndex
  30. Objectsavailable = 0
  31. For I = 1 To ObjectsActive
  32.   If Objects(I).Side <> MyPlayerIndex Then
  33.     If Objects(I).Active = True Then
  34.       Objectsavailable = Objectsavailable + 1
  35.     End If
  36.   End If
  37. Next I
  38. For I = 1 To ObjectsActive
  39.   If ObjModels(Objects(I).ModelIndex).BehaviorType = BEHAVIORMODE_TANK Then
  40.     If Objects(I).Side = MyPlayerIndex Then
  41.     
  42.       If Objects(I).Objective.Goal = GOAL_NOTHING Then
  43.         For i2 = 1 To ObjectsActive
  44.           If Objects(i2).Side <> MyPlayerIndex Then
  45.             If Objects(i2).Active = True Then
  46.               If ObjModels(Objects(i2).ModelIndex).Abilities(ABILITY_HITTABLE) = True Then
  47.                 If Int(Objectsavailable * Rnd) = 1 Then Call Entities.ObjectCommand_AttackObject(I, i2, Objects(i2).MapPosition.X, Objects(i2).MapPosition.Y)
  48.               End If
  49.             End If
  50.           End If
  51.         Next i2
  52.       End If
  53.     End If
  54.   End If
  55. Next I
  56. End Sub
  57.