Homework #3: Trimodal Matching

Similar documents
Activity 6: Playing Elevens

CS Programming Project 1

Assignment II: Set. Objective. Materials

Assignment III: Graphical Set

To use one-dimensional arrays and implement a collection class.

Assignment V: Animation

ECE2049: Foundations of Embedded Systems Lab Exercise #1 C Term 2018 Implementing a Black Jack game

CSE 231 Fall 2012 Programming Project 8

Workday Hourly Guide. Logging Time Worked. This guide will show you how to use the Workday time system to enter time worked and request time off.

Mobile Application Training

FAQ for City of Tacoma employees

HW4: The Game of Pig Due date: Thursday, Oct. 29 th at 9pm. Late turn-in deadline is Tuesday, Nov. 3 rd at 9pm.

ParentZone. Your guide to accessing your child s account and their learning journey.

10 Game. Chapter. The PV Unit comes with two built-in games for your enjoyment. The games are named Game-1 and Game-2.

Live Agent for Support Supervisors

CS 371M. Homework 2: Risk. All submissions should be done via git. Refer to the git setup, and submission documents for the correct procedure.

Activity 1: Play comparison games involving fractions, decimals and/or integers.

For this assignment, your job is to create a program that plays (a simplified version of) blackjack. Name your program blackjack.py.

1. Signing In. *Note: You must have a Guest Editor role. Fig (1)

OYSA 2009 Gaming Team Managers Head Coaches Games Reschedule Instructions

Live Agent for Support Supervisors

12-Pack Ultimate Quiz Show Help

CS Project 1 Fall 2017

G E O S E R V E R I N S TA L L

understanding sensors

Website Link

DELIVERABLES. This assignment is worth 50 points and is due on the crashwhite.polytechnic.org server at 23:59:59 on the date given in class.

Live Agent for Administrators

Live Agent for Support Supervisors

Lab Assignment 3. Writing a text-based adventure. February 23, 2010

Guide to Tier 4 Print and Send Online Applications

pg. 1 JMS Editors Guide

House Design Tutorial

CS 251 Intermediate Programming Space Invaders Project: Part 3 Complete Game

Inheritance Inheritance

How To Handbook For Learners

Cricut Design Space App for ipad User Manual

Materials Tutorial. Setting Materials Defaults

The Common Application

the Buzzsaw file hierarchy, providing bid administrators the ability to easily view and manage all bid-related project documents.

Homework 5 Due April 28, 2017

The Joy of SVGs CUT ABOVE. pre training series 3. svg design Course. Jennifer Maker. CUT ABOVE SVG Design Course by Jennifer Maker

HW4: The Game of Pig Due date: Tuesday, Mar 15 th at 9pm. Late turn-in deadline is Thursday, Mar 17th at 9pm.

Live Agent for Administrators

GameSalad Basics. by J. Matthew Griffis

Electronic Plans Management Training. Submitting a Revision to Approved Plans (RTAP) Application & Uploading Drawings

Programming Assignment 4

G51PGP: Software Paradigms. Object Oriented Coursework 4

Guide for Converting Your Deposit to Broadway Season Seats

Overcoming Edmodo errors when turning in assignments

My Blogs: To Add New Blog Post: o Click on the My Learn360 link. You will then see eight different tabs (below).

Materials Tutorial. Chapter 6: Setting Materials Defaults

Tech Committee Guardian System How-To

g. Click once on the left vertical line of the rectangle.

Peer Connections Online Appointment Scheduling via Spartan Connect!

Legacy FamilySearch Overview

Bridgemate App. Information for bridge clubs and tournament directors. Version 2. Bridge Systems BV

GotSoccer works well with and recommends using Internet Explorer, Safari and Google Chrome.

Blab Gallery Uploads: How to Reduce and/or Rotate Your Photo Last edited 11/20/2016

House Design Tutorial

UCAS Progress 2019 Entry Step by Step Guide

Structured Programming Using Procedural Languages INSS Spring 2018

TradeSchool Start Guide

TABLE OF CONTENTS. Logging into the Website Homepage and Tab Navigation Setting up Users on the Website Help and Support...

Needham Bank Business Online Banking

Welcome to 6 Trait Power Write!

How to tell the difference? Here are example letters of each, from the journal Immunology and Cell Biology.

Custom Mobile App Support

Live Agent for Administrators

Adding work to your TaskStream Portfolio (DRF)

