Assignment 2 Qwirkle
In this assignment you will implement a 2-player text-based version of the Board Game Qwirkle.
(a) Qwirle box and pieces (b) Example game state
For an explanation of the rules and gameplay:
- TableTop rules explanation and full game: https://youtu.be/Hp3IwPbZYSE?t=60
- Rules: Available on Canvas.
However, this assignment will use a modified version of the rules, detailed in Section 3.3. In this assignment you will:
- Practice the programming skills covered throughout this course, such as: – ADTs
- Linked Lists
- Dynamic Memory Management – File Processing
- Program State Management
- Exception Handling
- Practice the use of testing
- Implement a medium size C++ program:
- Use features of C++14
- Use elements of the C++ STL
- Work as a team
- Use group collaboration tools
This assignment is divided into four Milestones:
- Milestone 1: Test Cases, to be developed to ensure your Qwirkle implementation is correct.
- Milestone 2: A fully functioning implementation of the base Qwirkle gameplay, which pass Milestone 1tests.
- Milestone 3: Enhancements (minor & major) to the basic implementation. This may only be commencedif Milestone 2 is fully functional and error-free.
- Milestone 4: Written report (no more than 4 pages) analysing the design and implementation of yoursoftware, and the use of your test cases.In additional, you will provide regular updates on your progress in this assignment to your tutor during your weekly lab classes.
1.2 Group Work
This assignment will be completed groups of 4. All members of the group must be from the same Lab. Your group must be registered on Canvas, by your Week 7 Lab.
If you are unable to find a group, please discuss this with your lab demonstrator as soon as possible and before the group registration deadline.
If at any point you have problems working with your group, please inform your lab demonstrator as soon as possible, so that any issues may be resolved. The weekly progress updates should assist in communicating the progress of your group work.
1.3 Relevant Lecture/Lab Material
To complete this assignment (especially some of the enhancements), you will requires skills and knowledge from lecture and lab material for Weeks 7 to 10 (inclusive). You may find that you will be unable to complete some of the activities until you have completed the relevant lab work. However, you will be able to commence work on some sections. Note that grade for your group work requires consistent work throughout all weeks. Thus, do the work you can initially, and continue to build in new features as you learn the relevant skills.
1.4 Start-Up Code
On Canvas you will find start-up code to help you get running with the assignment. This code includes: • Header file definitions for common gameplay aspects
• Example Test Case
The use of the start-up code is described in Section 5.3.
2. Base Program Gameplay & Functionality
The base Qwirkle program implements a 2-player text-based version of Qwirkle, using a reduced rule-set. In the base game, the players take turns placing tiles from their hand onto the board. The rule changes for the base Qwirkle game are described in Section 2.5.
This section details the behaviour of the base Qwirkle program. What is presented in this spec is a description of the main functionality of your Qwirkle program. Some parts are left open for you to decide the best course of action.
This spec does not give the rules of Qwirkle. Canvas contains a link to the rules.
Your base Qwirkle program will be run using the following terminal command.
On launch, the program should display a welcome message.
2.2 Main Menu
The main menu shows the options of your Qwirkle program. By default there should be 4 options. The menu is followed by the user prompt.
The user selects an option by typing a number, and pressing enter. Each menu option is described below. The user prompt is described in Section 2.4, including what to do for invalid input.
3.1 Mandatory Requirements
As part of your implementation, you must:
• Implement your own Linked List
• Use your Linked List implementation to store the player’s hands and the tile bag.
3.2 Milestone 1: Test Cases
For Milestone 1, you must develop test cases for your Qwirkle implementation, including your enhancements. These test cases will help ensure that your Qwirkle implementation is correct.
A single test case consists of 3 files, 2 mandatory and 1 optional.
1. <testname>.input – Input to provide to the Qwirkle program via stdin
2. <testname>.output – Expected output from the Qwirkle program on stdout 3. (Optional) <testname>.save – Expected output of the saved game file.
A test is run using the following sequence of commands.
If this command displays any output, then the test has failed.
To make testing reliable, you should note if the test evaluates the saved game output, then ensure the test uses
a suitable filename in place of <actual_gamesave>.
3.3 Milestone 2: Basic Implementation
For Milestone 2, you must implemented the base Qwirkle program as described in Section 2. Your base implementation should pass all test cases that you developed in Milestone 1.
3.4 Milestone 3: Enhancements
For Milestone 3, you need to develop one or more enhancements to the base Qwirkle program. Milestone 3 is optional. You should only commence enhancements if your base implementation is fully functional.
Enhancements may be either minor or major. To get a higher grade you will need to implement one or more minor or major enhancements. This is described in the marking rubric. Enhancements only count towards this Milestone if they are fully functional and error-free.
3.5 Milestone 4: Report
You are required to submit a report (of no more than 4 pages), that analyses and evaluates what your group has done in this assignment. Your report should comment on:
• Your use of ADTs, such as your Linked List, use of arrays and vectors. • Design of your software
• Efficiency of your implementation
• Effectiveness of your Test Cases
• Group co-ordination and project management
Your report should note the strengths and weakness of these elements. Good analysis provides factual state-
ments, evidence and justifications for conclusions that you draw. A statements such as:
“We did <xyz> because we felt that it was good”
is not analysis. This is an unjustified opinion. Instead, you should aim for statements such as:
“We did <xyz> because it is more efficient. It is more efficient because …”
During Week 12, your group will present and discuss your Qwikle program to your lab demonstrator and/or the lecturer. In your presentation you should:
• Demonstrate your Qwirkle implementation and enhancements
• Demonstrate how your test cases prove your implementation is correct • Discuss the design and efficiency of your software
Each presentation will be 10 minutes long, with 5 minutes for questions.
It is up to your group to decide how to best conduct this presentation. The purpose of the presentation is to demonstrate and convince the assessor of the quality of your group’s software and overall work.
3.7 Weekly Progress Updates
Every 1-2 weeks in labs, you will have a brief update with your lab demonstrator. You can discuss:
1. Your group’s progress
2. Ask questions about your software design and implementation
3. Raise issues
4. Demonstrate your consistent and regular contribution to the group
本网站支持 Alipay WeChatPay PayPal等支付方式
E-mail: email@example.com 微信号:vipnxx