Chat with us, powered by LiveChat 1 The Problem This assignment deals with a program places items into separate inventories. In this assign - Aqhomework

1 The Problem This assignment deals with a program places items into separate inventories. In this assign

 

1 The Problem

This assignment deals with a program places items into separate inventories.

In this assignment, you will make use of inheritance–e.g., virtual functions. You will need to complete the Armour and Consumable classes.

1.1 Input

The program reads data from one file, items-0x.txt. Each line in this file represents one item. The first item on every line denotes the Item type–the remainder of the line varies by item type.

 Tool Pickaxe Diamond 100 1 Fortune 5
 Potion Speed-II-Potion Spd*2 1
 Food Tomato Hunger-10 2
 Tool Axe Stone 10 2 Unbreaking 2
 Armour Boots Diamond 100 10 Protection 3 lightning

Each Item type is denoted by a keyword:

  • Tool indicates a Tool object.
  • Armour and Armor indicate an Armour object.
  • Food, Potion, and Disposable indicate a Consumable object.

After the leading keywords, each line has a distinct structure:

  1. The remainder of a Tool line contains–in order–a name, material, durability, speed, enchantment, and enchantment level. Tool Items are not stackable.
  2. The remainder of a Armour line contains–in order–a name, material, durability, defense, enchantment, enchantment level, and element. Armour Items are not stackable.
  3. The remainder of a Consumable line contains–in order–a name, effect, and # uses. Consumable Items are stackable.

1.2 Output

If the program is run with the first provided input file, items-01.txt, the following output should be generated:

Processing Log:
(S) Speed-II-Potion
(S) Tomato
(S) PotatoCamera
(S) PotatoCamera
(S) Boots
(S) Boots

Player Storage Summary:
-Used 50% of 10 slots
 Nme: Speed-II-Potion
 Eft: Spd*2
 Use: 1
 Qty: 1

 Nme: Tomato
 Eft: Hunger-10
 Use: 2
 Qty: 1

 Nme: PotatoCamera
 Eft: ImageQuality-97%
 Use: 5
 Qty: 2

 Nme: Boots
 Dur: 100
 Def: 10
 Mtl: Diamond
 Mdr: Protection (Lvl 3)
 Emt: lightning

 Nme: Boots
 Dur: 100
 Def: 10
 Mtl: Diamond
 Mdr: FeatherFalling (Lvl 4)
 Emt: lightning

Note how there is no Tool output. The Tool class is not present in this assignment. The Tool class will be part of a future assignment.

Your output–including labels and spacing–must match the expected output. The easiest way to see generate the expected output is to run the sample executable solution I have provided.

Hint – each line of output in your display functions should probably start with two leading spaces.

To run this program with items-01.txt as input type:

./storage items-01.txt

(On a Windows system, you would omit the “./”. If you are running from Code::Blocks or a similar development environment, you may need to review how to supply command-line parameters to a running program.)

1.3 Your Tasks

The key abstractions employed in this program are Item, ItemStack, Inventory Armour, and Consumable.

Your overall task is to complete the Armour and Consumable ADTs.

  1. As an initial step, you will need to complete the Armour and Consumable Default Constructors:
    1. Set the stackable attribute–i.e., stackable.
      Hint Remember initializer lists?
    2. Set the name attribute–i.e., Item::name. The attribute, name, is a protected data member of Item.
  2. Implement Armour::clone and Consumable::clone.
  3. Implement Armour::read and Consumable::read.
  4. Implement Armour::display and Consumable::display.

You are expected to generate additional input files to test your code. Test your code throughly before submitting your solution.

1.3.1 Expected Initial Error Messages

If you run make without adding the missing read, clone, and display methods, you will see something simliar to

/usr/bin/ld.gold: the vtable symbol may be undefined because the class is missing its key function
Armour.cpp:14: error: undefined reference to 'vtable for Armour'
/usr/bin/ld.gold: the vtable symbol may be undefined because the class is missing its key function
Consumable.cpp:4: error: undefined reference to 'vtable for Consumable'
/usr/bin/ld.gold: the vtable symbol may be undefined because the class is missing its key function
Consumable.cpp:12: error: undefined reference to 'vtable for Consumable'
/usr/bin/ld.gold: the vtable symbol may be undefined because the class is missing its key function
collect2: error: ld returned 1 exit status
make: *** [storage] Error 1

While these errors may be intimidating, they are simply telling you to implement the necessary virtual functions for Armour and Consumable.

1.3.2 Testing Your Code

I have provided you a set of unit tests. In addition to your normal checks (e.g., running the completed program and performing head-to-head testing) run the unit tests with

make tests
./testNewClasses

You should see:

PASSED -> testDefaultArmourConstructor
PASSED -> testArmourCopyConstructor
PASSED -> testArmourClone
PASSED -> testArmourDisplay
PASSED -> testArmourRead
PASSED -> testDefaultConsumableConstructor
PASSED -> testConsumableCopyConstructor
PASSED -> testConsumableClone
PASSED -> testConsumableDisplay
PASSED -> testConsumableRead

2 Grading

In the grade report that you receive, you will see tests numbered 000 through 008.

  1. Test 000 evaluates your implementation of Armour::Armour()
  2. Test 001 evaluates your implementation of Armour::clone()
  3. Test 002 evaluates your implementation of Armour::display
  4. Test 003 evaluates your implementation of Armour::read
  5. Test 004 evaluates your implementation of Consumable::Consumable()
  6. Test 005 evaluates your implementation of Consumable::clone()
  7. Test 006 evaluates your implementation of Consumable::display
  8. Test 007 evaluates your implementation of Consumable::read
  9. Test 008 (System Test) evaluates all both classes–i.e., your solution as a whole–including output and output formatting.

Do not procrastinate.

3 Files

See Attachment 

4 Submitting

Files to Submit:

  • Armour.cpp–i.e., your version of the Armour ADT.
  • Consumable.cpp–i.e., your version of the Consumable ADT.

Our website has a team of professional writers who can help you write any of your homework. They will write your papers from scratch. We also have a team of editors just to make sure all papers are of HIGH QUALITY & PLAGIARISM FREE. To make an Order you only need to click Ask A Question and we will direct you to our Order Page at WriteDemy. Then fill Our Order Form with all your assignment instructions. Select your deadline and pay for your paper. You will get it few hours before your set deadline.

Fill in all the assignment paper details that are required in the order form with the standard information being the page count, deadline, academic level and type of paper. It is advisable to have this information at hand so that you can quickly fill in the necessary information needed in the form for the essay writer to be immediately assigned to your writing project. Make payment for the custom essay order to enable us to assign a suitable writer to your order. Payments are made through Paypal on a secured billing page. Finally, sit back and relax.

Do you need an answer to this or any other questions?

Do you need help with this question?

Get assignment help from Aqhomework.com Paper Writing Website and forget about your problems.

Aqhomework provides custom & cheap essay writing 100% original, plagiarism free essays, assignments & dissertations.

With an exceptional team of professional academic experts in a wide range of subjects, we can guarantee you an unrivaled quality of custom-written papers.

Click Order now to access our order form, fill your paper details correctly, select your paper deadline and wait for our writers to send a perfectly written assignment. 

Chat with us today! We are always waiting to answer all your questions.