Advanced Programming Techniques
COSC1076 | Semester 1 2021 Assignment 2 | Implementing 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:
However, this assignment will use a modified version of the rules, detailed in Section 2.5. 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 (Group work): Test Cases, to be developed to ensure your Qwirkle implementation is correct.
- Milestone 2 (Group work): A fully functioning implementation of the base Qwirkle game play, which pass Milestone 1 tests. The group work (milestone 1 & 2) is worth 30% of the course mark. The group component (M1 & M2) is due 11.59pm, Friday 14 May 2021(Week 10).
- Milestone 3 (Individual work): You will individually extend upon your group’s implementation with additional functionality (called enhancements). The individual work is worth 15% of the course mark. The individual component (M3) is due 11.59pm, Friday 28 May 2021(Week 12).
- Milestone 4: Written report & demostration. The report analysing the design and implementation of your software, and the use of your test cases. You will demonstrate your group and individual work. This is where your final work will be graded. The report is due 11.59pm, Friday 28 May 2021(Week 12).
Group Progress Update (Group work): Your group will provide regular updates on your progress in this assignment to your tutor during your weekly lab classes. This will require your group to have completed a list of activities. Group Progress Update will not be marked directly, however, this will influence the final grade.
1.2 Group Work
The group work must be completed in groups of 4.
1. You may form groups with any student in the course.
2. We strongly recommend that you form groups from within your labs, because:
- Your tutor will help you form groups,but only within your lab.
- You will have plenty of opportunity to discuss your group’s progress and get help from your tutor
during the rest of the course. It will be extremely helpful for your whole group to be present, but this can’t happen if you have group members outside the lab.
Groups for Assignment 2 must be registered with your tutor by week 8 lab1. Your tutor “register” your group on Canvas. If you are unable to find a group, discuss this with your tutor as soon as possible.
If at any point you have problems working with your group, inform your tutor immediately, so that issues may be resolved. This is especially important with the online delivery of the course. We will do our best to help manage group issues, so that everybody receives a fair grade for their contributions. To help with managing your group work we will be requiring your group to use particular tools. These are detailed in Section 5.
There are important requirements about keeping your tutor informed if you have been unwell or other wise unable to contribute to your group. Remember your actions affect everybody in your group.
1.3 Learning Outcomes
This assessment relates to all of the learning outcomes of the course which are:
Analyse and Solve computing problems; Design and Develop suitable algorithmic solutions using software concepts and skills both (a) introduced in this course, and (b) taught in pre-requisite courses; Implement and Code the algorithmic solutions in the C++ programming language.
Discuss and Analyse software design and development strategies; Make and Justify choices in software design and development; Explore underpinning concepts as related to both theoretical and practical applications of software design and development using advanced programming techniques.
Discuss, Analyse, and Use appropriate strategies to develop error-free software including static code anal- ysis, modern debugging skills and practices, and C++ debugging tools.
Implement small to medium software programs of varying complexity; Demonstrate and Adhere to good programming style, and modern standards and practices; Appropriately Use typical features of the C++ language include basic language constructs, abstract data types, encapsulation and polymorphism, dy- namic memory management, dynamic data structures, file management, and managing large projects containing multiple source files; Adhere to the C++14 ISO language features.
Demonstrate and Adhere to the standards and practice of Professionalism and Ethics, such as described in the ACS Core Body of Knowledge (CBOK) for ICT Professionals.
Base Program Game play & 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.
本网站支持 Alipay WeChatPay PayPal等支付方式
E-mail: email@example.com 微信号:vipnxx