X in row (java)

The functionalities below are required:
    Provide an entry screen as a JPanel containing GUI objects for players to:
    Enter Player 1s name
    Enter Player 2s name
    Have options for either player 1 to start or randomly select who moves first
    The dimensions of the board: rectangular, at least 3 but no more than 12 rows & columns
    The number of placements in a row required for victory, at least 3 but no more than 6
    A button to confirm the selected options and begin play
    After confirming the options, gameplay will begin. Display the game board in a different JPanel object, which is updated after each move. This JPanel will have a grid layout of the specified number of rows and columns. Each square should use a subclass of JPanel with custom graphics to display, appropriately, one of the following:
    Which squares are unclaimed, shown as blank
    Player 1 moves shown as X
    Player 2 moves shown as O
    All squares should have a solid border to facilitate accurate selection
    Gameplay:
    Players make moves by using a mouse and clicking on unclaimed squares (assume hotseat, where both players take turns using the mouse) the interface classes MouseListener and MouseMotionListener are recommended
    After each move, the game should check for victory or a tie (if no further moves are possible)
    If a player selects an invalid move (a square previously selected by either player), the application should throw an Exception. This Exception will be caught and catching it will display a dialog box reminding the player to only select unclaimed squares. Closing the dialog box will resume normal gameplay.
    Extra Credit (10pts): Check for a tie, when neither player could possibly get enough placements in a row to win
    Games should conclude with a dialog box including:
    Announcement of result and congratulations to winner (if any)
    Options to exit the application or return to the entry screen and begin a new game
    Attempting to close the window should:
    Before or after a game: Close the window and exit the game.
    During a game: Provide a dialog box asking if the player really wants to quit and options for closing the window (and aborting the game) or not.

You can leave a response, or trackback from your own site.