Overview
You will repeat Part 1 of the 1024 game but now develop the iOS version.
TIP
In this part, you will be implementing only the single screen version of the game. The multi-screen navigation, game settings, game statistics, and integration with Firebase will be completed in the second part (a different assignment)
Starter Code
The starter code for this assignment has been posted on GitHub Classroom
- Use XCode 15 starter code if you plan to use our EOS MacMinis
- Use XCode 16 starter code if you have access to XCode 16
For the iOS version, you are encouraged to work with a teammate. Before you accept the GH classroom invitation link, talk to your potential teammate so you can select proper team name on GitHub classroom (see below)
When you accept the GH classroom invitation link, you will be prompted for a team name.
IMPORTANT
Please include your GVSU userid(s) in the team name, so your instructor can easily identify your work.
Overall App Specifications
Game Logic
- Your UI should not contain any application logic. The UI should be design to only handle user input events (swipes, taps, input, etc.) and updating the UI.
- Application logic and game logic should be written elsewhere (in viewmodel)
- Swipe actions do not always end up if similar numbers being merged. Those which do not shall not insert a new random number
- Resetting the game shall clear the grid an insert a new number in an empty spot
Game UI Design
In addition to the widgets currently used in the starter code:
- Change the text at the top to include your name
- Add a text that shows the number of valid swipes, i.e. those swipes that causes the board to change
- Add a text to show the final game status (WIN / LOSE)
- Add a RESET button to restart the game at any time (not only after game won/lost)
The following screenshot is an example implementation by your instructor when no more numbers can be merged and the board is already full. The exact layout of the widgets of your implementation may differ, but the require information should be there.
Grading Rubrics
Grading Item | Point |
---|---|
Initial placement the first number on an empty cell | 2 |
Swipe actions leaves no gap between numbers | 4 |
Neighboring numbers are merged and added correctly | 3 |
Show number of valid swaps (those which change the board) | 2 |
Insert subsequent random number only after the board changes | 2 |
Detection of winning condition | 2 |
Detection of game over (lost) | 3 |
Swipes action game won/lost shall not update the board | 2 |
Reset the game board any time | 2 |
Source code updates pushed to GitHub | 3 |
Penalty for app logic/game logic in UI | -1 (per violation) |
Penalty for runtime errors (null pointer, index oob, etc.) | -1 (per violation) |