home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / TicTacToe_Computer.cls < prev    next >
Text File  |  1997-10-01  |  3KB  |  119 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4. END
  5. Attribute VB_Name = "TicTacToe_Computer"
  6. Attribute VB_GlobalNameSpace = False
  7. Attribute VB_Creatable = False
  8. Attribute VB_PredeclaredId = False
  9. Attribute VB_Exposed = False
  10. '
  11. ' File          : TicTacToe_Computer.cls
  12. '
  13. ' Project       : demo
  14. ' Configuration : demo 1
  15. ' Phase         : Implementation 1
  16. ' System        : TicTacToe 1
  17. '
  18. ' The computer opponent.
  19. Option Explicit
  20.  
  21.  
  22. ' Inheritance attributes
  23.  
  24.  
  25. ' Association attributes
  26.  
  27. Public gui_ As TicTacToe_GUI
  28.  
  29. Public game_ As TicTacToe_Game
  30.  
  31.  
  32. ' User defined attributes
  33.  
  34. Private id_ As String
  35. ' Has default value ""
  36.  
  37.  
  38. ' User defined methods
  39.  
  40. Public Sub TicTacToe_Computer_Constructor(a_game As TicTacToe_Game)
  41.     id = ""
  42.     Set game = a_game
  43.     ' Start user section
  44.     ' End user section
  45. End Sub
  46.  
  47. Private Sub Class_Terminate()
  48.     ' Start user section
  49.     ' End user section
  50. End Sub
  51.  
  52. ' Checks if it's its turn.
  53. Public Sub checkTurn()
  54.     If id = game.getActivePlayer Then selectCell
  55. End Sub
  56.  
  57. ' Chooses a good empty cell.
  58. Public Sub selectCell()
  59.     Dim i As Integer
  60.     Dim maxi, temp As Integer
  61.     Dim selection As Integer
  62.     selection = -1
  63.     
  64.     For i = 0 To (gui.numberOfCells - 1)
  65.         If game.board(i).contents = "" Then
  66.             temp = getMaxValue(i)
  67.             If maxi < temp Or selection = -1 Then
  68.                 maxi = temp
  69.                 selection = i
  70.             End If
  71.         End If
  72.     Next i
  73.     
  74.     If selection <> -1 Then gui.CellButton_Click (selection)
  75. End Sub
  76.  
  77. ' Determines the strategic value of the specified empty cell.
  78. Public Function getMaxValue(x As Integer) As Integer
  79.     Dim i As Integer
  80.     Dim temp As Integer
  81.     getMaxValue = -1
  82.     
  83.     For i = 1 To Len(game.players)
  84.         game.board(x).contents = Mid(game.players, i, 1)
  85.         temp = game.board(x).getMaxLine
  86.         If getMaxValue < temp Or getMaxValue = -1 Then getMaxValue = temp
  87.     Next i
  88.     game.board(x).contents = ""
  89. End Function
  90.  
  91.  
  92. ' Access methods
  93.  
  94. Public Property Get id() As String
  95.     id = id_
  96. End Property
  97.  
  98. Public Property Let id(x As String)
  99.     id_ = x
  100. End Property
  101.  
  102.  
  103. ' Association methods
  104.  
  105. Public Property Get gui() As TicTacToe_GUI
  106.     Set gui = gui_
  107. End Property
  108.  
  109. Public Property Get game() As TicTacToe_Game
  110.     Set game = game_
  111. End Property
  112.  
  113. Public Property Set game(x As TicTacToe_Game)
  114.     If Not (x Is Nothing) Then
  115.         Set game_ = x
  116.     End If
  117. End Property
  118.  
  119.