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

  1. $PBExportHeader$tictactoe_computer.sru
  2. $PBExportComments$Generated by ObjectTeam
  3. forward
  4. global type tictactoe_computer from nonvisualobject
  5. end type
  6. end forward
  7.  
  8. shared variables
  9. // User defined attributes
  10.  
  11. // Non modeled user defined attributes
  12.  
  13. end variables
  14.  
  15. global type tictactoe_computer from nonvisualobject
  16. end type
  17. global tictactoe_computer tictactoe_computer
  18.  
  19. type variables
  20. // User defined attributes
  21. string id = ''
  22.  
  23. // Association attributes
  24. private tictactoe_game game
  25. public tictactoe_gui gui
  26.  
  27. // Non modeled user defined attributes
  28.  
  29. // Control to class mappings
  30. //    tictactoe_computer --> TicTacToe_Computer
  31. end variables
  32.  
  33. forward prototypes
  34. public subroutine checkTurn ()
  35. public subroutine selectCell ()
  36. public function integer getMaxValue (integer x)
  37. public subroutine setGame (tictactoe_game newGame)
  38. public function tictactoe_game getGame ()
  39. public subroutine removeGui ()
  40. public subroutine setGui (tictactoe_gui newGui)
  41. public function tictactoe_gui getGui ()
  42. end prototypes
  43.  
  44. public subroutine checkTurn ();//
  45. IF (id = (game.getactiveplayer())) THEN
  46.     selectCell()
  47. END IF
  48. end subroutine
  49.  
  50. public subroutine selectCell ();//
  51. integer i, temp
  52. integer maxI = 0
  53. integer selection = -1
  54. tictactoe_cell cell
  55.  
  56. FOR i = 1 TO 9
  57.     cell = game.getboard(i)
  58.     IF cell.contents = ' ' THEN
  59.         temp = getMaxValue(i)
  60.         IF ((maxI < temp) OR (selection = -1)) THEN
  61.             maxI = temp
  62.             selection = i
  63.         END IF
  64.     END IF
  65. NEXT
  66. IF (selection <> -1) THEN
  67.     gui.cellButtonClick(selection)
  68. END IF
  69. end subroutine
  70.  
  71. public function integer getMaxValue (integer x);//
  72. integer i, temp
  73. integer retValue = -1
  74. tictactoe_cell cell
  75.  
  76. cell = game.getboard(x)
  77. FOR i = 1 TO Len(game.players)
  78.     cell.contents = Mid(game.players, i, 1)
  79.     temp = cell.getMaxLine()
  80.     IF ((retValue < temp) OR (retValue = -1)) THEN
  81.         retValue = temp
  82.     END IF
  83. NEXT
  84. cell.contents = ' '
  85. return retValue
  86. end function
  87.  
  88. public subroutine setGame (tictactoe_game newGame);// Association accessor method
  89. if isNull(newGame) then
  90.     return
  91. end if
  92. game = newGame
  93. end subroutine
  94.  
  95. public function tictactoe_game getGame ();// Association accessor method
  96. return game
  97. end function
  98.  
  99. public subroutine removeGui ();// Association accessor method
  100. if not isNull(gui) then
  101.     setNull(gui.computer)
  102. end if
  103. setNull(gui)
  104. end subroutine
  105.  
  106. public subroutine setGui (tictactoe_gui newGui);// Association accessor method
  107. if not isNull(gui) then
  108.     setNull(gui.computer)
  109. end if
  110. if not isNull(newGui) then
  111.     TicTacToe_Computer nullRef
  112.     setNull(nullRef)
  113.     newGui.setComputer(nullRef)
  114.     newGui.computer = this
  115. end if
  116. gui = newGui
  117. end subroutine
  118.  
  119. public function tictactoe_gui getGui ();// Association accessor method
  120. return gui
  121. end function
  122.  
  123. on tictactoe_computer.create
  124. TriggerEvent( this, "constructor" )
  125. end on
  126.  
  127. on tictactoe_computer.destroy
  128. TriggerEvent( this, "destructor" )
  129. end on
  130.  
  131. event constructor;setNull(game)
  132. setNull(gui)
  133. // Start user code section
  134. // End user code section
  135. end event
  136.  
  137. event destructor;// Start user code section
  138. // End user code section
  139. setNull(game)
  140. if not isNull(gui) then
  141.     setNull(gui.computer)
  142. end if
  143. setNull(gui)
  144. end event
  145.  
  146.