MCD4720 – Fundamentals of C++
Assignment 1 – Trimester 1, 2019
Submission guidelines
This is an individual assignment, group work is not permitted Deadline: March 24, 2019, 11:55pm
Weighting: 10% of your final mark for the unit
Late submission:
● By submitting a Special Consideration Form or visit this link: https://goo.gl/xtk6n2
● Or, without special consideration, you lose 5% of your mark per day that you submit late
(including weekends). Submissions will not be accepted more than 10 days late.
This means that if you got Y marks, only (0.95n )×Y will be counted where n is the number of days you submit late.
Marks: This assignment will be marked out of 30 points, and count for 10% of your total unit marks.
Plagiarism: It is an academic requirement that the work you submit be original. If there is any evidence of copying (including from online sources without proper attribution), collaboration, pasting from websites or textbooks, Zero marks may be awarded for the whole assignment, the unit or you may be suspended or excluded from your course. Monash Colleges policies on plagiarism, collusion, and cheating are available here or see this link: https://goo.gl/bs1ndF
Further Note: When you are asked to use Internet resources to answer a question, this does not mean copy-pasting text from websites. Write answers in your own words such that your understanding of the answer is evident. Acknowledge any sources by citing them.
1
Task Details:
This assignment is the first part of a larger project, which you will complete in Assignment 2.
The purpose of this assignment is to get you comfortable with planning of the C++ programming for assignment 2. It is detailed later in this assignment specification, as is the specific marks allocation.
Submission Instructions:
The assignment must be created and submitted as a single Word or PDF document to the Moodle site which must clearly identify and display both your Name and Student ID to facilitate ease of assessment & feedback.
Your document file MUST be named “YourFirstNameLastNameID. docx” or “YourFirstNameLastNameID.pdf”. This file must be submitted via the Moodle assignment submission page.
NOTE! Your submitted file must be correctly identified and submitted (as described above). Any submission that does not comply will receive an automatic 10% penalty (applied after marking).
The document should contain the project plan and the UML diagram, you can use Microsoft visio to draw the UML or you can use any other software.
Explicit assessment criteria are provided, however please note you will be assessed on the following broad criteria:
✓ Detail of a proposed project plan for the overall project
✓ Creating accurate and complete UML diagrams
✓ Using appropriate naming conventions, following the unit Programming Style Guide
If you have any questions or concerns please contact your tutor as soon as possible.
2
Assignment Task: Go Fish
You are to implement a computer-based variant of the card game Go Fish. This is a two-player card game played with a standard deck of cards in which the aim of the game is to capture sets of four cards of the same value (for example 2, 3, Queen, etc.).
You can play an online version here: https://cardgames.io/gofish/. In your version, you will play against one computer opponent.
For assignment 1 you will focus on the planning of the project and the UML diagrams of the game and some simple interactivity. In assignment 2 you will focus on creating the various interactive objects in the game and program the remaining player interactions.
Basic Game Play
To begin, seven cards are dealt to each player from a standard deck of 52 cards. The game plays as follows:
● The first player asks the second player for a card of a particular value. They must ask for a card of the same value as one of the cards in their hand.
● If the second player has a card of that value, they will remove it from their hand and give it to them. If they do not have one, they will tell the player to “Go Fish!”. This means the first player must take a new card from the deck.
● If the first player was successful in asking for a card, they can ask for another card. This continues until they are told to “Go Fish”, at which point the second player will then start the process of asking for a card.
● If a player gets four cards of the same value, they reveal the set to the other player, score 1 point, and remove those cards from their hand.
● If at some point a player has no cards in their hand, they take seven new cards from the deck (or as many as left if there are less than seven).
● The game continues until all sets of cards are formed. The player with the most points wins.
Computer Player:
Obviously, you as a player can make strategic choices as to which card you ask the other player for. Your computer opponent does not need to be “intelligent”… it just needs to at least randomly ask for a card that it has at least one of in its hand. You can implement any other AI (Artificial Intelligence) you like as long as it conforms to that basic game rule. More sophisticated AI can be considered extra functionality (see Assignment 2 brief for more details on this).
3
Project Plan
Having a clear plan for your project before you begin coding is essential for finishing a successful project on time and with minimal stress. So part of this assignment is defining what will be in your project and what you need to do to actually develop it.
Important: You must also read the requirements for Assignment 2 in order to be able to complete the documentation required for Assignment 1.
The documentation you must submit will include the following:
✓ A description of “How to Play”
This will be the information you display on the opening screen of your game to inform the player what they need to do in order to play and win the game. Do not just copy the game play description above, make your own description.
Note: This description can be saved as a text file and read into your game when the program begins. You can also use this as a convenient way to display “help” if the player asks for it.
✓ A development outline of your game
Using a simple outline format (numbered or bullet points) state the main actions that the program will have and then, as sub-points, state the things you will need to do to make that happen.
The outline structure should contain all the elements of your game, as this is a high level description of your approach to the development of your program. You should include at least the following headings and provide examples of happens under each section.
● The game setup
● The player’s turn
● Processing player input
● The opponent’s turn
● Processing opponent AI
● The end game conditions
● Additional Features included, if any – see Assignment 2
● Outline what will be in all your game classes – see Assignment 2
Here is an example to get you started with your project outline:
o The Game Setup
Display an overview of the game rule so the player knows what to do to win. Initialise the game elements:
■ add the players – ask for the player’s name, assign a name to the opponent
■ add all the other things that will happen during initialisation including
● creating a deck of cards and shuffling them
● dealing cards to the players, etc.
4
🔼 🔼
As you can see, you only have to describe the actions the program will take, not the code, for the outline. The idea here is to give you a starting point for when you start writing your code as you can use this as a checklist of the things you need to include.
✓ UML Diagrams
UML diagrams are designed to make structuring your program easier. How to create them will be covered in class, but the general structure is shown here – see Assignment 2 for more details about classes.
You will need UML diagrams for each of the classes you include in your game (as least a Player, Card and Game class).
ClassName
list of attributes (variables)
list of behaviours (functions)
Assignment 1: Marking Criteria [30 marks in total] Project Plan [24]
● Description of the rules (the introduction to your game) [2]
● Outline includes all game functionality (includes both Parts A and B) [2]
● Each section is broken into logical tasks [5]
● Task descriptions given provide sufficient detail [10]
● Tasks are performed in a logical order [5]
UML Diagrams [6]
● Correct structure used (Name, Attributes, Behaviours) [1]
● Included the correct designations for public (+) and private (-) data [2]
● All variables and functions have meaningful names [3]
5