Bored Room Bingo

Group 11: Andrew Carey, Tom Reinhart, Ian Wilkes

Overview

Iteration 3 Click Here Iteration 4 Click Here Iteration 5 Click Here Iteration 6 Click Here

This will be a bingo game for iOS where a user can upload their own words for a bingo game with their friends!
During an event like a meeting or live event, Users can start a game and invite other people to play.
Once a game starts, users will mark which words, phrases, or actions which have been completed and other
users will either confirm or deny that this event has occurred. .

gui
gui
gui

Component Diagram

component diagram

UML Class Diagram

Component Diagram

component

Feature List:

Create a new game
Play a game
Join a game
Leave a game
Suggest a word
word lists
reminders
social consensus to approve words
veto a word
word detection
click tile
public game
private game
anonymized names
usernames
suggest word/action
leave game
log in w/ facebook and linkedin
centralized data storage (firebase)

Extended Features:

chat
user profile
karma score
nlp word detection
upload board backgrounds
victory sounds
achievements
play game by area

Key Features:

create game
join game
sign up
log in w/ facebook and linkedin
play game
suggest word/action
consensus confirmation
click tile
centralized data storage (firebase)

Architecture:

Our game will be based around a central server and users connecting to this server with their
app. The server will be running firebase to store data from the users as well as informations about indivdiual games, and will be querried by the app whenever data is needed about a game or opposite processes.

We intend to have the following packages:

socialFeatures
gameLogic
viewAndControl

The socialFeatures package will contain the classes related to social interactions within the app. This includes the user, all classes related to friends, possible chat features.

The gameLogic package will contain the model portion of our code, which will interact with the view and control package, and will keep track of the logic of playing a game of bingo. This includes things like a Events, EventLists, Board and the BRBGame.

Finally, we have the viewAndControl package which makes up all of the view and control portions of the code. This will handle all views that the user will see, such as the login, home and sign up screens, as well as the gui representation of the game and the lobby.

The viewAndControl package will be closely linked to both the social and logic packages, as the inputs to play the game must be passed from the controller to the model, and the view will update itself based on the state of the model. While using the view, you should be able to both view your social connections and also change your profile/social status in the game.

Lastly, our application needs to communicate with the server. Using Firebase we will have a realtime database and backend as a server. Our data will be synchronized across users and stored on Firebase's cloud. The database is accessible through REST. We plan to use the REST API for creating HTTP connections which will allow us to recieve push notifications from the server.

DOXYGEN Docs

Use Cases:

sign up with social network
precondition- user not logged in
1- App launches to login/sign up page
2- click facebook/linkedin button which launches their authorizations
3- approve authorizations which segues to game
alternate path 3.1 deny authorizations return to step 1
postcondition - user has an account and user is logged in
sign up w/o social network
precondition- user not logged in
1- App launches to login/sign up page
2- User enters their information (username, email)
3- If the username and email are not already used, an account is created and the user is logged in.
postcondition - user has an account and is logged in

alternate path 3.1 - either the username or email has already been used, the user is rejected and returned to step 2.

alternate path 2.1 - the user cancels and returns to the home screen.

log in
precondition- user not logged in, user has an account
1- user clicks either the log in with Li/Fb or email button.
2- if logging in with Li/Fb, then is directed to the relevant application to provide credentials.
3- credentials authorized and the user is moved to the logged in screen.
postcondition- user is logged in and is on the home screen.
alternate paths:
1.1- user clicks the log in with email button
2.1- user enters their email and password
3.1- user accepted and is logged in
postcondition: user is logged in and on the home screen
alternate path:
3.2- user not accepted, prompted to enter email and password again.
2.3- user presses cancel and is returned to the log in screen.
postcondition: user is not logged in and remains on the log in screen.
Home Screen Uses
precondition- user is logged in. cannot get here w/o this.
All Alternate Paths, no default:
1.1- User selects "My Game"
postcondition: user is routed to play game
1.2- List of Invites shown that user can accept or deny.
precondition- user is not currently in another game at that time. if so, cannot accept
2.1- user approves invite. will be stored and added to "My Game" at time of game
2.2- user hits x to delete the request from list.
postcondition- invite list reflects the change, user stays at home screen.
1.3- User Selects their word list icon
postcondtion- user routed to my word list
1.4 User Selects chat option
postcondition- user is routed to chat menu
1.5 User selectes friends
postcondition- user routed to search for users
1.6 User selects profile
postcondition- user routed to profile page
1.7 User selects create game
postcondition- routed to create game screen

