C++辅导 | COSC1076 Advanced Programming Techniques

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:

This assignment is divided into four Milestones:

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.

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.

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.

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.

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.

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.

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>.

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.

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.

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.

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