Submittals Quick Reference Guide

Electronic Wireless Texas Hold em. Owner s Manual and Game Instructions #64260

Problem Set 4: Video Poker

COMP 9 Lab 3: Blackjack revisited

Author Instructions FPIN Editorial Manager

Roommate & Room Selection Process

WGS and IAI OBA User Guide

General Physics - E&M (PHY 1308) - Lecture Notes. General Physics - E&M (PHY 1308) Lecture Notes

MyBridgeBPG User Manual. This user manual is also a Tutorial. Print it, if you can, so you can run the app alongside the Tutorial.

FIRST STEPS APP INSTALLATION FAQS GETTING STARTED SELF COACHING SCHOLARS. by The Life Coach School

Whack-a-Witch. Level. Activity Checklist Follow these INSTRUCTIONS one by one. Test Your Project Click on the green flag to TEST your code

Venn Diagram Problems

DocuSign Setup Admin. DocuSign User Setup Process Overview. Setting up a new DocuSign user

Welcome to Storyist. The Novel Template This template provides a starting point for a novel manuscript and includes:

Accessing e-books with your e-reader

Once your church has set up the Church App for Seraphim, you can now download the app onto your mobile device from the the App Store or Google Play.

Open Enrollment Process

Entering Checkpoint Data

Introduction.

Frequently Asked Questions for the Pathway to Chartership

User Guide. Version 1.2. Copyright Favor Software. Revised:

EECS 312: Digital Integrated Circuits Lab Project 1 Introduction to Schematic Capture and Analog Circuit Simulation

User Guide. Version 1.4. Copyright Favor Software. Revised:

1 The Pieces. 1.1 The Body + Bounding Box. CS 314H Data Structures Fall 2018 Programming Assignment #4 Tetris Due October 8/October 12, 2018

ANSYS v14.5. Manager Installation Guide CAE Associates

GAME:IT Junior Bouncing Ball

In this project we ll make our own version of the highly popular mobile game Flappy Bird. This project requires Scratch 2.0.

BLACKBOARD LEARN 9.1: BASIC TRAINING- PART 1

Materials Tutorial. Chapter 6: Setting Materials Defaults

CS151 - Assignment 2 Mancala Due: Tuesday March 5 at the beginning of class

Transcription:

Homework #3: Trimodal Matching Due: Tuesday, February 3 @ 12:30 PM Submission: Please turn in all files on Canvas before the deadline. You should compress your submission into a single file, do not submit a large number of individual files. If you know you are going to miss a deadline, contact the TA before the deadline. Canvas has been known to be quirky, so it is not advised to wait until 5 minutes before it is due to make your submission. Please include a text file called README at the top level of your main project directory. Include the following: Your name Your email address How long this project took you to complete Any comments or notes for the grader Overview: This is not a group assignment. It is acceptable to consult with other class members, but your code must be your own. You will expand upon homework 2 to create several views each having a variant of the card matching game in it. Specifications: Part 1: Model RSCard Take your Card class from project 2. Generalize this class into a class called RSCard where RS stands for Rank and Suit. This class should still inherit from the base class Card.

RSCard will have a public method validsuits. This function should return type NSArray*. RSCard should return nil for this method. Classes that inherit from RSCard should override this method to return an NSArray containing all of the valid suit choices. (For example, @[@,..., @ ]). RSCard will have a public class method suitcolors. This function should return type NSDictionary*. RSCard should return nil for this method. Classes that inherit from RSCard should override this method to return an NSDictionary with the mapping between suits and their appropriate color. (For example, @{@ :@ black,..., @ :@ red }). The setter method for the suit of this card should reject any suit that is not a valid suit. The ranks for type RSCard are the same as the standard card ranks (Ace through King). The setter for this method should reject any rank that is not a valid rank. Matching for these cards should follow the same rules as in assignment 2. Reduced playing cards Create a new type of card and deck called ReducedPlayingCard. This should inherit from RSCard. This type of card may have any of the ranks allowed of playing cards (A through K), but it is only allowed to have the suit. Create a new type of deck called ReducedPlayingCardDeck. A deck of reduced playing cards will have 52 cards. It will have four copies of each type of card. For example, there will be four A, four 2, etc. Standard playing cards Create classes PlayingCard and PlayingCardDeck. Playing Card should inherit from RSCard. These cards should have the standard four suits. The behavior of these classes should be essentially identical to their behavior in Homework 2. Expanded playing cards Create a new type of card called ExpandedPlayingCard. This class should inherit from RSCard.

