In your swicth statement for the select variable I see something interesting.

Code:
******case 3:

*********{
************cout << "What Armor would you like to buy?" << endl;
************cout << endl;
************cout << "We have 1) Leather, 2) Ring, 3) Splintered, 4) Mail...";
*********
*********int armor = 1;
*********cin >> armor;

******if (player.getGold() < mGoldRequired )

*********{
************cout << endl;
************cout << "You dont have enough gold for that" << endl;
************cout << endl;

******break ;
*********}

******if(armor == 1)
*********{
************mClothingName = "Leather Armor";
************cout << endl;
************cout << "You have purchased " << mClothingName << " for 100 Gold "<< endl;
************cout << endl;
************mGoldRequired = 100;
************player.SetGold (- 100);
************player.SetHitPoints (+ 20);
************player.SetMaxHitPoints ( player.getHitPoints());
*********}

******else if(armor == 2)
*********{
************mClothingName = "Ring Armor";
************cout << endl;
************cout << "You have purchased " << mClothingName << " for 200 Gold " << endl;
************cout << endl;
************mGoldRequired = 200;
************player.SetGold (- 200);
************player.SetHitPoints (+ 30);
************player.SetMaxHitPoints ( player.getHitPoints());
*********}
******

******else if(armor == 3)
*********{
************mClothingName = "Splintered Armor";
************cout << endl;
************cout << "You have purchased " << mClothingName << " for 300 Gold " << endl;
************cout << endl;
************mGoldRequired = 300;
************player.SetGold (- 300);
************player.SetHitPoints (+ 40);
************player.SetMaxHitPoints ( player.getHitPoints());
*********}

******else
*********{
************mClothingName = "Mail Armor";
************cout << endl;
************cout << "You have purchased " << mClothingName << " for 500 Gold " << endl;
************cout << endl;
************mGoldRequired = 500;
************player.SetGold (- 500);
************player.SetHitPoints (+ 50);
************player.SetMaxHitPoints ( player.getHitPoints());
*********}
******break;
*********}
The part in specific is this

Code:
************mGoldRequired = 500;
************player.SetGold (- 500);
From what I gather your seting the price for the item and then just removing that amount if they pick that option without checking if they have enough money to do so. I think on each set you should be testing if the players coin value is greater than the price of the item. That way you only call the player.SetGold() if the player can actually afford that item and display an error if they can't.

Code:
if(player.GetGold() > mGoldRequired)
{
       player.setGold(-500);
}
else
{
      cout<<"You do not have enough gold to buy this item"<<endl;
}
checking to see if the players gold count is greater then the items cost would allow you to only allow the purchase of the item if the players gold count is greater than the gold count of the item's cost. From what I see the code doing is it is not checking on each item and instead just removes the amount even if the user doesn't have the money to buy it. I hope this helps out.

Last edited by pein87; 28Aug2011 at 05:40..