% Represents the Hex Game itself. Contains a board and players.
classdef Game < handle
  properties
    % the Game's Board
    board
    % cell array of Players
    players
    % boolean value whether Game has ended
    ended
    % GUI component, text field for displaying the 
    % current turn's player
    turnText
  end
  methods
      % Game(Player, Player, Number) -> Game
      %
      % Creates a Game with the given players and board size
      % calls: Board(boardSize)
      function game = Game(player1, player2, boardSize)
          
      end

      % Initializes the Matlab Figure.
      % Sets properties for 'name', 'NumberTitle', 'menubar', and 'Tag'
      %  on the current figure.
      % Sets axis off.
      % Creates a 'Close' button with callback to @closeHexGame.
      % Creates game.turnText as a GUI text component with turn 
      %  set to the first player.
      %
      % contains: function [] = closeHexGame(source, eventdata, handles)
      % calls: figure(1)    
      function [] = initializeFigure(game)
          function [] = closeHexGame(source, eventdata, handles)
          end
      end
      
      % Draws the game by initializing the Matlab Figure, drawing the board,
      %  and drawing the boundaries of the board.
      %
      % calls: game.initializeFigure, game.board.draw, game.board.drawBoundaries
      function [] = draw(game)
      end
      
      % Starts the game. The game alternates between the two players, asking
      %  for their next move. Sets the text for game.turnText to the current
      %  player whose turn it is. The game stops when one of the players has won
      %  or when game.ended is true. After the game is won, the winner is
      %  shown.
      %
      % calls: game.draw, player.getMove, board.play, game.showWinner
     function [] = start(game)
     end %start
    
    % showWinner(Game, [Number Number]) -> graphics
    % Shows the winner of the game by finding the winning path,
    %  showing this path, and adding a GUI component text field
    %  that displays which player won the game
    %
    % calls: board.getWinningPath, board.showPath 
    function [] = showWinner(game, move) 
    end
  end
end