The expanded playing cards have all of the suits as the standard playing cards, with the addition of four new suits. Red suits: (heart), (diamond) Black suits: (spade), (club) Blue suits: (sun), (moon) Green suits: (trident), (turnip) If you have trouble finding any of these symbols, copy and paste them from this document. Create a new type of deck called ExpandedPlayingCardDeck. There should be one of every type of card for a total of 104 cards in a deck. Part 2: View Add a UITabBarController to your app. This should allow you to navigate to three different views. View 1: your matching game but with ReducedPlayingCard cards View 2: your matching game with standard PlayingCard cards View 3: your matching game but with ExpandedPlayingCard cards Each variation of of the game should have a different image for the back of the card. Also, don t forget to add an icon in the UITabBarController for each action. Embed each matching game inside of a separate UINavigationController. There should be a button inside each game that will take the user to something called the History view. (Consider using a Bar Button Item in the Navigation Controller bar.) In the History view there should be a scrollable text field where we will display the history of the game. The game will create a variety of log messages. These messages should be displayed as a bulleted list (or equivalent). You may remove the following UI elements from each matching game (since they will be displayed in the history tab): Number of games played Average score Score value of the previous match (of the current game) Don t forget to properly color cards in the expanded playing card version. Any suits displayed in the history view should also be properly colored. Part 3: Control

The behavior for the matching games should be identical to the behavior specified in Homework 2 (with the exception of the card types). Each version of the game should have its own unique history view. That is, actions taken in the expanded version should not be visible in the reduced version. Log the followings things in the history log: Card matches. Log the cards that were flipped (rank and suit) as well as the point value of the match. Peek. Log when the user has taken a peek action. Also log here how many cards have yet to be matched (i.e. how many cards the user is peeking at). Reset. Log the score of the previous game as well as the current average score. Log how many cards were matched in the previous game as well. Notes: You may use any code presented in class. Please type the code yourself (as opposed to copy paste) as it is a good learning experience. Don t forget to add an alpha layer (i.e. transparency) to your icons down in the tab bar controller. If you violated MVC in your solution to of Assignment 2, then this will be more difficult (that s why you shouldn t have violated MVC!) and you ll probably want to go back and redo those parts. There is no concept like protected in Objective C. Unfortunately, if a subclass wants to send messages to its superclass in code (not with ctrl drag), those methods (including properties) will have to be made public. A good object oriented design usually keeps publication of internal implementation to a minimum! All methods (including properties) are inherited by subclasses regardless of whether they are public or private. And if you implement a method in a subclass, you will be overriding your superclass s implementation (if there is one) regardless of whether the method is public or private. As you can imagine, this could result in some unintentional overrides, but rarely does in practice. If you copy and paste an entire MVC scene in your storyboard (not the components of it piece by piece, but the entire thing at once), then all the outlets and actions will, of

course, be preserved (this can be quite convenient). Even if you then change the class of the Controller in one of the scenes, as long as the new class implements those outlets and actions (for example, by inheritance), the outlets and actions will continue to be preserved. As you start working with multiple MVCs in a storyboard, you might get yourself into trouble by accidentally changing the name of an action or outlet or making a typo or otherwise causing your View to send messages to your Controller that your Controller does not understand. Remember from the first walkthrough of this course that you can right click on any object in your storyboard to see what it is connected to (i.e. what outlets point to it and what actions it sends) and you can also disconnect outlets and actions from there (by clicking the little X s next to the outlets and actions). If you are getting crashes that complain of messages being sent to objects that don t respond to that message (sometimes a method is referred to by the term selector by the way), this might be something to check. There is no reason that the history reporting MVC needs to be different for the two games. In fact, if you decide to use a different history reporting MVC for each, you will want to justify your reasons for doing so in comments in your code. Remember that every time you segue to a new MVC in a UINavigationController, it is an entirely new instance of that MVC. Also remember that that MVC is considered part of the pushing MVC s View (can only talk back to the Controller of the pushing MVC in a blind, structured way luckily, there s no need to do that in this assignment). The History MVC required task is mostly about creating a new MVC and how to segue to it (and only a tiny bit about using a UITextView to display text). Don t overthink the part of this which is actually displaying the attributed strings in the UITextView.