cover picture cover picture


Final Exam

CMP 430: iOS Mobile Programming
Lehman College, City University of New York
Fall 2021


This Final Is Due By 11:59 PM on Sunday December 19, 2021

Objective

In this exam, you will be adding functionality to your working Set Game solution. You are free to choose which of your versions of the Set Game you want to use as a basis for this exam. You may either use Homework 3 or Homework 4 as your starting point.

Required Tasks (100 points)

You will add the following functionality to your Working Set Game:

  1. All the required tasks of your chosen base code, must be working.

  2. Draw the actual shapes: Squiggle, Diamond, and Oval. You may use the code that was demonstrated in class for drawing the Squiggle to get you started with this.

  3. Use the actual shadings: Outlined, Striped, and Filled. You may use the code that was demonstrated in class for drawing the Squiggle .

  4. All the cards that are in play must be visible on the screen. No scrolling should be necessary.

  5. You Will add persistence to your game. This must include the following:

    1. The first time the game is played, no state is restored, the game starts as usual.

    2. You will autosave the state of your SetGame as changes are made to the cards that are in play, the score, and the remaining cards in the SetCardDeck.

    3. All subsequent times, after the first time, that the game is played; you will restore the state of the SetGame and SetCardDeck from your autosaved data.

    4. You are free to choose the method of autosaving. You can either use FileManager or UserDefaults. Both techiniques were demonstrated in EmojiArt.

  6. Your user interface will show how many cards are remaining in the SetCardDeck.

  7. When the user asks for 3 more cards and the the SetCardDeck is empty, you will show the user an alert View telling them that the SetCardDeck is empty. The user will have an "OK" button to dismiss the alert and continue playing the game. After displaying the alert, the "Deal 3 More Cards" button must be disabled.

  8. Your solution must work and look good in both Portrait and Landscape mode.

Extra Credit

  1. (10 Points) Add a "Peek" button to your UI. This feature should reveal an existing set among the cards currently in play, if such a set exists.

  2. (5 Points) Keep score in the game by penalizing the user for a mis-matched set or a Peek. If you implement the Peek, you can also penalize the user for a "Deal 3 More Cards" when a set already exists among the cards in play. You should also reward the player for each set that they find.

  3. (5 Points) Give a higher score reward to a player when they choose sets quickly. (i.e. incorporate a time component into your scoring system). This feature should incorporate a visual component like the "Pie" that we added to the Memorize Game. One "Pie", somewhere, on the screen would suffice, no need to have each card display a "Pie".

Your submission MUST be developed in Xcode 12.4.

Please submit the completed assignment on Blackboard as a zip file of your entire project.

This means that your zipfile must contain the .xcodeproj file.

No other forms of submission will be accepted.

There will not be a second chance to submit the correct zip file.