Completed userInventory program, with very little issue.

This commit is contained in:
Charles Descamps 2024-09-23 15:32:05 -07:00
parent 2b85212dae
commit 94da93c4e4
3 changed files with 314 additions and 0 deletions

View file

@ -0,0 +1,314 @@
/*
Program Name: User Inventory
Process: ???
Function Input/Parameters: ???
Function Output/Parameters: ???
Function Output/Returned: ???
Device Input/Device: ???
Device Output/Monitor: ???
Dependencies: ???
*/
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <cstring>
#include <vector>
#include <random>
#include <algorithm>
#include <time.h>
using namespace std;
// class definitions
class UserInventory
{
private:
vector<string> inventory;
static int bundleCount;
public:
UserInventory()
{
bundleCount = bundleCount + 1;
// default constructor
inventory.resize(3);
// get a random value between 1 & 5 using standard C method. (outdated, I know...)
int firstRandSlot = rand() % (5 - 1) + 1;
// cout << "First Random Slot Num: " << firstRandSlot << endl;
int secondRandSlot = rand() % (5 - 1) + 1;
// cout << "Second Random Slot Num: " << secondRandSlot << endl;
int thirdRandSlot = rand() % (5 - 1) + 1;
// cout << "Third Random Slot Num: " << thirdRandSlot << endl;
for(int creationIterator = 0; creationIterator < 3; creationIterator++)
{
//
if(creationIterator == 0)
{
if(firstRandSlot == 1)
{
//
inventory[0].assign("Sword");
}
if(firstRandSlot == 2)
{
//
inventory[0].assign("Shield");
}
if(firstRandSlot == 3)
{
//
inventory[0].assign("InvisibilityPotion");
}
if(firstRandSlot == 4)
{
//
inventory[0].assign("Bread");
}
if(firstRandSlot == 5)
{
//
inventory[0].assign("MysteryPotion");
}
}
if(creationIterator == 1)
{
if(secondRandSlot == 1)
{
//
inventory[1].assign("Sword");
}
if(secondRandSlot == 2)
{
//
inventory[1].assign("Shield");
}
if(secondRandSlot == 3)
{
//
inventory[1].assign("InvisibilityPotion");
}
if(secondRandSlot == 4)
{
//
inventory[1].assign("Bread");
}
if(secondRandSlot == 5)
{
//
inventory[1].assign("MysteryPotion");
}
}
if(creationIterator == 2)
{
if(thirdRandSlot == 1)
{
//
inventory[2].assign("Sword");
}
if(thirdRandSlot == 2)
{
//
inventory[2].assign("Shield");
}
if(thirdRandSlot == 3)
{
//
inventory[2].assign("InvisibilityPotion");
}
if(thirdRandSlot == 4)
{
//
inventory[2].assign("Bread");
}
if(thirdRandSlot == 5)
{
//
inventory[2].assign("MysteryPotion");
}
}
}
}
~UserInventory()
{
// default destructor
}
// accessor functions
string getFirstItem()
{
// ask the vector for the first item.
return inventory[0];
}
string getSecondItem()
{
// ask the vector for the second item.
return inventory[1];
}
string getThirdItem()
{
// ask the vector for the third item.
return inventory[2];
}
static int getBundleCount()
{
return bundleCount;
}
void getUserInventory()
{
// ask the vector for all three items
// output the items to screen.
cout << "Your Bundle Selection:" << endl;
cout << "\tItem 1: " << getFirstItem() << endl;
cout << "\tItem 2: " << getSecondItem() << endl;
cout << "\tItem 3: " << getThirdItem() << endl;
cout << endl;
}
// mutator functions
void setFirstItem(string newItem)
{
//
inventory[0].assign(newItem);
}
void setSecondItem(string newItem)
{
//
inventory[1].assign(newItem);
}
void setThirdItem(string newItem)
{
//
inventory[2].assign(newItem);
}
};
int UserInventory::bundleCount = 0;
// function definitions
// main function
int main()
{
bool bundlesInput = false;
bool subItemsInput = false;
bool validItemInput = false;
char bundlesInputChar;
char subItemsInputChar;
int subItemsAccess = 0;
string tempItem;
vector<UserInventory> bundles;
// get a C style number generator seeded.
srand(time(NULL));
// big main loop for entering in bundles
while(!bundlesInput)
{
//
// call the userInventory class
UserInventory currentInv;
// show the user the inventory generated.
currentInv.getUserInventory();
cout << "You can now make substitutions for the inventory." << endl;
while(!subItemsInput)
{
cout << "Please enter which item (1-3) you would like to substitute." << endl;
cin >> subItemsAccess;
cin.ignore();
if(subItemsAccess == 1 || subItemsAccess == 2 || subItemsAccess == 3)
{
//
if(subItemsAccess == 1)
{
//
cout << "What item would you like to substitute " << currentInv.getFirstItem() << " with?" << endl;
}
else if(subItemsAccess == 2)
{
//
cout << "What item would you like to substitute " << currentInv.getSecondItem() << " with?" << endl;
}
else
{
//
cout << "What item would you like to substitute " << currentInv.getThirdItem() << " with?" << endl;
}
// get the item
getline(cin, tempItem);
// check the item that was input.
while(!validItemInput)
{
//
if(tempItem == "Sword")
{
//
validItemInput = true;
}
else if(tempItem == "Shield")
{
//
validItemInput = true;
}
else if(tempItem == "InvisibilityPotion")
{
//
validItemInput = true;
}
else if(tempItem == "Bread")
{
//
validItemInput = true;
}
else if(tempItem == "MysteryPotion")
{
//
validItemInput = true;
}
else
{
// let the user know they did not input a valid value.
cout << "Please enter a valid value." << endl;
}
}
validItemInput = false;
if (subItemsAccess == 1)
{
//
currentInv.setFirstItem(tempItem);
}
else if (subItemsAccess == 2)
{
//
currentInv.setSecondItem(tempItem);
}
else
{
//
currentInv.setThirdItem(tempItem);
}
}
// ask user if they are done substituting
cout << "Finished substituting?: " << endl;
cin >> subItemsInputChar;
cin.ignore();
if (subItemsInputChar == 'y' || subItemsInputChar == 'Y')
{
subItemsInput = true;
}
cout << endl;
}
subItemsInput = false;
// push bundle to vector. (since the user is done modifying.)
bundles.push_back(currentInv);
// show the bundle.
cout << "Completed Bundle: " << endl;
currentInv.getUserInventory();
// ask the user if they are done entering bundles.
cout << "Done entering bundles?: " << endl;
cin >> bundlesInputChar;
cin.ignore();
if (bundlesInputChar == 'y' || bundlesInputChar == 'Y')
{
bundlesInput = true;
}
cout << endl;
cout << "Number of bundle objects: " << UserInventory::getBundleCount() << endl;
}
// code here.
return 0;
}