Prepare a scenario diagram for Problem
Problem 1:
Here is an interaction in a tic-tac-toe game, with user input in bold:
>> gm = Game.new('andy', 'mike')
=> #
>> gm.play_game('mike')
Mike, enter your next O move (1-9): 1
O - -
- - -
- - -
Andy, enter your next X move (1-9): 3
O - X
- - -
- - -
Mike, enter your next O move (1-9): 5
O - X
- O -
- - -
Andy, enter your next X move (1-9): 3
Bad move dude! You go again.
O - X
- O -
- - -
Andy, enter your next X move (1-9): 6
O - X
- O X
- - -
Mike, enter your next O move (1-9): 9
O - X
- O X
- - O
Mike, you won!
=> nil
>> gm.play_game('karen')
I don't know that player. Please try again. => nil
>> gm.play_game('andy')
Andy, enter your next O move (1-9): 5
- - -
- O -
- - -
When a new game is created, two players register with it by name (the arguments to Game.new). The play_game message is called with one of the player's names and starts a new game where that player plays first using the O marker. (A game can be sent repeated play_game messages so the same pair of players can play multiple games). In each iteration, the current player is prompted for the position of her move and then she enters the move number, where the nine squares are numbered in row-major order from 1 through 9. If a move is illegal (i.e., already occupied), the current player is scolded and prompted again for a move. After each move, the board is redrawn. A game ends when either one of the players forms a horizontal, vertical, or diagonal row of her three markers (in the usual way), or the board is full indicating a tie.
The assignment is not to implement this game in Ruby. Rather, the assignment is to use scenario diagrams to discover the objects, their responsibilities, and the messages they respond to. Specifically, focus on the scenario of a typical iteration: If the current game is not over, the current player is prompted for a legal move which she supplies and then the move is made and the current game board is displayed. Hand in a single scenario diagram that you believe represents your best design.