Android Game Suite CS 430 Requirements Specification February 14th, 2010 Benjamin Carpenter Ryan Daugherty Jack Dehlin Jay Greene 1 Table of Contents 1.0 Introduction ................................................................................................................. 8 1.1 Goals and objectives ............................................................................................... 8 1.2 Statement of scope ................................................................................................... 8 1.3 Software context ...................................................................................................... 8 1.4 Major constraints .................................................................................................... 8 2.0 Usage scenario ............................................................................................................. 8 2.1 User profiles ............................................................................................................. 8 2.2 Use-cases .................................................................................................................. 8 3.0 Word Search ................................................................................................................ 9 3.1 Data Description...................................................................................................... 9 3.1.1 Data objects .................................................................................................... 10 3.1.2 Relationships .................................................................................................. 10 3.1.3 Complete data model ..................................................................................... 10 3.1.4 Data dictionary ............................................................................................... 10 3.2 Functional Model and Description ...................................................................... 10 3.2.1 Description for Functions .............................................................................. 10 3.2.1.1 Startup...................................................................................................... 10 3.2.1.2 New Game .................................................................................................11 3.2.1.2.1 Create Random Puzzle .....................................................................11 3.2.1.3 Main Game Function ...............................................................................11 3.2.1.3.1 Draw the Board .................................................................................11 3.2.1.3.2 Select Letters .....................................................................................11 3.2.1.4 Menu Functions ........................................................................................11 3.2.1.4.1 Submit a Word ..................................................................................11 3.2.1.4.1.1 Dictionary Check ...................................................................... 12 3.2.1.4.2 Clear the Board ................................................................................ 12 3.2.1.4.3 Help ................................................................................................... 12 3.2.1.4.4 View Submitted Words .................................................................... 12 3.2.1.4.5 Finish Game ...................................................................................... 12 3.2.1.4.5.1 Calculate Score .......................................................................... 12 3.2.1.5 High Score............................................................................................ 12 3.2.1.6 Exit Game ............................................................................................ 12 3.2.2 Software Interface Description ..................................................................... 12 3.2.2.1 External machine interfaces................................................................... 12 3.2.2.2 External system interfaces ..................................................................... 13 3.2.2.3 Human interface...................................................................................... 13 3.2.3 Control flow description ................................................................................ 13 3.3 Behavioral Model and Description ...................................................................... 13 3.3.1 Description for software behavior ................................................................ 13 3.3.1.1 Events ....................................................................................................... 13 3.3.1.1.1 New Game Button Pressed .............................................................. 13 3.3.1.1.2 Letter Selected .................................................................................. 13 3.3.1.1.3 Menu Button Pressed ....................................................................... 13 3.3.1.1.4 Submit Button Pressed .................................................................... 13 2 3.3.1.1.5 Word is not Misspelled .................................................................... 13 3.3.1.1.6 Word is Misspelled ........................................................................... 14 3.3.1.1.7 Letters are in Correct Positions ...................................................... 14 3.3.1.1.8 Letters are not in Correct Positions ............................................... 14 3.3.1.1.9 Help Button Pressed ........................................................................ 14 3.3.1.1.10 View Submitted Button Pressed ................................................... 14 3.3.1.1.11 Clear Selected Button Pressed ...................................................... 14 3.3.1.1.12 Finished Button Pressed ................................................................ 14 3.3.1.1.13 No High Score is Found ................................................................. 14 3.3.1.1.14 High Score is Found ....................................................................... 14 3.3.1.2 States ........................................................................................................ 14 3.3.1.2.1 Main Menu ....................................................................................... 14 3.3.1.2.2 Select Letter ...................................................................................... 14 3.3.1.2.3 In Game Menu.................................................................................. 14 3.3.1.2.3 Submit Word .................................................................................... 15 3.3.1.2.4 Clear Selection .................................................................................. 15 3.3.1.2.5 View Submitted ................................................................................ 15 3.3.1.2.6 Show Help ......................................................................................... 15 3.3.1.2.7 Finish game ....................................................................................... 15 3.3.1.2.8 Display Score 0 ................................................................................. 15 3.3.1.2.9 Display High Score ........................................................................... 15 3.3.1.2.10 Shakes Screen ................................................................................. 15 3.3.1.2.11 Highlights Letters ........................................................................... 15 3.3.1.2.12 Highlight Letter .............................................................................. 15 3.3.2 State Transition Diagrams ............................................................................. 15 4.0 Connect Four ............................................................................................................... 16 4.1 Data Description.................................................................................................... 16 4.1.1 Data objects .................................................................................................... 16 4.1.2 Relationships .................................................................................................. 16 4.1.3 Data dictionary ............................................................................................... 17 4.2 Functional Model and Description ...................................................................... 17 4.2.1 Description for Functions .............................................................................. 17 4.2.1.1 Startup...................................................................................................... 17 4.2.1.2 New Game ................................................................................................ 17 4.2.1.3 Main Game Function .............................................................................. 17 4.2.1.3.1 Placing a Chip .................................................................................. 17 4.2.1.3.2 Check for Victory ............................................................................. 17 4.2.1.4 Menu Functions ....................................................................................... 17 4.2.1.4.1 New Game ......................................................................................... 17 4.2.1.4.2 Help ................................................................................................... 18 4.2.1.4.4 View Wins ......................................................................................... 18 4.2.1.4.5 Exit .................................................................................................... 18 4.2.2 Software Interface Description ..................................................................... 18 4.2.2.1 External machine interfaces................................................................... 18 4.2.2.3 Human interface...................................................................................... 18 4.2.3 Control flow description ................................................................................ 18 3 4.3 Behavioral Model and Description ...................................................................... 18 4.3.1 Description for software behavior ................................................................ 18 4.3.1.1 Events ....................................................................................................... 18 4.3.1.1.1 New Game Button Pressed .............................................................. 18 4.3.1.1.2 Column Selected ............................................................................... 18 4.3.1.1.3 Menu Button Pressed ....................................................................... 19 4.3.1.1.4 Column is Full .................................................................................. 19 4.3.1.1.5 All Columns are full ......................................................................... 19 4.3.1.1.6 Player Gets Four in a Row .............................................................. 19 4.3.1.1.7 Help Button Pressed ........................................................................ 19 4.3.1.1.8 Exit Button Pressed.......................................................................... 19 4.3.1.1.9 View Wins Button is Pressed ........................................................... 19 4.3.1.2 States ........................................................................................................ 19 4.3.1.2.1 Main Menu ....................................................................................... 19 4.3.1.2.2 Select Column ................................................................................... 19 4.3.1.2.3 In Game Menu.................................................................................. 19 4.3.1.2.6 Show Help ......................................................................................... 19 4.3.1.2.7 Exit game .......................................................................................... 20 4.3.1.2.8 Display Wins 0 .................................................................................. 20 4.3.1.2.9 Display Wins ..................................................................................... 20 4.3.1.2.10 Shakes Screen ................................................................................. 20 4.3.2 State Transition Diagrams ............................................................................. 20 5.0 Battle Ship.................................................................................................................. 21 5.1 Data Description.................................................................................................... 21 5.1.1 Data objects .................................................................................................... 21 5.1.2 Relationships .................................................................................................. 21 5.1.3 Complete data model ..................................................................................... 21 Figure six: Battle Ship Complete Data Model ...................................................... 21 5.2 Functional Model and Description ...................................................................... 21 5.2.1 Description for Functions .............................................................................. 21 5.2.1.1 New Game ................................................................................................ 21 5.2.1.2 Make Move .............................................................................................. 22 5.2.1.2 Game Over ............................................................................................... 22 5.2.2 Software Interface Description ..................................................................... 22 5.2.3 Control flow description ................................................................................ 22 5.3 Behavioral Model and Description ...................................................................... 22 5.3.1 Description for software behavior ................................................................ 22 5.3.1.1 Events ....................................................................................................... 22 5.3.1.1.1 New Game (Place Ships).................................................................. 22 5.3.1.1.2 Perform Move................................................................................... 22 5.3.1.1.3 Game Over ........................................................................................ 22 5.3.1.2 States ........................................................................................................ 22 5.3.1.2.1 Main Menu ....................................................................................... 22 5.3.1.2.2 Playing Game ................................................................................... 23 5.3.2 State Transition Diagrams ............................................................................. 23 6.0 Word Guesser ............................................................................................................ 23 4 6.1 Data Description.................................................................................................... 23 6.1.1 Data objects .................................................................................................... 23 6.1.2 Relationships .................................................................................................. 24 6.1.3 Complete data model ..................................................................................... 24 6.1.4 Data dictionary ............................................................................................... 24 6.2 Functional Model and Description ...................................................................... 25 6.2.1 Description for Functions .............................................................................. 25 6.2.1.1 Start Up .................................................................................................... 25 6.2.1.2 New Game ................................................................................................ 25 6.2.1.2.1 Answer Generator ............................................................................ 25 6.2.1.3 Main Game Function .............................................................................. 25 6.2.1.3.1 Submit Guess Function.................................................................... 25 6.2.1.3.2 Split Functional ................................................................................ 25 6.2.1.3.3 Compare Function ........................................................................... 26 6.2.1.3.4 Set Color Function ........................................................................... 26 6.2.1.4 Menu Functions ....................................................................................... 26 6.2.1.4.1 Help ................................................................................................... 26 6.2.1.4.2 New Game ......................................................................................... 26 6.2.1.4.3 View High Score ............................................................................... 26 6.2.1.4.4 Finish Game ...................................................................................... 27 6.2.1.4.4.1 Calculate Score .......................................................................... 27 6.2.1.4.4.2 High Score.................................................................................. 27 3.2.1.5 Exit Game ................................................................................................ 27 6.2.2 Software Interface Description ..................................................................... 27 6.2.2.1 External machine interfaces................................................................... 27 6.2.2.2 External system interfaces ..................................................................... 27 6.2.2.3 Human interface...................................................................................... 27 6.2.3 Control flow description ................................................................................ 28 6.3 Behavioral Model and Description ...................................................................... 28 6.3.1 Description for software behavior ................................................................ 28 6.3.1.1 Events ....................................................................................................... 28 6.3.1.1.1 New Game Button Presses............................................................... 28 6.3.1.1.2 Menu Button Pressed ....................................................................... 28 6.3.1.1.3 OK Button Pressed .......................................................................... 28 6.3.1.1.4 Guess is Invalid ................................................................................ 28 6.3.1.1.5 Character Not Found ....................................................................... 28 6.3.1.1.6 Character Found in Correct Position............................................. 28 6.3.1.1.7 Character Found in Incorrect Position .......................................... 28 6.3.1.1.8 View High Score Button Pressed .................................................... 28 6.3.1.1.9 Help Button Pressed ........................................................................ 28 6.3.1.1.10 New Game Button Pressed ............................................................ 29 6.3.1.1.11 Finish Game Button Pressed ......................................................... 29 6.3.1.1.12 No High Score Found..................................................................... 29 6.3.1.1.13 High Score Found .......................................................................... 29 6.3.1.2 States ........................................................................................................ 29 6.3.1.2.1 Main Menu ....................................................................................... 29 5 6.3.1.2.2 Enter Guess ....................................................................................... 29 6.3.1.2.3 In Game Menu.................................................................................. 29 6.3.1.2.4 Submit Guess .................................................................................... 29 6.3.1.2.5 New Game ......................................................................................... 29 6.3.1.2.6 Finish Game ...................................................................................... 29 6.3.1.2.7 Show Help ......................................................................................... 30 6.3.1.2.8 Display Score 0 ................................................................................. 30 6.3.1.2.9 Display High Score ........................................................................... 30 6.3.1.2.10 Highlights Letter ............................................................................ 30 6.3.2 State Transition Diagrams ............................................................................. 30 7.0 Sudoku ....................................................................................................................... 31 7.1 Data Description.................................................................................................... 31 7.1.1 Data objects .................................................................................................... 31 7.1.2 Relationships .................................................................................................. 32 7.1.3 Complete data model ..................................................................................... 32 7.1.4 Data dictionary ............................................................................................... 32 7.2 Functional Model and Description ...................................................................... 32 7.2.1 Description for Functions .............................................................................. 32 7.2.1.1 Startup...................................................................................................... 32 7.2.1.2 Main Menu .............................................................................................. 32 7.2.1.2.1 About ................................................................................................. 32 7.2.1.2.2 Settings .............................................................................................. 32 7.2.1.2.2.1 Music .......................................................................................... 33 7.2.1.2.2.2 Hints ........................................................................................... 33 7.2.1.2.3 Exit .................................................................................................... 33 7.2.1.3 New Game ................................................................................................ 33 7.2.1.3.1 Difficulty ........................................................................................... 33 7.2.1.3.2 Load Puzzle....................................................................................... 33 7.2.1.4 Main Game .............................................................................................. 33 7.2.1.4.1 Draw Board ...................................................................................... 33 7.2.1.4.2 Select Tile .......................................................................................... 33 7.2.1.4.3 Select Numbers ................................................................................. 33 7.2.1.4.4 Hints .................................................................................................. 34 7.2.1.4.5 End Game ......................................................................................... 34 7.2.2 Software Interface Description ..................................................................... 34 7.2.2.1 External machine interfaces................................................................... 34 7.2.2.2 External system interfaces ..................................................................... 34 7.2.2.3 Human interface...................................................................................... 34 7.2.3 Control flow description ................................................................................ 34 7.3 Behavioral Model and Description ...................................................................... 34 7.3.1 Description for software behavior ................................................................ 34 7.3.1.1 Events ....................................................................................................... 34 7.3.1.1.1 New Game Button Pressed .............................................................. 34 7.3.1.1.2 About Button Pressed ...................................................................... 35 7.3.1.1.3 Exit Button Pressed.......................................................................... 35 7.3.1.1.4 Menu Pressed ................................................................................... 35 6 7.3.1.1.5 Setting Button Pressed ..................................................................... 35 7.3.1.1.6 Hints Option Button Pressed .......................................................... 35 7.3.1.1.7 Music Option Button Pressed ......................................................... 35 7.3.1.1.8 Difficulty Selected ............................................................................ 35 7.3.1.1.9 Tile Selected ...................................................................................... 35 7.3.1.1.10 Draw Board .................................................................................... 35 7.3.1.2 States ........................................................................................................ 35 7.3.1.2.1 Main Menu ....................................................................................... 35 7.3.1.2.2 About ................................................................................................. 35 7.3.1.2.3 Exit .................................................................................................... 35 7.3.1.2.4 Menu.................................................................................................. 36 7.3.1.2.5 Settings .............................................................................................. 36 7.3.1.2.6 Hints .................................................................................................. 36 7.3.1.2.7 Music ................................................................................................. 36 7.3.1.2.8 Difficulty Selected ............................................................................ 36 7.3.1.2.9 Tile Select .......................................................................................... 36 7.3.1.2.10 Number Select ................................................................................ 36 7.3.2 State Transition Diagrams ............................................................................. 36 8.0 Restrictions, Limitations, and Constraints ............................................................. 37 9.0 Validation Criteria .................................................................................................... 37 9.1 Classes of tests ....................................................................................................... 37 9.1.1 Welcome Screen.............................................................................................. 37 9.1.2 Word Search ................................................................................................... 38 9.1.3 Connect Four .................................................................................................. 38 9.1.4 Battleship ........................................................................................................ 38 9.1.5 Hangman ......................................................................................................... 38 9.1.6 Sudoku ............................................................................................................ 38 9.2 Expected software response ................................................................................. 38 9.2.1 Welcome Screen.............................................................................................. 38 9.2.2 Word Search ................................................................................................... 38 9.2.3 Connect Four .................................................................................................. 38 9.2.4 Battleship ........................................................................................................ 39 9.2.5 Hangman ......................................................................................................... 39 9.2.6 Sudoku ............................................................................................................ 39 9.3 Performance bounds ............................................................................................. 39 10.0 Appendices ............................................................................................................... 39 10.1 Product Strategies ............................................................................................... 39 10.2 Supplementary information ............................................................................... 39 7 1.0 Introduction This document specifies the requirements for the production and design of the Game Suite software for the Google Android operating system. The product will be a suite of five simple and easy games for a user to play. The games include a word search, connect four, battle ship, hangman, and a Sudoku. The first four games will be uniquely developed and the fifth will use an open source Sudoku. The user interface will be easy to use and allow the user to go in-between games with ease. It will use the cell phone operating system Android, which is on a lot of cell phones today. The android operating system uses a market place to sell applications for the phone. 1.1 Goals and objectives The goal of this project is to produce an interactive and entertaining application for the Android marketplace. This app will be a suite of several smaller games, one of which is open source, the rest custom made. They will be playable on any phone supporting the android operating system with access to the internet. 1.2 Statement of scope The only input to this project is the user's attention and strategic moves; and the only output is the entertainment that is a consequence of the input. 1.3 Software context The big picture of this project will be to provide entertainment for anyone with access to an Android device. 1.4 Major constraints Since this project can easily be broken down into many smaller functioning parts, there are few major constraints. As long as the Android Marketplace is up and running and people are still using the Android OS, it will be possible to market, maintain, and operate this application. 2.0 Usage scenario 2.1 User profiles Users of the system will be anyone who has a mobile device operating the Android OS with access to the Android Marketplace. The application will be accessible to everyone by these means and require only navigation of the menus and games through the touch-screen interface. 2.2 Use-cases Figures one and two show the different use cases for the game suite. Figure one show the interaction between the user and the Android OS. Figure two show the interaction between the user and the main menu. 8 Figure One: Use Case Diagram for interaction with the user and the Android OS Figure Two: Use Case Diagram for interaction with the user and the main menu 3.0 Word Search 3.1 Data Description The word search utilizes a couple of different data objects. These objects are used for passing data around and keeping track of information. The data keeps track of selected letters, selected words, and game scores. 9 3.1.1 Data objects The first data object is the user. The user will select letters to make words for the word search. The letter themselves are characters. Multiple selected letters are formed to make a string. Once the user is content with the selected word, it can be submitted to check if it is actually a word. The second data object is the collection of selected words. These words are stored in the form of a string and an array of tiles. If the submitted word is correct it is appended to the collection of selected words. If it is wrong then the word is discarded. The third data object is the final score when the game is ended. The score is calculated by counting the number of letters submitted in the selected words. The game will locally keep the highest score for display. 3.1.2 Relationships The relationships between the data objects above can be seen in the figure below. The user will submit data and the program will pass around that data. 3.1.3 Complete data model Figure three: Word Search Complete Data Model 3.1.4 Data dictionary All the data except for the high score is only stored when it is running. Once the program is ended all data will be discarded. The high score will be stored on the phones memory and shown at the startup screen. 3.2 Functional Model and Description 3.2.1 Description for Functions 3.2.1.1 Startup 10 This function is initiated when the word search game is pressed from the home screen. The function starts a new activity that shows the main menu for the game. 3.2.1.2 New Game This function is initiated at the initial screen when the new game button is pressed. After the button is pressed, it creates a random puzzle, draws the board, then passes of the responsibility to the main game function. 3.2.1.2.1 Create Random Puzzle When a new game is started, this function randomly picks 81 numbers. The range of the numbers is 0 to 25 and is then converted to character to represent a letter. The letters are then stored in an array. 3.2.1.3 Main Game Function After a new game is started, the main game function runs functions to watch the user actions and act accordingly. 3.2.1.3.1 Draw the Board Every time an action or function is called the board is redrawn to show the changes. The function draws a 9x9 board with the letters inserted into each position. The function looks at an array to see which words were already correctly selected. These words are drawn a different color. 3.2.1.3.2 Select Letters This function is supported by the android onclicklistener. When a user selects a letter, it records it in an array. It keeps track of the order that the user presses the letters in. 3.2.1.4 Menu Functions During the game the user can press the menu button to bring up options. The menu option is used to conserve space on the screen. 3.2.1.4.1 Submit a Word After letters are selected the user can submit the word to see if it is a correct word. The function calls dictionary check and gets the result. If it is a word, then the word is added to the submitted word data object. If it is not a word, then the screen shakes. After the word functions are done, the selected is cleared with the clear function. 11 3.2.1.4.1.1 Dictionary Check When a word is passed into this function it uses the Google online dictionary search. It gets the source page of the search and parses it to see if the word is in the dictionary. It returns the result. 3.2.1.4.2 Clear the Board This function clears the board of the selected letters. 3.2.1.4.3 Help This function displays the rules of the game. 3.2.1.4.4 View Submitted Words This function displays the words that have been submitted and that were in the dictionary. 3.2.1.4.5 Finish Game This function ends the current game and takes the user to the main menu of the game. The function uses the calculate score function then displays the score of the game. It ends the new game activity. 3.2.1.4.5.1 Calculate Score This function calculates the final score of the game. It does this by counting the number of letter in the submitted words data object. 3.2.1.5 High Score When a game is finished and the score is calculated, the score is compared to the high score. The higher score is then stored on the phone. The high score is displayed on the main screen of the game. 3.2.1.6 Exit Game This function exits the game’s main menu back to the game suite’s main menu. 3.2.2 Software Interface Description Word search uses one interface that the user can see. The one that they see is through the cell phone. The cell phone must be running the Android operating system. The game also interfaces with Google web dictionary search, but it is not seen. 3.2.2.1 External machine interfaces The game will run on two different machines. One is an emulator of a cell phone that is used for development and testing. The other 12 is the user’s cell phone that hosts the game. The game must be compatible with the Android operating system. 3.2.2.2 External system interfaces To play the game, the user must be connected to the internet either through the phone’s data network or Wi-Fi. The Google web dictionary search is to check to make sure the word exists and is not seen by the user. 3.2.2.3 Human interface This is the main interface that the user will interact with. The interface will allow the user to use the phones touch screen services and analog buttons. This interface is clear and easy to use. It shows buttons and text so the user can understand what is going on. 3.2.3 Control flow description The control flow of the word search starts when the user starts a new game. After the new game is started there will be different states of the game. This continues till the game is finished. This described in section 5.0 and its subsections. 3.3 Behavioral Model and Description 3.3.1 Description for software behavior 3.3.1.1 Events 3.3.1.1.1 New Game Button Pressed A new game is started, puzzle made, board is drawn. 3.3.1.1.2 Letter Selected When the user touches a box, the box is documented. After it is documented then the board is redrawn with the box highlighted. This is done till another event happens. 3.3.1.1.3 Menu Button Pressed When the phone’s menu button is pressed a menu pops up. 3.3.1.1.4 Submit Button Pressed When the submit button is pressed the word is checked to see if it is misspelled or not positioned right. 3.3.1.1.5 Word is not misspelled Word is checked to see if they are in correct positions. 13 3.3.1.1.6 Word is misspelled Selected letters are cleared then the screen shakes. 3.3.1.1.7 Letters are in Correct Positions Word is appended to the submitted word data object then the selected letters are cleared. Letters can only be played if they touch the next letter in the vertical, horizontal, or diagonal direction. 3.3.1.1.8 Letters are not in Correct Positions Selected letters are cleared then the screen shakes. 3.3.1.1.9 Help Button Pressed The rules are shown in a dialog box. 3.3.1.1.10 View Submitted Button Pressed The correctly submitted words are shown in a dialog box. 3.3.1.1.11 Clear Selected Button Pressed Selected letters are cleared from the screen. 3.3.1.1.12 Finished Button Pressed Game is returned to the game’s home screen and the score is calculated and shown. 3.3.1.1.13 No High Score is found A default zero is displayed on the game’s home screen. 3.3.1.1.14 High Score is found The highest score is displayed on the game’s home screen. 3.3.1.2 States 3.3.1.2.1 Main Menu The main menu is displayed with the buttons for a new game and exit. 3.3.1.2.2 Select Letter The board is displayed where a user can select one or multiple letters. 3.3.1.2.3 In Game Menu 14 A menu is displayed that gives the option to submit a word, clear the selection, view submitted, show help, finish game, or go back to select a letter. 3.3.1.2.3 Submit Word Word goes through checks to see if it is a word and in the right position. Word will light up or the screen will shake. Returns to the select a letter screen with the selection cleared. 3.3.1.2.4 Clear Selection The board will be cleared of the selected and return to select a letter. 3.3.1.2.5 View Submitted A dialog box will show the correctly submitted words. 3.3.1.2.6 Show Help A dialog box will show the rules of the game. 3.3.1.2.7 Finish game The game will end a show a dialog box with the score. It will return to the main menu. 3.3.1.2.8 Display Score 0 When a score is not found then a default zero is displayed. 3.3.1.2.9 Display High Score Retrieves and displays high score from memory. 3.3.1.2.10 Shakes Screen Shifts screen by using an offset to appear to be shaking. 3.3.1.2.11 Highlights Letters Turns letters gold when the word is not misspelled and letters are in correct positions. 3.3.1.2.12 Highlight Letter Turns the selected box a different color. 3.3.2 State Transition Diagrams 15 Figure four: Word Search State Diagram 4.0 Connect Four 4.1 Data Description The Connect Four game keeps track of data such as current players turn, current locations of chips in the board, and end game scenarios. 4.1.1 Data objects The first data object is the user. Users will take turns selecting columns on the board in which to drop their chips. The board will be a seven by six array of slots. As each user selects columns to place their chips there locations on the board will be recorded to the array. At the end of each game when a player has achieved four of their chips in a row the number of wins for their color will be increased by one and stored locally. 4.1.2 Relationships 16 The relationships between the data objects above can be seen in the figure below. The user will submit data and the program will pass around that data. 4.1.3 Data dictionary If the game is closed at the end of a round or before any player places a chip when a new game is started then no data is stored other than the tally of wins. If the game is closed mid round then the state of the board is stored locally and reinitialized upon re-launching the application. 4.2 Functional Model and Description 4.2.1 Description for Functions 4.2.1.1 Startup This function is initiated when the Connect Four game is pressed from the home screen. The function starts a new activity that shows the main menu for the game. 4.2.1.2 New Game This function is initiated at the initial screen when the new game button is pressed. After the button is pressed, it creates an empty board of seven by six, draws the board, then passes off the responsibility to the main game function. 4.2.1.3 Main Game Function After a new game is started, the main game function runs functions to watch the user actions and act accordingly. 4.2.1.3.1 Placing a Chip This function is supported by the android onclicklistener. When a player selects a column to place their chip the lowest empty space in that column is changed to their color. 4.2.1.3.2 Check for Victory Each time a chip is placed the game will check if that player has won by trying to find three adjacent chips of their color in any direction. 4.2.1.4 Menu Functions During the game the user can press the menu button to bring up options. The menu option is used to conserve space on the screen. 4.2.1.4.1 New Game This function clears the board and begins a new game. 17 4.2.1.4.2 Help This function displays the rules of the game. 4.2.1.4.4 View Wins This function displays the total number of wins for each color, black and red. 4.2.1.4.5 Exit This function ends the current game and takes the user to the main menu of the game. If any chips have been placed on the board the locations of those chips is stored on the devise and reloaded once the application is restarted. 4.2.2 Software Interface Description Connect Four uses one interface that the user can see. The one that they see is through the cell phone. The cell phone must be running the Android operating system. 4.2.2.1 External machine interfaces The game will run on two different machines. One is an emulator of a cell phone that is used for development and testing. The other is the user’s cell phone that hosts the game. The game must be compatible with the Android operating system. 4.2.2.3 Human interface This is the main interface that the user will interact with. The interface will allow the user to use the phones touch screen services and analog buttons. This interface is clear and easy to use. It shows buttons and text so the user can understand what is going on. 4.2.3 Control flow description The control flow of the Connect Four game starts when the user starts a new game. After the new game is started there will be different states of the game. This continues till the game is finished. 4.3 Behavioral Model and Description 4.3.1 Description for software behavior 4.3.1.1 Events 4.3.1.1.1 New Game Button Pressed A new game is started, empty board is drawn. 4.3.1.1.2 Column Selected When the user touches a box at the top of a column the lowest empty space in that column is switched to 18 that users color. This is done until another event happens. 4.3.1.1.3 Menu Button Pressed When the phone’s menu button is pressed a menu pops up. 4.3.1.1.4 Column is full The screen shakes and the player is allowed to select another column. 4.3.1.1.5 All Columns are full The game ends and a new one begins with an empty board. 4.3.1.1.6 Player Gets Four in a Row The score tally for the winning color is increased and a new game begins. 4.3.1.1.7 Help Button Pressed The rules are shown in a dialog box. 4.3.1.1.8 Exit Button Pressed Game is returned to the game’s home screen and the score is calculated and shown. 4.3.1.1.9 View Wins Button is pressed The total number of wins for each color is displayed. 4.3.1.2 States 4.3.1.2.1 Main Menu The main menu is displayed with the buttons for a new game and exit as well as the number of wins. 4.3.1.2.2 Select Column The board is displayed where a user can select a column to place their chip. The game checks to see if the newly placed chip makes the player a winner. 4.3.1.2.3 In Game Menu A menu is displayed that gives the option to start a new game, view wins, show help, end game, or go back to continue game. 4.3.1.2.6 Show Help A dialog box will show the rules of the game. 19 4.3.1.2.7 Exit game The game will end a show a dialog box with the wins. It will store any currently placed chips and return to the main menu. 4.3.1.2.8 Display Wins 0 When a score is not found then a default zero is displayed. 4.3.1.2.9 Display Wins Retrieves and displays wins from memory. 4.3.1.2.10 Shakes Screen Shifts screen by using an offset to appear to be shaking. 4.3.2 State Transition Diagrams 20 Figure five: Connect Four Data Model 5.0 Battle Ship 5.1 Data Description The game battleship utilizes integer arrays to store locations of ships and moves played. There are also Strings that contain such things as high score tables and other user-related information. 5.1.1 Data objects The first integer array contains a list of ship placements made when the game first begins. The second array contains a list of moves made. By comparing the two, a 22x11 grid can be displayed. The top 11 coordinates displaying moves already played, the bottom 11 displaying the players remaining ships. 5.1.2 Relationships The data relationships can be seen in the graph below. The first two arrays are made independently through game progression. The Game Board is then computed by comparing the two. 5.1.3 Complete data model Figure six: Battle Ship Complete Data Model 5.2 Functional Model and Description 5.2.1 Description for Functions 5.2.1.1 New Game When this function is initialized it sets up the data objects for the game. It allows for the user to customize their ship placements and randomizes a ship placement for the computer. It then generates the grid to be displayed. 21 5.2.1.2 Make Move Once the board is set up, the user is prompted to make a move. After a move is made, it is compared to the data arrays to check for hits, misses, repeats, etc. The process is then randomly repeated for the computer. 5.2.1.2 Game Over This function is called when the game recognizes that either the user or computer as hit every coordinate of the opposing ship placements. It will record a high score and prompt the user to play again. 5.2.2 Software Interface Description The software interface is the same as the previous programs. It requires a touch screen, Android-run device capable of internet connection. 5.2.3 Control flow description The control of the game jumps between the user and the computer as moves are made. It begins when the game is initialized and ships are placed and ends when a player has won. 5.3 Behavioral Model and Description 5.3.1 Description for software behavior 5.3.1.1 Events 5.3.1.1.1 New Game (Place Ships) A Difficulty is selected and ships are placed by the User and Computer. A Game Board is this created. 5.3.1.1.2 Perform Move The User is prompted to make a move. The move is then compared against the existing data. The computer follows in turn and the user is prompted again. 5.3.1.1.3 Game Over When the game senses that no enemy ships remain, then the game is over. The Player is then prompted to play again. Yes takes the player back to the New Game event; No takes the user back to the Main Menu. 5.3.1.2 States 5.3.1.2.1 Main Menu The user has the option to set the difficulty of the game, view high scores, and start a new game. 22 5.3.1.2.2 Playing Game The User and Computer alternate performing moves until someone wins or the game is prematurely ended. 5.3.2 State Transition Diagrams Figure seven: Battle Ship State Diagram 6.0 Word Guesser 6.1 Data Description The word guessers utilizes a few different data objects each of which are uses for passes data around the program and keeping track of information. The data keeps track of the correct answer to the word guess as well as each individual character within the answer, each individual word – also tracking each individual character within each guess, as well as the number of individual guesses. 6.1.1 Data objects The first data object is the new game. Once the word guess application is selected from the home screen a new game is initiated with an answer, a guess count, a guess array and a Boolean correctness field. Each element of the guess array is a character array so that each letter of each guess can be compared to the correct answer. There will be a button at the bottom of the UI which will allow the user at any point within the running of the program to create a new game, at which time the previous game will be overwritten. 23 The next data object is the answer. The answer will be generated at the beginning of each new game accessing a predefined list of six letter words. The answer will be stored in an array of characters. The third data object is the guess array. The guess array will consist of six elements each of which is a character array. It will be generated from an Edit Text field submitted by the user. If the guess is a valid word (I.e. has six characters, and all characters are letters) then the guess will be converted to a character array and added to the guess array. Otherwise the guess will be ignored, the user will be prompted of the mistake and will be able to submit another guess. The final data object will be the final score when the game is ended. The score is calculated by counting the number of words correctly answered before ending the game, multiplying that number by one thousand and subtracting the number of guesses taken multiplied by 50. The game will locally keep the highest score for display. 6.1.2 Relationships The relationship between the data objects above can be seen in the following figure. The user will submit data and the program will process that information accordingly. 6.1.3 Complete data model Figure eight: Word Guesser Complete Data Model 6.1.4 Data dictionary 24 All of the data excluding the word dictionary will be stored on when the program itself is running. Once the program is stopped, or a new game is initiated, all data will be discarded. The word dictionary will be stored on the phones memory and will be accessed at each initiation of a new game, at which time a random word will be selected as the answer for that particular game. 6.2 Functional Model and Description 6.2.1 Description for Functions 6.2.1.1 Start Up This function in initiated when the word guesser game is pressed from the home screen. The function starts a new activity that shows the main game screen for the word guesser. 6.2.1.2 New Game This function in initiated once the word guesser button is pressed from the game suite home screen and when the new game button is pressed from the menu of word guesser. Once the button is pressed, a new answer is selected from the word dictionary, the guess array is reinitiated to the default values, the guess count is reset to zero and the correctness field is set to false. 6.2.1.2.1 Answer Generator When a new game is started, a random number between 0 and 600 is generated at which time the program traverses the word dictionary for the generated amount of interactions and returns that word as the correct answer for the game. 6.2.1.3 Main Game Function After a new game is started, the main game function runs functions to watch the user actions and act accordingly. 6.2.1.3.1 Submit Guess Function Each time the OK button located adjacent to the Edit Text field is selected a function is called to first check the validity of the guess (i.e. current length and correct characters). This guess is first stored as a String; however, will be passed through the split() function to create a character array of the guess for comparison. 6.2.1.3.2 Split Functional Once the guess string is retrieved from the Edit Text field, this function is called to create a character array of the guess. A string is passed to the function and a character array is returned. This function is also used for the correct 25 answer of the game which is generated from the word dictionary. 6.2.1.3.3 Compare Function Once the correct answer and the individual guess are submitted, those two character arrays are passed to the compare function to determine the correctness of the guess. Each character within the guess array is first compared with the character in the corresponding position of the answer array. If those two characters are alike then the setColor() function is called and the character is printed red. If those two characters are not alike the guess array character is then compared to every other character within the answer array. If that character is found in the answer array then the setColor() function is called and the character is printed yellow – signifying that the character is in the answer, but not in the correct position. If the character from the guess array is not found in the answer array then the character is left as is. 6.2.1.3.4 Set Color Function This function is called within the compare function. The guess character array, an index identifying which element of the array is being manipulated and integer value signifying which color to set the text to be passed to the function. The return value of the function is void. 6.2.1.4 Menu Functions During the game the user can press the menu button to bring up options. The menu option is used to optimize screen space, avoiding clutter. 6.2.1.4.1 Help This function displays the rules of the game. 6.2.1.4.2 New Game This function ends the current game and resets all data to default values within the word guess game screen. All previous data, other than the word dictionary, are destroyed. Selecting this option will nullify the possibility to store the game score. 6.2.1.4.3 View High Score This function displays the current high score for the word guess game as well as the score of the current game for comparison. 26 6.2.1.4.4 Finish Game This function is very similar to the New Game function; however, rather than taking the user back to the word guess game screen, the user is returned back to the game suite home screen as well as the final score being calculated and submitted to the system. It ends the new game activity. 6.2.1.4.4.1 Calculate Score This function calculates the final score of the game. It does this by counting the total number of correct answers without ending the game multiplied by 1000 and subtracting the total number of guesses multiplied by 50. 6.2.1.4.4.2 High Score When a game is finished, either by the user incorrectly guessing six consecutive times or by selecting finish game in the menu, the score is calculated and compared to the current high score. The higher of the two scores is stored onto the phone and displayed in the high score option of the menu. 3.2.1.5 Exit Game This function exits the word guesser game screen and returns back to the game suite's main menu. 6.2.2 Software Interface Description Word guesser uses on interface that the user can see. The one that they can see is through the cell phone. The cell phone must be running the Android OS. 6.2.2.1 External machine interfaces The game will run on two different machines. One is an emulator of a cell phone running the Android OS which will be used for development and testing. The other is the user's cell phone that hosts the game. The game must be compatible with the Android OS. 6.2.2.2 External system interfaces There are no external system interfaces for the word guess game. 6.2.2.3 Human interface This is the main interface that the user will interact with. The interfaces will allow the user to use the phone's touch screen services and analog buttons. This interface is clear and easy to use. 27 It shows buttons and text so the user can understand what is going on within the application. 6.2.3 Control flow description The control flow of the word guesser starts when the user starts a new game. After the new game is started there will be different states of the game. This continues till the game is finished. These individual game states are described in section 6.2.3.2 and its subsections. 6.3 Behavioral Model and Description 6.3.1 Description for software behavior 6.3.1.1 Events 6.3.1.1.1 New Game Button Presses A new game is started, answer fetched from the dictionary. 6.3.1.1.2 Menu Button Pressed When the phone's menu button is pressed a menu pops up. 6.3.1.1.3 OK Button Pressed When the OK button is pressed the text in the Edit Text field is retrieved and checked for correctness. Then the guess is compared against the answer. 6.3.1.1.4 Guess is Invalid Edit Text field is clears and the user is prompted that the previous guess was incorrect in syntax. 6.3.1.1.5 Character Not Found The specific character in guess is printed to the screen in the default grey text and the guess count is incremented. 6.3.1.1.6 Character Found in Correct Position The specific character in the guess is printed in RED to signify it is a correct letter and in the correct position. 6.3.1.1.7 Character Found in Incorrect Position The specific character in the guess is printed in YELLOW to signify it is a correct letter; however, in an incorrect position. 6.3.1.1.8 View High Score Button Pressed The high score of the game is displayed to user as well as the score of the current game (if any). 6.3.1.1.9 Help Button Pressed The rules are displayed in a dialog box. 28 6.3.1.1.10 New Game Button Pressed The current game will be destroyed and a new game will be initiated. The score of the current game will not be calculated or compared to the high score. 6.3.1.1.11 Finish Game Button Pressed The score of the current game is calculated and displayed to the user. It is then compared to the current high score and if greater, the user is prompted that they just set a new high score. Game is then returned to the game suite's home screen. 6.3.1.1.12 No High Score Found A default zero is displayed when user selects View High Score from the menu. 6.3.1.1.13 High Score Found The highest score is splayed when the user selects View High Score from the menu. 6.3.1.2 States 6.3.1.2.1 Main Menu The main menu is displayed with the buttons for a new game and exit. 6.3.1.2.2 Enter Guess The Edit Text View is displayed where a user can input a word as a guess. The word must be six letters in length. 6.3.1.2.3 In Game Menu A menu in displayed that gives the option to view the high scores, start a new game, finish the current game, or show help. 6.3.1.2.4 Submit Guess Word Guesser checks the guess for validity then compares guess to the answer to determine which characters are correct. 6.3.1.2.5 New Game A cleared game screen is displayed and all game data is set to default. 6.3.1.2.6 Finish Game 29 The game will end a show a dialog box with the score as well as a congratulation if a new high score was set. It will return to the game suite's main menu. 6.3.1.2.7 Show Help A dialog box will show the rules of the game. 6.3.1.2.8 Display Score 0 When a score is not found then a default zero is displayed when the View High Score button is pressed. 6.3.1.2.9 Display High Score Retrieves and displayed the high score from memory when the View High Score button is pressed. 6.3.1.2.10 Highlights Letter Turns character RED when the letter is in the answer and in the correct position. Turns character YELLOW when the letter is in the array but in an incorrect position. 6.3.2 State Transition Diagrams 30 Figure nine: Word Guesser State Diagram 7.0 Sudoku 7.1 Data Description The word search utilizes a couple of different data objects. These objects are used for passing data around and keeping track of information. The data keeps track of numbers, difficultly level, tiles, and hints. 7.1.1 Data objects The first data object is the user. The user will select a tile to enter a number into. The user can select any of the tiles in the 9x9 board. Once a tile is select a dialog box will with the available numbers. The user will select a number and it will be placed into the tile. The second data object is the hints. When the tile selected dialog box appears only the available numbers appear. This is helped out by the hint function, which calculated the used numbers. The hint function also colors tiles according to how many numbers can go into the tile. 31 The last data object is the difficulty level. When a new game is started, the user selects an easy, medium, or hard level. Then a board is drawn by that difficulty. 7.1.2 Relationships The relationships between the data objects above can be seen in the figure below. The user will submit data and the program will pass around that data. 7.1.3 Complete data model Figure ten: Sudoku Complete Data Model 7.1.4 Data dictionary All the data is stores locally and erased when a game is ended. When a game is started the game board is loaded and all the data is stored in local variables. When the game is over or ended the local data is erased. 7.2 Functional Model and Description 7.2.1 Description for Functions 7.2.1.1 Startup This function is initiated when the Sudoku button is pressed from the home screen. The function starts a new activity that shows the main menu for the game. 7.2.1.2 Main Menu This function shows the main menu with buttons for a new game, one for an exit, and one for an about page. There is also a menu function to show the settings. 7.2.1.2.1 About This function initiates a dialog box that pops up. It shows information about Sudoku game and rules of the game. 7.2.1.2.2 Settings This function pops up a menu with various settings for the Sudoku game. The settings are stored locally and are erased after the game is exited. 32 7.2.1.2.2.1 Music This function turns the music on and off. 7.2.1.2.2.2 Hints This function turns the hints on and off. 7.2.1.2.3 Exit This function exits the main menu of the Sudoku and takes the user back to the main menu of the game suite. 7.2.1.3 New Game This function is activated when the new game button is pressed. After it is pressed a dialog box appears with the user to select the difficulty level. After the selection, this function loads the puzzle and starts the main game function. 7.2.1.3.1 Difficulty This function allows the user to select the difficulty level. The difficulty levels are easy, medium, and hard. Once the difficulty is selected it is store in the data object. Then the puzzle is retrieved based on the difficulty. 7.2.1.3.2 Load Puzzle This function takes the puzzle from the difficulty data object and passes it to the main game function to be drawn. 7.2.1.4 Main Game This function loads the main game and allows the user to play the game. When a tile is selected, it shows the numbers that can be played. It calls the hints function to color squares differently. This function is run all the numbers are filled or the game is exited. 7.2.1.4.1 Draw Board Every time a number is selected then the board is redrawn to show those changes. This function draws the lines, numbers, background, and different colors for the hinted tiles. 7.2.1.4.2 Select Tile This function deals with when a user selects a tile on the board. When a tile is selected it is turned a different color. It then calls the hints function and brings up the select numbers function. 7.2.1.4.3 Select Numbers 33 This function brings up a dialog box that shows the available numbers to select for that tile. Once the number is selected it sends it to the main game function to get drawn. 7.2.1.4.4 Hints This function goes through the board and finds the available numbers for each tile. It uses the amount of numbers available to pick a color for that tile. 7.2.1.4.5 End Game This function ends the current game and goes to the main menu of Sudoku. 7.2.2 Software Interface Description Sudoku uses one interface that the user can see. The one that they see is through the cell phone. The cell phone must be running the Android operating system. 7.2.2.1 External machine interfaces The game will run on two different machines. One is an emulator of a cell phone that is used for development and testing. The other is the user’s cell phone that hosts the game. The game must be compatible with the Android operating system. 7.2.2.2 External system interfaces The game does not use any external interfaces. All components of the game are internal. 7.2.2.3 Human interface This is the main interface that the user will interact with. The interface will allow the user to use the phones touch screen services and analog buttons. This interface is clear and easy to use. It shows buttons and text so the user can understand what is going on. 7.2.3 Control flow description The control flow of the word search starts when the user starts a new game. After the new game is started there will be different states of the game. This continues till the game is finished. This described in section 5.0 and its subsections. 7.3 Behavioral Model and Description 7.3.1 Description for software behavior 7.3.1.1 Events 7.3.1.1.1 New Game Button Pressed A new game is started, puzzle drawn, and board is drawn. 34 7.3.1.1.2 About Button Pressed Shows the rules and information of the game. 7.3.1.1.3 Exit Button Pressed Exits the game to the games main menu. 7.3.1.1.4 Menu Pressed A menu pops of with the settings button. 7.3.1.1.5 Setting Button Pressed A new page is shown with settings of the game to be set. 7.3.1.1.6 Hints Option Button Pressed This event turns on and off the hints function of the game. 7.3.1.1.7 Music Option Button Pressed The event turns on and off the music of the game. 7.3.1.1.8 Difficulty Selected When the new game is selected the user is presented with an option to select the difficulty of the game. The option is then passed to the game. 7.3.1.1.9 Tile Selected When inside the main game the user will select tiles to put or change a number in. When a tile is selected it brings up a menu to pick what number goes inside the square. 7.3.1.1.10 Draw Board This event is called at the beginning of the game and after a new number is selected. 7.3.1.2 States 7.3.1.2.1 Main Menu The main menu is selected when the Sudoku game is selected. It has buttons for a new game, about page, exit, and a menu. 7.3.1.2.2 About The about page is a dialog box that shows the rules of the game. 7.3.1.2.3 Exit This exits the game to the main menu of the game suite. 35 7.3.1.2.4 Menu This page is shown when the analog menu button is pressed on the phone. It shows a settings button. 7.3.1.2.5 Settings The settings page allows the user to change the settings for the music and hints of the game. 7.3.1.2.6 Hints This displays a button to turn on/off hints. 7.3.1.2.7 Music This displays a button to turn on/off music. 7.3.1.2.8 Difficulty Selected This displays a dialog box with the options to select the difficulty of the game. 7.3.1.2.9 Tile Select This is the main page of the game to be displayed. It shows the board drawn and allows the user to select a tile or end the game. 7.3.1.2.10 Number Select From the hints function the numbers available are retrieved. It displays the number is a dialog box with a button for each available number. 7.3.2 State Transition Diagrams 36 Figure eleven: Sudoku State Diagram 8.0 Restrictions, Limitations, and Constraints The application is being developed for the Android operating system and as such should be compatible with at least the majority of the current versions of Android which are 1.1, 1.5, 1.6, 2.0, and 2.0.1. The application must be designed to display correctly on the wide range of mobile phones which run the Android operating system. The overall application and its individual parts must be designed to run smoothly and quickly on the relatively limited processing power of mobile devises. 9.0 Validation Criteria Validation for the application will mostly be focused around the end user use case. While not all possible scenarios can be tested validation will consist of testing a reasonable number of cases to declare that all cases should work. 9.1 Classes of tests 9.1.1 Welcome Screen 37 - Move between the Welcome screen and the available games multiple times and in varying orders. 9.1.2 Word Search - Select known valid words for multiple puzzles. - Select known invalid words. - End game, exit program, and re-launch. 9.1.3 Connect Four - Run through multiple games from start to finish with varying end game scenarios. - Exit program mid game and re-launch. 9.1.4 Battleship - Run through multiple games from start to finish with varying end game scenarios. - Exit program mid game and re-launch. 9.1.5 Hangman - Run through multiple games from start to finish with varying end game scenarios. - Exit program mid game and re-launch. 9.1.6 Sudoku - Run through multiple games from start to finish with varying end game scenarios. - Exit program mid game and re-launch. 9.2 Expected software response 9.2.1 Welcome Screen - Individual should launch and close cleanly and smoothly, returning to the Welcome screen when closed. 9.2.2 Word Search - Valid words should be accepted and added to the current score. - Invalid words should be rejected. - Game should open and close cleanly and high score should be persistent when re-launching. 9.2.3 Connect Four - Individual chips should be placed properly when specific columns are selected. The game should end when four chips of the same color connect horizontally, vertically, diagonally. - Game should open and close cleanly and game state should be restored if the application was closed mid game. 38 9.2.4 Battleship - Individual 'shots' should register as hits when they occur at a location occupied by an opponent’s ship. The game should end when all enemy ships have been destroyed - Game should open and close cleanly and high score should be persistent when re-launching. 9.2.5 Hangman - Individual letters should register as being part of the target word if they are. Incorrect letters should result in the addition of a body part to the 'hangman'. The game should end when either the 'hangman' is complete or the target word is completed. - Game should open and close cleanly and high score should be persistent when re-launching. 9.2.6 Sudoku - Individual entries should be registered on the board and the game should end when the puzzle has been solved. - Game should open and close cleanly and high score should be persistent when re-launching. 9.3 Performance bounds All games and their individual subsystems should run smoothly and quickly. 10.0 Appendices 10.1 Product Strategies Our product will be likely submitted in the Android Market Place. It will likely be free to the user and will require no advertisement. 10.2 Supplementary information The following is a screen shot of the emulator we use to develop our program. 39 Figure twelve: Android OS Emulator 40