play game
precondition - the user is logged in and is in a game
1- user waits for an event to occur
2- event occurs and the user selects the tile corresponding to the event
3- the event associated with that tile is sent to the server
4- the event is sent from the server to other users
5- other users either confirm or deny the event
6- if the event is accepted, the tile corresponding to it on the user's board is highlighted
7- if the word finsihes a row or a column, the game ends and all members of this game are notified.
8- the user is returned to the home screen
postconditon- the user is logged in and no longer in a game
alternate path
6.1- the event is not accepted
7.1- the user is notified of the failure of that event
postcondition- the user is still playing the game
alternate path
7.2- the word does not finish the game, and the user is returned to step 1.
postcondition- the user is still playing the game

Word List Editing/Viewing
precondition- user logged in
1- user is presented with their current set of word categories, w/ add category button
alternate paths:
2.1- user selects an existing category to edit.
3.1- user presented with category and list of words in category
alternate paths:
4.1.1- user clicks x next to word to delete from list
postcondition: list exists w/o that word
precondition: new word is not in list already
4.1.2- user types new word and selects enter
postcondition: word appears in table
2.2- user selects new category
precondition- name of category doesn't exist for user yet
3.2- category list with name open to adding words
postcondition- name of category exists
precondition- words to be added unique to list
4.2- user types word in to add to list
postcondtion- word added to list
2.3- user selects to delete a category
postcondition- list will be without that category
2.4- user exits to go back to homescreen by using built in back button
postcondition- list will be saved
Chat Menu
precondition- user is logged in
1- user presented with screen with friends listed in alphabetical order and search bar
alternate paths:
2.1- user selects a friend from the table.
postcondition: user will be in a basic chat
2.2- user searches for a friend
precondition- user turns up from search
3.2- select user to chat with
postcondition- in basic chat

alterate path:
3/4.1- user types message to friend
postcondition: text displayed in chat from user
3/4.2- user receives message from friend
postcondition: text displayed as from friend in chat

Friends Menu
precondition- user is logged in
1- user presented by large list and search bar
alternate paths:
2.1- user types into search bar a username to look for
postcondition: if user exists, will be returned
alternate path:
3.1.1- if user returned is friend, click x to remove friend
postcondition- user no longer friend
3.1.2- if user returned is not friend, can click + to add friend
postcondition- can no longer add, but friend request sent
2.2- user selects a friend
postcondition: linked to friend info page with info to look at
2.3- user clicks x on a friend
postcondition: user no longer friend and disappears from list

create game
precondition- the user is logged in and not in a game at time of new game
1- user creates a list of words/events to be used during the game or chooses
from a premade word list.
2- user invites people to join the game, or opens it to the public
3- After sufficient words have been added and the user is satisfied with the number of players, the creator may begin the game
4- user is transitioned to the playing game state.
postcondition- the user is playing a game.
alternate path
3.1- user cancels the game, all players in the game returned to the home screen
4.1- creator returned to the home screen
postcondition- user is logged in and is not playing a game.

join private game
precondition- user is logged in and not playing a game, user has received an invitation to a game
1- The user accepts the invitation
2- The user may recommend words/events to the list being used for the game.
3- Once the creator of the game starts the game, the user is transitioned to the playing game state
postcondition- user is playing a game.
alternate path
At any point after the user has joined but before the game has started, the user may leave the game and return to the home screen.

join public game
precondition- user is logged in and not playing a game
1- user searches the list of public games
2- user selects a game and clicks join
3- user enters the lobby of the game and waits for the game to start
4- game is started by the creator
postcondition- the user is playing a game.
alternate path
At any point after the user has joined the game, but before the game has started, they can exit the loby and return to the home screen

leave game
precondition- user is playing a game
1- user clicks the quit game button
2- user must confirm their decision
3- if only one person is left in the game after someone leaves, that person wins and returns to the home screen.
postcondition - user is returned to the home screen
alternate path
The user cancels their decision to quit and is returned to the game.

recommend word/event
preconditon- user is in a private game lobby
1- user clicks the recommend word button
2- user enters the word/event that they wish to have added
3- the word/event is added to the list for this game if it is not already there
postconditon- the word is added to the word list

Resources:

Firebase, REST API, Objective C, MySQL, LinkedIn API, Facebook API