Assignment Title
1. Assignment Aims
In this assignment, you will be given a set of requirements to develop a card game framework using the object-oriented programming concepts covered in this module. Based on the given requirements and specification, you will be required to work through the design/modelling and ultimately the implementation and testing of the software.
2. Learning Outcomes:
On successful completion of this assessment, you will be able to:
Knowledge and Understanding
1. Explain the concepts embodied in the object paradigm
2. Discuss the nature of the relationships between objects within a system from a variety of perspectives
3. Understand the aims, scope and core semantics of an object modelling language
4. Describe informally the semantics of a programming language which enables the writing of object-based software
5. Evaluate the impact of the object-based approach on the software development process
Ability
6. Produce object-based specifications for proposed software systems
7. Implement object-based specification in software using appropriate programming language constructs
3. Assessment Brief
3.1 Scenario
You have recently set up your own software development company specialising in developing indie videogames. You are the only employee of your company (like Concerned Ape – google it if you don’t know what we are talking about) and you are responsible for everything from identifying suitable opportunities for games, right through to the design, development, and testing of software. Your company operates by identifying gaps in the market and quickly developing working prototype games that can then be demonstrated to potential clients to acquire investment to develop a fully functioning commercial version.
3.2 Project Outline
You have noticed the recent success of card games like Magic® or Gwent®. You decided to develop a prototype of a game, called Card-G, that incorporates some aspects of that type of card game. After some thought, you have decided to investigate and develop a low-cost version of a usual PC videogame, to test game dynamics and provide an easy-to-extend preliminary release of the game.
3.3 Project Requirements
In the broadest sense, you are required to design and develop a prototype software game consisting of the following two mandatory features:
1. A card deck generation and selection feature, that should be able to randomly generate a deck of cards and allow the player to select those to be used in the next match.
2. A match feature that allows the player to use the personalised set of cards against a virtual player.
The specification of these two features is detailed below. Please note, these are the mandatory features that must be implemented in your work.
Deck generation and card selection Feature:
This feature is responsible for creating a deck of cards, and the user should be able to select a subset to use in a match.
1. Your prototype must be able to generate three types of cards: increase power (power+), reduce the power (power-) of opponent’s card currently on the board, and cards that allow to steal a card from the opponent’s not-yet-played set (steal).
2. Each card is described by its type, and by the corresponding characteristics. Power+ must indicate the amount of power added; power- must indicate the amount of power removed from the opponent’s board; and steal must indicate if the card to be stolen is selected by the player or randomly picked up.
3. Before a match, the player must be able to select from the generated deck 5 cards to use. Similarly, the virtual player has to pick up 5 cards in some way.
For testing your prototype, your generation component must be able to generate a deck with at least 20 cards. At least one card per type must be included in the deck.
Match Feature:
This feature allows the player to play a match against the virtual player.
1. The card game is turn-based. Each player has a dedicated board where cards played are positioned. At the start of the game, both boards are empty. The virtual player starts first.
2. The game ends when both players have no more cards to play. The player with the highest power score wins. The power score is the sum of the values of all the power+ cards in the corresponding player’s board, minus the sum of the values of all the power- cards played by the opponent.
3. During a turn, the active player (human-controlled or computer-controlled) selects one of the following cards to play.
a. Power+ card. The card is added to the player’s board, and the power score of the player is increased according to the value of the card.
b. Power- card. The card is added to the player’s board, and the power score of the opponent is reduced by a corresponding amount.
c. Steal card. The card is added to the player’s board, and the player gets a card from the opponent’s set. If the opponent’s set is empty, the steal card is transformed into a Power+ card with a power value of 1.
4. A basic computer-controlled player that can play against the human user.
5. During each turn, information about the card played, and updates of score must be shown on screen, and stored in a file. Information logged must include the player, the current power score value, the type and value of the card played, and the cards that have not yet been played.
Implementation Requirements:
You must implement your software in C++. The design should follow well-defined object-oriented paradigm in such a way that new features (new types of cards, new rules, etc.) can be added as necessary with minimal code modification. This will require you to design an architecture which makes use of design patterns, inheritance, and polymorphism. It is important to maintain efficient code and good memory management.
Beyond Mandatory Features
The specification provided above describes the minimum functionalities that your work must meet to gain a passing grade. To gain further marks, you must add relevant functionalities beyond those prescribed in this brief. For instance, a wider set of card types, a smart strategy to be implemented by the virtual opponent to select cards and to play during the match, notions like mana and magic power of players, etc.
4. Marking Scheme
This assignment is worth 100% of your total grade for this module and consists of two parts: Final Report, and Software/Source code. Both pieces of work will be submitted together by 12:00 (Noon) 17/05/2024.
Final Report (50%)
There is a maximum word count of 1500 words and you are encouraged to use a concise writing style, allowing the examiner to easily assess your report. The layout of the report is up to you; however, it must provide the following details in a logical order. Your final report will comprise of the following:
1. Analysis and design to describe the structure and behaviour. This must include:
a. Brief description of the main functionalities of your software
b. Use case, activity, class, and sequence diagrams
c. Brief description and justification of adopted object-oriented design pattern.
d. Any additional material.
2. Implementation notes (not code comments):
a. A table detailing challenges that you have encountered and how you overcame them.
b. Any essential information for running the program that can be useful for the assessor.
3. Testing:
a. Test cases. It is expected that sufficient testing is performed to validate all system functionality in anticipation of performing the demonstration.
b. Evidence of test results.
4. Evaluation:
a. An evaluation of your design. E.g. problems identified during implementation. How were they rectified? What would you do differently next time?
b. An evaluation of your implementation. E.g. how well does it meet the requirements? The importance of any additional functionality.
Final Software and Recorded Demonstration (50%)
1. Final Code includes your full code of your project and Demonstration video.
2. You will have to submit a brief (maximum of 10 minutes) demonstration video of your system for the assignment specification and any advanced features that you have implemented. More details on it would be available near the time.
The final submission must be made through Brightspace. The following three items will be submitted via Brightspace by the deadline:
1. A copy of the final report report
2. Your full project files and source code, this will commonly be your Visual Studio project.
3. Demonstration Video
5. Grading Rubric