Cole Rogers - GitHub: colerogers Kevin Chan - GitHub: kevinchanucsb
#A The project is an Android application that runs a Pacman game on mobile devices #B
1.As a user, I can see the introduction screen when I open the app so that I can know it has sucessfully opened.
2.As a user, I can see a play button and a help button and a high score button so that I can click on them.
3.As a user, I can click on the help button so that I can know how to play.
4.As a user, I can click on the play button so that I can start the actual game.
5.As a user, I can see the game board so that I know the game is about to start.
6.As a user, I can see my character on the gameboard so that I know where I start.
7.As a user, I can move my character so that I see myself move across the game board.
The character should animate.
The character should be able to move up down, left and right.
The character should move based on user input (swipe gestures).
The character stops moving when it reaches a wall.
8.As a user, I can see the pellets on the board so I know where to move.
9.As a user, I can see my score to see how well I've played.
10.As a user, I can move my character to eat pellets so that I can get points.
The pellet should dissapear when the character moves over it.
The score should increase when the pellets get eaten.
11.As a user, I can pause the game so that I can continue later on.
12.As a user, I can unpause/resume the game so that I can continue where I left off.
13.As a user, I can see enemy ghosts on the board so that I know where they spawn.
14.As a user, I can see enemy ghosts move so that I know where NOT to move.
The ghosts should animate.
15.As a user, I can keep track of my highest score so I can strive to beat it.
16.As a user, I can hear Pacman background music so I can get HYPED.
The music shoud start when the user opens the app.
The music should stop when the app is not in focus.
The music should be shared across all screens so there is no overlap.
#C After installing the Android Studio IDE and downloading the correct SDK updates the application was able to be launched and played. You can play the game and collect the pellets in order to get a high score but if you are touched by the ghost no action will happen to you and you will be allowed to play an endless game. The user can pause the game by long pressing anywhere on the screen. #D
- The ghosts should move according to unique personalities/behaviors. Ghost AI Movement
- As a user, I can see a mute button so that I have the ability to mute the music.
- As a user, I can click on the mute button to mute the music
- As a user, I can set different difficulties so that I can make it easier or harder for myself.
- As a user, I can change the colors of the game so I can set things to my color preference.
#E The current Readme provides a brief discription of the project and the authors of the game. There is a section about how to run the current code using android studio on either an emulator or on an android device. The previous students provide the current features of the game as well as the implemented and remaining User Stories. Lastly they provide a final remarks section where they explain areas to improve and possible features to implement in the game as well as a project history. The README.md could include a section on what is dangerous to touch in the code. This way, future developers will get a sense of what lurks behind every code adjustment and may help prevent relationship conflicts. #F Since this is an android project there is not an included build.xml file because this project runs through Android Studio. A similiar file exists tilted AndroidManifest.xml which is in the app/src/main/ directory. #G ####The current issues along with the point values: Add more levels - 200 per level Add a Settings page - 200 Indication of winning a level - 200 Pacman and Ghost collision - 150 Fix Ghost AI - 400 Center game map - 250
Total with 1 level added - 1400
For the most part the issues are clear in what they expect. The Fix Ghost AI issue is by far the most challenging issue and that would be the one that could use a little clarity on what exactly need to be implemented. #H ####Added Issues: Add mute/un-mute button
#I Most of the current code is seperated into classes that serve one purpose and are name accordingly. There is a class called DrawingView that needs to be refactored because most of the game is inside that class. DrawingView could be seperated into many different subclasses such as a Pacman class which contains multiple subclasses for movement and character actions. The same could be said about the Ghost character and how it deserves a seperate class and its own subclasses. There could also be classes that handle the scoring of the game and the transition into a new level if that feature is ever implemented. #J The current code does not make use of Test cases written by the previous students. Test cases could be used to test different features of the code especially after a refractor of the DrawingView class. Some examples could be testing if the game resets to the title screen after a player is touched by a ghost, testing to see if the pause option successfully saves the current state of the game, and testing to check if the high score text changes after a player surpases a previous high score.
#Info on how to interpret the current code ###The game was originally a tutorial from ZETCODE The leveldata[] array has certian numbers associated with the objects drawn on the screen.
The numbers that correspond to each wall are as follows:
1->Left
2->Top
4->Right
8->Bottom
The number 16 corresponds to a point(pellet) on the map
The number 0 means there is nothing at that point which could be an inside of a walled off area
For example the bottom right corner of the map has a value of 28 because there is a bottom wall(8), a right wall(4), and a pellet(16) with the total value(8+4+16) of 28.
###For testing purposes this double demensional array will build the map with one pellet directly to the right of Pacman {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {3, 10, 10, 2, 10, 10, 10, 6, 0,3, 10,10,10,2,10,10, 6}, {5, 0, 0, 5, 0, 0, 0, 5, 0, 5, 0, 0, 0, 5, 0, 0, 5}, {1,10,10, 0,10,2,10, 8,10, 8,10,2,10, 0,10,10, 4}, {9,10,10, 4, 0, 9,10, 6, 0,3,10, 12, 0, 1,10,10, 12}, {0, 0, 0, 5, 0, 0, 0, 5, 0, 5, 0, 0, 0, 5, 0, 0, 0}, {0, 0, 0, 5, 0,3,10, 8,10, 8,10, 6, 0, 5, 0, 0, 0}, {10,10,10, 0,10, 4, 0, 0, 0, 0, 0, 1,10, 0,10,10,10}, {0, 0, 0, 5, 0, 1,10,10,10,10,10, 4, 0, 5, 0, 0, 0}, {0, 0, 0, 5, 0, 5, 0, 0, 0, 0, 0, 5, 0, 5, 0, 0, 0}, {3,10,10, 0,10, 8,10, 6, 0,3,10, 8,10, 0,10,10, 6}, {5, 0, 0, 5, 0, 0, 0, 5, 0, 5, 0, 0, 0, 5, 0, 0, 5}, {9, 6, 0, 5, 0, 0, 0, 1, 2, 20, 0, 0, 0, 5, 0,3, 12}, //Pacman spawn at 2 and pellet at 20 {0, 5, 0, 1,10,10,2, 8, 8, 8,2,10,10, 4, 0, 5, 0}, {3, 8,10, 12, 0, 0, 9,2,10,2, 12, 0, 0, 9, 10, 8, 6}, {5, 0, 0, 0, 0, 0, 0, 5, 0, 5, 0, 0, 0, 0, 0, 0, 5}, {9,10,10,10,10,10,10, 8,10, 8,10,10,10,10,10,10, 12}