CSCI 235 Spring 2024 Term Project

Algorithmic Adventures II: Exponential Creature Odyssey

Project 6 - Creature Training!

 

 

The mysterious wizard has updated the terms for the job – they would like you to sort out the creatures of the highest level, and equip them with a queue of attacks. How this is necessary for a Creature zoo, we're not sure... but it won't be a good adventure without some action! In this project you will implement the necessary functionality that will allow us to identify our highest ranking Creatures in the Cavern, and prepare them for battle!
training

 

The link to accept the GitHub Classroom assignment can be found on Blackboard

 

This project consists of three tasks:

  1. Modify the Creature class so that each character will maintain a queue of Attacks. Attacks will be defined as a struct within the Creature interface (Creature.hpp) but outside the Creature class definition.

  2. Modify the Creature subclasses Dragon, Ghoul, Mindflayer to maintain adding an Attack to their queue of attacks, and displaying their Attack options. Attacks are different for each type of Creature.

  3. Modify the Cavern class to maintain stacks of the highest level creatures of each category, and set Attacks for our selected Creatures.


Some additional resources


Implementation

 

This project may take a while to implement, start right away!!!

Get Task 1 and 2 out of the way quickly as you may need more testing and debugging time for Task 3.

Work through the tasks sequentially (implement and test). Only move on to a task when you are positive that the previous one has been completed correctly. Remember that the names of classes and methods must exactly match those in this specification (FUNCTION NAMES, PARAMETER TYPES, RETURNS, PRE AND POST CONDITIONS MUST MATCH EXACTLY).

Remember, you must thoroughly document your code!!!



training

Task 1: Modify the Creature class

 

Data Types

The following type must be defined in Creature.hpp but outside the class definitions

Each type of creature will have their own attacks. The type and damage of each attack will be based on the Creature's category. Furthermore, each attack may consist of multiple type of attacks with corresponding damage. For example, a MYSTICAL dragon with FIRE element may have a BITE attack that consists of a PHYSICAL attack with damage 4 and a FIRE attack with damage 1. Such attack would be as follows:

 

 

 

Additional Methods

Task 2: Modify the Dragon, Ghoul, and Mindflayer classes

 

 

Additional Methods

 

 

Additional Methods

 

 

Additional Methods

 

Task 3: Modify the Cavern class

trainingtraining

 

Data Types

The Cavern class must additionally define the following data members. All data members and member functions implemented in previous projects are still there and should be left untouched as distributed with the starter code.

 

quest

NOTE: This diagram only visualizes the Cavern class additions from Task 3. All data members and member functions implemented in previous projects are still there and should be left untouched as distributed with the starter code.

 

Additional Methods

Debugging Help

 

You have been provided with creatures.csv along with your starter code, which you can use with the provided Cavern parameterized constructor to test/debug.


Testing

Although you will no longer submit your test file, you must continue to thoroughly and methodically test your code.

How to compile with your Makefile:
In terminal, in the same directory as your Makefile and your source files, use the following command

This assumes you did not rename the Makefile and that it is the only one in the current directory.

Grading Rubric

Correctness 80% (distributed across unit testing of your submission)
Documentation 15%
Style and Design 5% (proper naming, modularity, and organization)


Important: You must start working on the projects as soon as they are assigned to detect any problems with submitting your code and to address them with us well before the deadline so that we have time to get back to you before the deadline.

There will be no negotiation about project grades after the submission deadline.


Submission:

We will grade the following :

Creature.hpp Creature.cpp Cavern.hpp Cavern.cpp Dragon.hpp Dragon.cpp Ghoul.hpp Ghoul.cpp Mindflayer.hpp Mindflayer.cpp

 

Although Gradescope allows multiple submissions, it is not a platform for testing and/or debugging and it should not be used for that. You MUST test and debug your program locally. To help you not rely too much on Gradescope for testing, we will only allow 5 submissions per day. Before submitting to Gradescope you MUST ensure that your program compiles using the provided Makefile and runs correctly on the Linux machines in the labs at Hunter (see detailed instructions on how to upload, compile and run your files in the “Programming Guidelines” document). That is your baseline, if it runs correctly there it will run correctly on Gradescope, and if it does not, you will have the necessary feedback (compiler error messages, debugger or program output) to guide you in debugging, which you don’t have through Gradescope. “But it ran on my machine!” is not a valid argument for a submission that does not compile. Once you have done all the above you submit it to Gradescope.

Due date:

This project is due April 19
No late submissions will be accepted.**

Important

You must start working on the projects as soon as they are assigned to detect any problems and to address them with us well before the deadline so that we have time to get back to you before the deadline. There will be no extensions and no negotiation about project grades after the submission deadline.

 


Help

Help is available via drop-in tutoring in Lab 1001B (see website for schedule). You will be able to get help if you start early and go to the lab early. We only have 3 UTAs in the lab, the days leading up to the due date will be crowded and you will not be able to get much help then.

 

Authors: Georgina Woo, Tiziana Ligorio