Having trouble debugging this myself

Started by
3 comments, last by lordoftools 18 years, 8 months ago
Hi im writeing a game in which it reads a .dat file for the saved game info called 'profiles.dat' i made three functions to go through the process of saving this data one for setting variables (not needed for this thread), one for checking to see if the profile has been saved before, and one to pick the profiles.dat file apart to overwrite or append the new game to it. I have pasted the two functions in below but the one im having trouble with is void SaveGame(). I am getting an infinate loop when trying to overwritten a saved game rather than appending. The append works fine and if you paste this code directly into MSVC++ (which im using) the loop in question is between 103-116. Beyond that there maybe problems but until i can fix this loop i can't continue. The purpose of the loop is to store all the data up until the profile in question appears then there is another process which will save teh data after the file, and another to write the first chunk of data, the new data, then the second chunk.
[source code=cpp]
//checks to see if the use already has a profile by that name saved
bool CheckSaved()
{
	string Data=strPath + "\\profiles.dat", strTemp;
	ifstream inFile(Data.c_str());

	while (inFile >> Data)
	{
		strTemp="profile.name=" + profile.Name;
		if (Data==strTemp)
		{
			inFile.close();
			return(true);
		}
	};
	
	inFile.close();
	return (false);
}

//rewrites the files needed for saving
void SaveGame()
{
	bool Saved;
	string Data=strPath + "\\profiles.dat", strOldData[100], strOldData2[100], strTemp;
	char chrLine[2000];
	int cnt=0;

	//empty strOldData incase this isn't the first save
	for (i=0; i<=99; i++)
		strOldData=" ";

	Saved=CheckSaved();

	if (Saved==false)
	{
		fstream inFile(Data.c_str(), ios::in);

		//store information in file for reprint
		while (! inFile.eof())
		{
			inFile.getline(chrLine,2000);
			
			//remove extra space
			for (i=0; i<=1999; i++)
				chrLine=chrLine[i+1];

			//convert to string array
			for (i=0; i<=1999; i++)
				strOldData[cnt]=strOldData[cnt]+chrLine;

			cnt++;
		};
		inFile.close();
		
		//rewrite the old info
		cnt=1;
		fstream outFile(Data.c_str(), ios::out);
		outFile<<strOldData[0];
		while (!(strOldData[cnt]==" "))
		{
			outFile<<endl<<strOldData[cnt];
			cnt++;
		};

		//write the new info
		outFile<<endl<<endl;
		outFile<<" profile.name="<<profile.Name<<endl;
		outFile<<" profile.gun="<<profile.Gun<<endl;
		outFile<<" profile.location="<<profile.Location<<endl;
		outFile<<" profile.cash="<<profile.Cash<<endl;
		outFile<<" profile.debt="<<profile.Debt<<endl;
		outFile<<" profile.bank="<<profile.Bank<<endl;
		outFile<<" profile.hentchmen="<<profile.Hentchmen<<endl;
		outFile<<" profile.health="<<profile.Health<<endl;
		outFile<<" profile.space="<<profile.Space<<endl;
		outFile<<" profile.day="<<profile.Day<<endl;
		outFile<<" loc.name="<<loc.Name<<endl;
		outFile<<" loc.police="<<loc.Police<<endl;
		outFile<<" loc.mindrugs="<<loc.minDrugs<<endl;
		outFile<<" loc.maxdrugs="<<loc.maxDrugs<<endl;	
		
		outFile.close();
		
	}
	else
	{
		//open file
		fstream inFile(Data.c_str(), ios::in);

		//store information in file before the saved game for reprint
		cnt=0;
		inFile.getline(chrLine,2000);

		//remove extra space
		for (i=0; i<=1999; i++)
			chrLine=chrLine[i+1];

		//convert to string array
		for (i=0; i<=1999; i++)
			strOldData[cnt]=strOldData[cnt]+chrLine;

		while (!(strOldData[cnt]==("profile.name=" + profile.Name)))
		{
			inFile.getline(chrLine,2000);
			
			//remove extra space
			for (i=0; i<=1999; i++)
				chrLine=chrLine[i+1];

			//convert to string array
			for (i=0; i<=1999; i++)
				strOldData[cnt]=strOldData[cnt]+chrLine;

			cnt++;
		};

		if (strOldData[1]==" ")
			strOldData[0]=" ";

		//store information in file after the saved game for reprint
		cnt=0;
		inFile.getline(chrLine,2000);

		//remove extra space
		for (i=0; i<=1999; i++)
			chrLine=chrLine[i+1];

		//convert to string array
		for (i=0; i<=1999; i++)
			strTemp=strTemp+chrLine;

		//scan until it finds the line with the profile
		while (!(strTemp==("profile.name=" + profile.Name)))
		{
			inFile.getline(chrLine,2000);
			
			//remove extra space
			for (i=0; i<=1999; i++)
				chrLine=chrLine[i+1];

			//convert to string array
			for (i=0; i<=1999; i++)
				strTemp=strTemp+chrLine;
		};

		//scan until it finds the line with the last stat in the saved game [loc.maxdrugs=12]
		while (!(strTemp=="loc.maxdrugs=12"))
		{
			inFile.getline(chrLine,2000);
			
			//remove extra space
			for (i=0; i<=1999; i++)
				chrLine=chrLine[i+1];

			//convert to string array
			for (i=0; i<=1999; i++)
				strTemp=strTemp+chrLine;

		};

		//store the rest of the file
		while (!(inFile.eof()))
		{
			inFile.getline(chrLine,2000);
			
			//remove extra space
			for (i=0; i<=1999; i++)
				chrLine=chrLine[i+1];

			//convert to string array
			for (i=0; i<=1999; i++)
				strOldData2[cnt]=strOldData2[cnt]+chrLine;

			cnt++;
		};

		if (strOldData2[1]==" ")
			strOldData2[0]=" ";

		inFile.close();
		
		//rewrite the begining old info [1]
		cnt=1;
		fstream outFile(Data.c_str(), ios::out);
		outFile<<strOldData[0];
		while (!(strOldData[cnt]==" "))
		{
			outFile<<endl<<strOldData[cnt];
			cnt++;
		};

		//write new saved data
		//outFile<<endl<<endl;
		outFile<<" profile.name="<<profile.Name<<endl;
		outFile<<" profile.gun="<<profile.Gun<<endl;
		outFile<<" profile.location="<<profile.Location<<endl;
		outFile<<" profile.cash="<<profile.Cash<<endl;
		outFile<<" profile.debt="<<profile.Debt<<endl;
		outFile<<" profile.bank="<<profile.Bank<<endl;
		outFile<<" profile.hentchmen="<<profile.Hentchmen<<endl;
		outFile<<" profile.health="<<profile.Health<<endl;
		outFile<<" profile.space="<<profile.Space<<endl;
		outFile<<" profile.day="<<profile.Day<<endl;
		outFile<<" loc.name="<<loc.Name<<endl;
		outFile<<" loc.police="<<loc.Police<<endl;
		outFile<<" loc.mindrugs="<<loc.minDrugs<<endl;
		outFile<<" loc.maxdrugs="<<loc.maxDrugs<<endl;	

		//rewrite the end old info [1]
		cnt=1;
		outFile<<strOldData2[0];
		while (!(strOldData2[cnt]==" "))
		{
			outFile<<endl<<strOldData2[cnt];
			cnt++;
		};

		outFile.close();
	
	}
}

I apologize if this turns out to be some simple error that i should have been able to fix but im still a bit green. -Lordoftools
-Lordoftools"Knowledge is not only a gift it's a responcibility."
Advertisement
Well, the code that you have posted is not easily debuggable without the code that it references (e.g. profile.Name). I can say, however, the you might want to include a final condition to your while loop, such as while( !( strOldData[cnt] == ( "profile.name=" + profile.Name ) ) && cnt < 100 ) because, as far as I can see, you could go through the array of strings and not find a match.

[edit] You should get familiar with your system's/IDE's debugger and create a simple test of what you think the app should be doing in that loop and see what really happens. You may be surprised.


jfl.
profile.name which it's refering is a string and the func i posted 'CheckSaved()' checks to see if that string is in teh file or not. i know that it is in the file or it would proform the first condition to the if statment in SaveGame().

if it helps here's all the code

[source code=cpp]//for VC++#include "stdafx.h"//for basic functions i.e. (cout,cin)#include <iostream>#include <afx.h>//for file manipulation#include <fstream>#include <cstdlib>//For getch()/getche()#include <conio.h>//For srand() and time()#include <stdio.h>#include <stdlib.h>#include <time.h>//for the string convertions#include <sstream>#include <cstring>#include <stdexcept>using namespace std;//Global Variable Declarationstruct USERDATA{	string Name, Gun, Location;	int Cash, Debt, Bank, Hentchmen, Health, Space, Day;	};struct LOCDATA{	string Name;	int Police, minDrugs, maxDrugs;};int i;struct LOCDATA loc;struct USERDATA profile;enum Drugs {ACID=1, COCAINE, HASHISH, HERION, LUDES, MDA, OPIUM, PCP, PEYOTE, SHROOMS, SPEED, WEED};enum LOCS {BRONX=1, GHETTO, CENTRALPARK, MANHATTAN, CONEYISLAND, BROOKLYN, QUEENS, STATENISLAND};WORD wText,      wBkg,      wOldColors;int intDrugArray[12];string cstrDrugArray[12];int intInvArray[12];string strInvArray[12];string strPath;//function delcarationsWORD SetConsoleColors(HANDLE hConsole, WORD wColorText, WORD wColorBkg);WORD GetConsoleColors(HANDLE hConsole);wstring get_module_path_wide(void);string wsts(const wstring &src_string);int MainMenu();string ProfileMenu();inline std::string stringify(int x);string BufferStr(string strString, int MAX_LEN);void BuyingDrugs(string Drug, int Price);void PrintStats();void CityOperations(bool NewDay);void BankMenu();void SellDrugsMenu();void BuyDrugsMenu();void ChangeLocMenu();void LoanSharkMenu();void SaveGame();bool CheckSaved();//Start off functionint main(int argc, char* argv[]){	//Color change sample: (ranges 0-15) [uncommented part fo global variable declare]		/*wText = 1; 		wBkg = 5; 		wOldColors;		HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);		wOldColors = SetConsoleColors(hConsole, wText, wBkg);		cout << "Colors in the console!" << endl << endl;		SetConsoleColors(hConsole, wOldColors, 0);*/	//Initialize random generator 	srand ( time(NULL) );	//Initialize global variables	intInvArray[250]=0;	strPath=wsts(get_module_path_wide());	//Function level Delcarations	string cstrProfile;	string strTemp;	int intMnuOpt;	//Displays Main Menu	intMnuOpt=MainMenu();	//ERROR code	if (intMnuOpt==0)	{		system("cls");		cout<<"int MainMenu() returned ERROR code '0'\n";	}	//New Game code	if (intMnuOpt==1)	{		//Variable initalization. 		profile.Bank=0;		profile.Health=100;		profile.Day=1;		profile.Cash=rand()%3000 + 2000;		profile.Debt=rand()%9000 + 1000;		profile.Gun="NONE";		profile.Location="BRONX";		profile.Hentchmen=rand()%4 + 7;		profile.Space=profile.Hentchmen * 10;		loc.maxDrugs=12;		//Set user name.		system("cls");		cout<<"Enter your name: ";		cin>>strTemp;		profile.Name=strTemp.c_str();				//Starts off in BRONX		loc.Name="BRONX";		loc.minDrugs=7;		loc.Police=10;		CityOperations(false);	}	//Load Profile code	if (intMnuOpt==2)	{		//displays menu, prompts profile choice, stores the user ID		cstrProfile=ProfileMenu();		//ERROR checking		if (cstrProfile=="NULL")		{			system("cls");			cout<<"string ProfileMenu() returned ERROR code 'NULL'\n";		}		//Profile Contence:		//see USERDATA struct (variable - profile)		//use ascii values of each digit to prevent easy editing		//temp debugger code		system("cls");		cout<<"Profile: "<<cstrProfile<<" was selected.\n";	}	//Quit Code	if (intMnuOpt==3)	{		system("cls");		cout<<"Thank you for playing \"Drug Wars\" -- By: Derik Hammer.";		getch();		return 0;	}	//Application Terminator	return 0;}//Operates the features of this locationvoid CityOperations(bool NewDay){		if (NewDay==true)	{		//increase the day		profile.Day++;		//increase debt due to interest		if (profile.Day%7==0)			profile.Debt=profile.Debt+(profile.Debt*.12);	}	system("cls");	PrintStats();	//sets up the drugs which are in this city (price, how many, what kind)	int intTemp, cnt=0, DrugChecker;	bool PickAgain;	int intChoice;	HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);		intTemp=rand()%(loc.maxDrugs-loc.minDrugs)+loc.minDrugs;	while (intTemp-1>=cnt)	{		do 		{			PickAgain=false;			DrugChecker=rand()%12+1;			for (i=0; i<=11; i++)			{				if (intDrugArray==DrugChecker)					PickAgain=true;			}		}		while (PickAgain==true);		intDrugArray[cnt]=DrugChecker;		cnt++;	};	for (i=intTemp; i<=11; i++)		intDrugArray=0;	//Converts the int array to a string with the drug names and then makes the int array	//into the prices array at the same time.	for (i=0; i<=11; i++)	{		switch (intDrugArray)		{				case ACID:				cstrDrugArray="ACID";				intDrugArray=rand()%3400+1000;				break;			case COCAINE:				cstrDrugArray="COCAINE";				intDrugArray=rand()%14000+15000;				break;			case HASHISH:				cstrDrugArray="HASHISH";				intDrugArray=rand()%800+480;				break;			case HERION:				cstrDrugArray="HERION";				intDrugArray=rand()%7500+5500;				break;			case LUDES:				cstrDrugArray="LUDES";				intDrugArray=rand()%49+11;				break;			case MDA:				cstrDrugArray="MDA (Ecstasy)";				intDrugArray=rand()%2900+1500;				break;			case OPIUM:				cstrDrugArray="OPIUM";				intDrugArray=rand()%710+540;				break;			case PCP:				cstrDrugArray="PCP";				intDrugArray=rand()%1500+1000;				break;			case PEYOTE:				cstrDrugArray="PEYOTE";				intDrugArray=rand()%480+220;				break;			case SHROOMS:				cstrDrugArray="SHROOMS";				intDrugArray=rand()%670+630;				break;			case SPEED:				cstrDrugArray="SPEED";				intDrugArray=rand()%160+90;				break;			case WEED:				cstrDrugArray="WEED";				intDrugArray=rand()%575+315;				break;			default:				cstrDrugArray="ERROR: NO_DRUG";				break;		}		}	//Run cops coding here, seperate function for the battle run only option when un-armed	if (NewDay==true)	{	}	//print city menu	//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]	SetConsoleColors(hConsole, 10, 0);	cout<<"Welcome to "<<loc.Name<<"!\n";		//if its the home city [BRONX] then display spec menu	if (loc.Name=="BRONX")	{specPickAgain:		cout<<"1. Check out available Drugs.\n";		cout<<"2. Sell Drugs.\n";		cout<<"3. Change location.\n";		cout<<"4. Visit Bank.\n";		cout<<"5. Visit Loan Shark.\n";		cout<<"6. Save Game.\n";		cout<<"7. Quit.\n";		cout<<"Selection: ";		//await choice		cin>>intChoice;		switch (intChoice)		{		case 1:			BuyDrugsMenu();			break;		case 2:			SellDrugsMenu();			break;		case 3:			ChangeLocMenu();			break;		case 4:			BankMenu();			break;		case 5:			LoanSharkMenu();			break;		case 6:			SaveGame();			break;		case 7:			break;		default:			goto specPickAgain;			break;		}	}	else	{normPickAgain:		cout<<"1. Check out available Drugs.\n";		cout<<"2. Sell Drugs.\n";		cout<<"3. Change location.\n";		cout<<"Selection: ";		//await choice		cin>>intChoice;		switch (intChoice)		{		case 1:			BuyDrugsMenu();			break;		case 2:			SellDrugsMenu();			break;		case 3:			ChangeLocMenu();			break;		default:			system("cls");			PrintStats();			//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]			SetConsoleColors(hConsole, 10, 0);			cout<<"Invalid choice, please pick again.\n";			goto normPickAgain;			break;		}	}	//revert to old colors	SetConsoleColors(hConsole, 15, 0);}void BankMenu(){	//function level delcarations	char chrChoice;	int intAmt;	bool boolDep=false, boolWithd=false;	//reset screen and disp stats again	system("cls");	PrintStats();	//print bank options	//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]	HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);	SetConsoleColors(hConsole, 10, 0);	cout<<"Welcome to the Bank!\n\n";	//check to see what he can do in the bank	if (profile.Cash>0)	{		cout<<"D. Deposit (Up to $"<<profile.Cash<<")\n";		boolDep=true;	}	if (profile.Bank>0)	{		cout<<"W. Withdraw (Up to $"<<profile.Bank<<")\n";		boolWithd=true;	}	cout<<"L. Leave Bank.\n";		//await choice	cout<<"Selection: ";	cin>>chrChoice;	if ((chrChoice=='d' || chrChoice=='D') && boolDep==true)	{		//disp deposit menu		system("cls");		PrintStats();		SetConsoleColors(hConsole, 10, 0);DepAgain:		cout<<"Bank Deposit -- $"<<profile.Cash<<" available.\n\n";		cout<<"Deposit Amount (0 to cancel): ";		//await choice		cin>>intAmt;		if (intAmt>profile.Cash || intAmt<0)		{			system("cls");			PrintStats();			SetConsoleColors(hConsole, 10, 0);			cout<<"Invalid $ amount please pick again.\n\n";			goto DepAgain;		}		//alter $ amounts accordingly		profile.Cash=profile.Cash-intAmt;		profile.Bank=profile.Bank+intAmt;	}	else if ((chrChoice=='w' || chrChoice=='W') && boolWithd==true)	{		//disp withdraw menu		system("cls");		PrintStats();		SetConsoleColors(hConsole, 10, 0);WDrawAgain:		cout<<"Bank Withdraw -- $"<<profile.Bank<<" available.\n\n";		cout<<"Withdraw Amount (0 to cancel): ";		//await choice		cin>>intAmt;		if (intAmt>profile.Bank || intAmt<0)		{			system("cls");			PrintStats();			SetConsoleColors(hConsole, 10, 0);			cout<<"Invalid $ amount please pick again.\n\n";			goto WDrawAgain;		}		//alter $ amounts accordingly		profile.Bank=profile.Bank-intAmt;		profile.Cash=profile.Cash+intAmt;	}	else if (chrChoice=='l' || chrChoice=='L')	{		//return to your city		CityOperations(false);	}	else		BankMenu();	CityOperations(false);	//revert to old colors	SetConsoleColors(hConsole, 15, 0);}void SellDrugsMenu(){	//debugger code	cout<<"debugger code: in void SellDrugsMenu()\n";}void BuyingDrugs(string Drug, int Price){	//Function level Declarations	HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);	int intAmt;	//print menu	system("cls");	PrintStats();	//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]	SetConsoleColors(hConsole, 10, 0);	cout<<"How much "<<Drug<<" you want? ($"<<Price<<" each)"<<endl;	cout<<"Quantity (0 to cancel): ";	cin>>intAmt;		while ((intAmt*Price>profile.Cash) || (intAmt>profile.Space))	{		//print menu		system("cls");		PrintStats();		//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]		SetConsoleColors(hConsole, 10, 0);		cout<<"You don't have enough money or enough space for that much "<<Drug<<"!\n\n";		cout<<"How much "<<Drug<<" you want? ($"<<Price<<" each)"<<endl;		cout<<"Quantity (0 to cancel): ";		cin>>intAmt;	}	//updates the space in your inv	profile.Space=profile.Space-intAmt;	//fills the drug into the available array slot	for (i=0; i<=11; i++)	{		if (intInvArray==0)		{			strInvArray=Drug;			intInvArray=Price;			i=12;		}	}	//reverts back to old colors	SetConsoleColors(hConsole, 10, 0);	BuyDrugsMenu();}void CheckWhichDrug(char chrDrug, int intTemp[12]){	//Function level Declarations	HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);	int intChoice;RePick:	system("cls");	PrintStats();	//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]	SetConsoleColors(hConsole, 10, 0);	switch (chrDrug)	{	case 'h':		cout<<"Did you want HASHISH or HERION?\n\n";		cout<<"1. HASHISH.\n";		cout<<"2. HERION.\n";		cout<<"Selection (0 to cancel):";		//await choice		cin>>intChoice;		switch (intChoice)		{		case 0:			BuyDrugsMenu();		case 1:			BuyingDrugs("HASHISH", intTemp[3]);			break;		case 2:			BuyingDrugs("HERION", intTemp[4]);			break;		default:			goto RePick;			break;		}		break;	case 'p':		cout<<"Did you want PCP or PEYOTE?\n\n";		cout<<"1. PCP.\n";		cout<<"2. PEYOTE.\n";		cout<<"Selection (0 to cancel):";		//await choice		cin>>intChoice;		switch (intChoice)		{		case 0:			BuyDrugsMenu();		case 1:			BuyingDrugs("PCP", intTemp[8]);			break;		case 2:			BuyingDrugs("PEYOTE", intTemp[9]);			break;		default:			goto RePick;			break;		}		break;	case 's':		cout<<"Did you want SHROOMS or SPEED?\n\n";		cout<<"1. SHROOMS.\n";		cout<<"2. SPEED.\n";		cout<<"Selection (0 to cancel):";		//await choice		cin>>intChoice;		switch (intChoice)		{		case 0:			BuyDrugsMenu();		case 1:			BuyingDrugs("SHROOMS", intTemp[10]);			break;		case 2:			BuyingDrugs("SPEED", intTemp[11]);			break;		default:			goto RePick;			break;		}		break;	}}void BuyDrugsMenu(){	//Function level Declarations	char chrChoice;		bool oneS=false, twoS=false, oneP=false, twoP=false, oneH=false, twoH=false;	int intTemp[12];	HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);	system("cls");	PrintStats();	//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]	SetConsoleColors(hConsole, 10, 0);	for (i=0; i<=11; i++)	{		if (intDrugArray<=profile.Cash)			goto SkipFor;	}	cout<<"Your broke! Go somewhere else or go sell some of your product to make up the $$$.\n";	goto EndOfFunc;SkipFor:	//print menu options	cout<<"So you wanta buy some dope? Here's your choices...\n\n";InvalidChoice:	for (i=0; i<=11; i++)	{		if (cstrDrugArray=="ACID")		{			cout<<"A. ACID - $"<<intDrugArray<<endl;			intTemp[1]=intDrugArray;		}		else if (cstrDrugArray=="COCAINE")		{			cout<<"C. COCAINE - $"<<intDrugArray<<endl;			intTemp[2]=intDrugArray;		}		else if (cstrDrugArray=="HASHISH")		{			cout<<"H. HASHISH - $"<<intDrugArray<<endl;			intTemp[3]=intDrugArray;			oneH=true;		}		else if (cstrDrugArray=="HERION")		{			cout<<"H. HERION - $"<<intDrugArray<<endl;			intTemp[4]=intDrugArray;			twoH=true;		}		else if (cstrDrugArray=="LUDES")		{			cout<<"L. LUDES - $"<<intDrugArray<<endl;			intTemp[5]=intDrugArray;		}		else if (cstrDrugArray=="MDA")		{			cout<<"M. MDA - $"<<intDrugArray<<endl;			intTemp[6]=intDrugArray;		}		else if (cstrDrugArray=="OPIUM")		{			cout<<"O. OPIUM - $"<<intDrugArray<<endl;			intTemp[7]=intDrugArray;		}		else if (cstrDrugArray=="PCP")		{			cout<<"P. PCP - $"<<intDrugArray<<endl;			intTemp[8]=intDrugArray;			oneP=true;		}		else if (cstrDrugArray=="PEYOTE")		{			cout<<"P. PEYOTE - $"<<intDrugArray<<endl;			intTemp[9]=intDrugArray;			twoP=true;		}		else if (cstrDrugArray=="SHROOMS")		{			cout<<"S. SHROOMS - $"<<intDrugArray<<endl;			intTemp[10]=intDrugArray;			oneS=true;		}		else if (cstrDrugArray=="SPEED")		{			cout<<"S. SPEED - $"<<intDrugArray<<endl;			intTemp[11]=intDrugArray;			twoS=true;		}		else if (cstrDrugArray=="WEED")		{				cout<<"W. WEED - $"<<intDrugArray<<endl;				intTemp[12]=intDrugArray;		}	}	cout<<"B. Back to "<<profile.Location<<".\n";	cout<<"Selection: ";	cin>>chrChoice;	//check for duplicate letters and proseed with purchase	if (chrChoice=='A' || chrChoice=='a')	{		BuyingDrugs("ACID", intTemp[1]);	}	else if (chrChoice=='B' || chrChoice=='b')	{		CityOperations(false);	}	else if (chrChoice=='C' || chrChoice=='c')	{		BuyingDrugs("COCAINE", intTemp[2]);	}	//for duplicate H's	else if ((chrChoice=='H' || chrChoice=='h') && (oneH==true && twoH==true))	{		CheckWhichDrug('h', intTemp);	}	//for none duplicate	else if ((chrChoice=='H' || chrChoice=='h') && (oneH==false || twoH==false))	{		for (i=0; i<=11; i++)		{			if (cstrDrugArray=="HASHISH")			{				BuyingDrugs("HASHISH", intTemp[3]);				i=12;			}			if (cstrDrugArray=="HERION")			{				BuyingDrugs("HERION", intTemp[4]);				i=12;			}		}	}	else if (chrChoice=='L' || chrChoice=='l')	{		BuyingDrugs("LUDES", intTemp[5]);	}	else if (chrChoice=='M' || chrChoice=='m')	{		BuyingDrugs("MDA", intTemp[6]);	}	else if (chrChoice=='O' || chrChoice=='o')	{		BuyingDrugs("OPIUM", intTemp[7]);	}	//for duplicate P's	else if ((chrChoice=='P' || chrChoice=='p') && (oneP==true && twoP==true))	{		CheckWhichDrug('p', intTemp);	}	//for none duplicate	else if ((chrChoice=='P' || chrChoice=='p') && (oneP==false || twoP==false))	{		for (i=0; i<=11; i++)		{			if (cstrDrugArray=="PCP")			{				BuyingDrugs("PCP", intTemp[8]);				i=12;			}			if (cstrDrugArray=="PEYOTE")			{				BuyingDrugs("PEYOTE", intTemp[9]);				i=12;			}		}	}	//for duplicate S's	else if ((chrChoice=='S' || chrChoice=='s') && (oneS==true && twoS==true))	{		CheckWhichDrug('s', intTemp);	}	//for none duplicate	else if ((chrChoice=='S' || chrChoice=='s') && (oneS==false || twoS==false))	{		for (i=0; i<=11; i++)		{			if (cstrDrugArray=="SHROOMS")			{				BuyingDrugs("SHROOMS", intTemp[10]);				i=12;			}			if (cstrDrugArray=="SPEED")			{				BuyingDrugs("SPEED", intTemp[11]);				i=12;			}		}	}	else if (chrChoice=='W' || chrChoice=='w')	{		BuyingDrugs("WEED", intTemp[12]);	}	else	{		system("cls");		PrintStats();		SetConsoleColors(hConsole, 10, 0);		cout<<"Invalid selection please pick again...\n\n";		goto InvalidChoice;	}EndOfFunc:	//reverts colors back	SetConsoleColors(hConsole, 15, 0);}void ChangeLocMenu(){	//Function level Declarations	int intChoice;		HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);	system("cls");	PrintStats();	//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]	SetConsoleColors(hConsole, 10, 0);LocPickAgain:	cout<<"Where would you like to go?\n\n";	cout<<"1. BRONX\n";	cout<<"2. GHETTO\n";	cout<<"3. CENTRAL PARK\n";	cout<<"4. MANHATTAN\n";	cout<<"5. CONEY ISLAND\n";	cout<<"6. BROOKLYN\n";	cout<<"7. QUEENS\n";	cout<<"8. STATEN ISLAND\n";	cout<<"9. Back to "<<loc.Name<<"\n";	cout<<"Selection: ";	//await selection	cin>>intChoice;	switch (intChoice)	{	case BRONX:		if (profile.Location=="BRONX")			intChoice=9;		profile.Location="BRONX";		loc.Name="BRONX";		loc.minDrugs=7;		loc.maxDrugs=12;		loc.Police=10;		break;	case GHETTO:		if (profile.Location=="GHETTO")			intChoice=9;		profile.Location="GHETTO";		loc.Name="GHETTO";		loc.minDrugs=8;		loc.maxDrugs=12;		loc.Police=5;		break;	case CENTRALPARK:		if (profile.Location=="CENTRALPARK")			intChoice=9;		profile.Location="CENTRALPARK";		loc.Name="CENTRAL PARK";		loc.minDrugs=6;		loc.maxDrugs=12;		loc.Police=15;		break;	case MANHATTAN:		if (profile.Location=="MANHATTAN")			intChoice=9;		profile.Location="MANHATTAN";		loc.Name="MANHATTAN";		loc.minDrugs=4;		loc.maxDrugs=12;		loc.Police=80;		break;	case CONEYISLAND:		if (profile.Location=="CONEYISLAND")			intChoice=9;		profile.Location="CONEYISLAND";		loc.Name="CONEY ISLAND";		loc.minDrugs=6;		loc.maxDrugs=12;		loc.Police=20;		break;	case BROOKLYN:		if (profile.Location=="BROOKLYN")			intChoice=9;		profile.Location="BROOKLYN";		loc.Name="BROOKLYN";		loc.minDrugs=4;		loc.maxDrugs=12;		loc.Police=70;		break;	case QUEENS:		if (profile.Location=="QUEENS")			intChoice=9;		profile.Location="QUEENS";		loc.Name="QUEENS";		loc.minDrugs=6;		loc.maxDrugs=12;		loc.Police=50;		break;	case STATENISLAND:		if (profile.Location=="STATENISLAND")			intChoice=9;		profile.Location="STATENISLAND";		loc.Name="STATEN ISLAND";		loc.minDrugs=6;		loc.maxDrugs=12;		loc.Police=20;		break;	case 9:		break;	default: 		system("cls"); 		PrintStats();		//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]		SetConsoleColors(hConsole, 10, 0);		cout<<"Invalid entry please pick again.\n\n";		goto LocPickAgain;		break;	}	//revert to old colors	SetConsoleColors(hConsole, 15, 0);	//if the city never changes then don't penalize with a new day	if (intChoice==9)	{		CityOperations(false);	}	else	{		CityOperations(true);	}}void LoanSharkMenu(){	//Function level Declarations	int intChoice, intAmt;	HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);		//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]	SetConsoleColors(hConsole, 10, 0);LoanChoiceAgain:	//Prints the loan shark welcome msg	system("cls");	PrintStats();	SetConsoleColors(hConsole, 10, 0);	cout<<"Welcome to Shady Shawn's Shack!\n";	cout<<"Rates are currently at 12% factored in each Sunday (7th day).\n\n";		//allows you to pay off debt only when you have some	if(profile.Debt>0)	{		//prints menu		cout<<"1. Pay off debt.\n";		cout<<"2. Leave Shady Shawn's.\n";		cout<<"Selection: ";		//await choice		cin>>intChoice;		switch (intChoice)		{		//run through pay off options/operations		case 1:			system("cls");			PrintStats();			SetConsoleColors(hConsole, 10, 0);PLoanAgain:			cout<<"Shady Shawn's Shack!\n\n";			cout<<"Enter Amount to Pay off (0 to cancel): ";			cin>>intAmt;			if (intAmt>profile.Cash || intAmt<0)			{				system("cls");				PrintStats();				SetConsoleColors(hConsole, 10, 0);				cout<<"Invalid $ amount please pick again.\n\n";				goto PLoanAgain;			}			//redefines variables appropriatly			profile.Cash=profile.Cash-intAmt;			profile.Debt=profile.Debt-intAmt;			break;		//leaves the loan shark and heads back to the city without a day increase		case 2:			CityOperations(false);			break;		//sends you back to pick again due to invalid entry		default:			goto LoanChoiceAgain;			break;		}	}	else	{		//allows you to take out a loan when you have no debt		cout<<"1. Take out a Loan.\n";		cout<<"2. Leave Shady Shawn's.\n";		cout<<"Selection: ";		//await choice		cin>>intChoice;		switch (intChoice)		{		//prints options and runs the loan request operations		case 1:			system("cls");			PrintStats();			SetConsoleColors(hConsole, 10, 0);PLoanAgain2:			cout<<"Shady Shawn's Shack!\n\n";			cout<<"Enter Amount of the Loan (0 to cancel): ";			//await selection			cin>>intAmt;			//can't use negatives			if (intAmt<0)			{				system("cls");				PrintStats();				SetConsoleColors(hConsole, 10, 0);				cout<<"Invalid amount entered, try again man.\n\n";				goto PLoanAgain2;			}			//only loans out up to 30000			if (intAmt>=30000)			{				system("cls");				PrintStats();				SetConsoleColors(hConsole, 10, 0);				cout<<"I only give out Loans of $30,000 and below, try again man.\n\n";				goto PLoanAgain2;			}			//redefines variables appropriatly			profile.Cash=profile.Cash+intAmt;			profile.Debt=profile.Debt+intAmt;			break;		//send you back to the city without a day penalty		case 2:			CityOperations(false);			break;		//sends user through menu again due to invalid entry		default:			goto LoanChoiceAgain;			break;		}	}	//revert to old colors	SetConsoleColors(hConsole, 15, 0);	//sends user back to the city without day penalty	CityOperations(false);}//checks to see if the use already has a profile by that name savedbool CheckSaved(){	string Data=strPath + "\\profiles.dat", strTemp;	ifstream inFile(Data.c_str());	while (inFile >> Data)	{		strTemp="profile.name=" + profile.Name;		if (Data==strTemp)		{			inFile.close();			return(true);		}	};		inFile.close();	return (false);}//rewrites the files needed for savingvoid SaveGame(){	bool Saved;	string Data=strPath + "\\profiles.dat", strOldData[100], strOldData2[100], strTemp;	char chrLine[2000];	int cnt=0;	//empty strOldData incase this isn't the first save	for (i=0; i<=99; i++)		strOldData=" ";	Saved=CheckSaved();	if (Saved==false)	{		fstream inFile(Data.c_str(), ios::in);		//store information in file for reprint		while (! inFile.eof())		{			inFile.getline(chrLine,2000);						//remove extra space			for (i=0; i<=1999; i++)				chrLine=chrLine[i+1];			//convert to string array			for (i=0; i<=1999; i++)				strOldData[cnt]=strOldData[cnt]+chrLine;			cnt++;		};		inFile.close();				//rewrite the old info		cnt=1;		fstream outFile(Data.c_str(), ios::out);		outFile<<strOldData[0];		while (!(strOldData[cnt]==" "))		{			outFile<<endl<<strOldData[cnt];			cnt++;		};		//write the new info		outFile<<endl<<endl;		outFile<<" profile.name="<<profile.Name<<endl;		outFile<<" profile.gun="<<profile.Gun<<endl;		outFile<<" profile.location="<<profile.Location<<endl;		outFile<<" profile.cash="<<profile.Cash<<endl;		outFile<<" profile.debt="<<profile.Debt<<endl;		outFile<<" profile.bank="<<profile.Bank<<endl;		outFile<<" profile.hentchmen="<<profile.Hentchmen<<endl;		outFile<<" profile.health="<<profile.Health<<endl;		outFile<<" profile.space="<<profile.Space<<endl;		outFile<<" profile.day="<<profile.Day<<endl;		outFile<<" loc.name="<<loc.Name<<endl;		outFile<<" loc.police="<<loc.Police<<endl;		outFile<<" loc.mindrugs="<<loc.minDrugs<<endl;		outFile<<" loc.maxdrugs="<<loc.maxDrugs<<endl;					outFile.close();			}	else	{		//open file		fstream inFile(Data.c_str(), ios::in);		//store information in file before the saved game for reprint		cnt=0;		inFile.getline(chrLine,2000);		//remove extra space		for (i=0; i<=1999; i++)			chrLine=chrLine[i+1];		//convert to string array		for (i=0; i<=1999; i++)			strOldData[cnt]=strOldData[cnt]+chrLine;		while (!(strOldData[cnt]==("profile.name=" + profile.Name)))		{			inFile.getline(chrLine,2000);						//remove extra space			for (i=0; i<=1999; i++)				chrLine=chrLine[i+1];			//convert to string array			for (i=0; i<=1999; i++)				strOldData[cnt]=strOldData[cnt]+chrLine;			cnt++;		};		if (strOldData[1]==" ")			strOldData[0]=" ";		//store information in file after the saved game for reprint		cnt=0;		inFile.getline(chrLine,2000);		//remove extra space		for (i=0; i<=1999; i++)			chrLine=chrLine[i+1];		//convert to string array		for (i=0; i<=1999; i++)			strTemp=strTemp+chrLine;		//scan until it finds the line with the profile		while (!(strTemp==("profile.name=" + profile.Name)))		{			inFile.getline(chrLine,2000);						//remove extra space			for (i=0; i<=1999; i++)				chrLine=chrLine[i+1];			//convert to string array			for (i=0; i<=1999; i++)				strTemp=strTemp+chrLine;		};		//scan until it finds the line with the last stat in the saved game [loc.maxdrugs=12]		while (!(strTemp=="loc.maxdrugs=12"))		{			inFile.getline(chrLine,2000);						//remove extra space			for (i=0; i<=1999; i++)				chrLine=chrLine[i+1];			//convert to string array			for (i=0; i<=1999; i++)				strTemp=strTemp+chrLine;		};		//store the rest of the file		while (!(inFile.eof()))		{			inFile.getline(chrLine,2000);						//remove extra space			for (i=0; i<=1999; i++)				chrLine=chrLine[i+1];			//convert to string array			for (i=0; i<=1999; i++)				strOldData2[cnt]=strOldData2[cnt]+chrLine;			cnt++;		};		if (strOldData2[1]==" ")			strOldData2[0]=" ";		inFile.close();				//rewrite the begining old info [1]		cnt=1;		fstream outFile(Data.c_str(), ios::out);		outFile<<strOldData[0];		while (!(strOldData[cnt]==" "))		{			outFile<<endl<<strOldData[cnt];			cnt++;		};		//write new saved data		//outFile<<endl<<endl;		outFile<<" profile.name="<<profile.Name<<endl;		outFile<<" profile.gun="<<profile.Gun<<endl;		outFile<<" profile.location="<<profile.Location<<endl;		outFile<<" profile.cash="<<profile.Cash<<endl;		outFile<<" profile.debt="<<profile.Debt<<endl;		outFile<<" profile.bank="<<profile.Bank<<endl;		outFile<<" profile.hentchmen="<<profile.Hentchmen<<endl;		outFile<<" profile.health="<<profile.Health<<endl;		outFile<<" profile.space="<<profile.Space<<endl;		outFile<<" profile.day="<<profile.Day<<endl;		outFile<<" loc.name="<<loc.Name<<endl;		outFile<<" loc.police="<<loc.Police<<endl;		outFile<<" loc.mindrugs="<<loc.minDrugs<<endl;		outFile<<" loc.maxdrugs="<<loc.maxDrugs<<endl;			//rewrite the end old info [1]		cnt=1;		outFile<<strOldData2[0];		while (!(strOldData2[cnt]==" "))		{			outFile<<endl<<strOldData2[cnt];			cnt++;		};		outFile.close();		}}  //this class checks for bad convertions with stringify(int x) class BadConversion : public std::runtime_error  { public:   BadConversion(const std::string& s)     : std::runtime_error(s)     { } };  //converts ints into strings inline std::string stringify(int x) {   std::ostringstream o;   if (!(o << x))     throw BadConversion("stringify(int)");   return o.str(); }//Prints the user data on the screenvoid PrintStats(){	//Function level Declarations	HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);	string st;	//make stats 'YELLOW' (14) with 'blk bg' (0) [stats std color]	SetConsoleColors(hConsole, 14, 0);    	//print stats	system("cls");	cout<<BufferStr("[" + profile.Name + "]",20)<<"Location: "<<profile.Location<<"\n";	st="Cash: " + stringify(profile.Cash);	cout<<BufferStr(st,20)<<"Debt: "<<profile.Debt<<"\n";	st="Bank: " + stringify(profile.Bank);	cout<<BufferStr(st,20)<<"Hentchmen: "<<profile.Hentchmen<<"\n";	st="Health: " + stringify(profile.Health);	cout<<BufferStr(st,20)<<"Free Space: "<<profile.Space<<"\n";	cout<<BufferStr("Gun: " + profile.Gun,20)<<"Day: "<<profile.Day<<"\n\n";	//revert to old colors	SetConsoleColors(hConsole, 15, 0);}//Fixes text into columnsstring BufferStr(string strString, int MAX_LEN){	//Function level delcarations	int intSpaces;	string strTemp;		//add proper spaces after the string	intSpaces=MAX_LEN-strString.length();	strTemp=strString;	for (i=1; i<=intSpaces; i++)	{		strTemp=strTemp + " ";	}	//return new str	return (strTemp.c_str());}//Displays the profiles menu along with scanning the app's dir for the//profile files within it.string ProfileMenu(){	//Function level Declarations	string Profile1, Profile2, Profile3, Profile4, Profile5;	int intChoice;	HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);	//insert directory scanning, list creation, and extention trimming here and delete the following	Profile1="Derik";	Profile2="Dennis";	Profile3="Dad";	Profile4="Jen";	Profile5="Meem";	//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]	SetConsoleColors(hConsole, 10, 0);	//Print menu	system("cls");	cout<<"Drug Wars --- By: Derik Hammer\n\n";	cout<<"1. "<<Profile1<<"\n";	cout<<"1. "<<Profile2<<"\n";	cout<<"1. "<<Profile3<<"\n";	cout<<"1. "<<Profile4<<"\n";	cout<<"1. "<<Profile5<<"\n\n";	cout<<"Selection: ";	//Await choice	cin>>intChoice;	//loops if invalid numbers are entered.	while (intChoice<1 || intChoice>5)	{			SetConsoleColors(hConsole, 10, 0);		//Print menu		system("cls");		cout<<"Drug Wars --- By: Derik Hammer\n\n";		cout<<"1. "<<Profile1<<"\n";		cout<<"1. "<<Profile2<<"\n";		cout<<"1. "<<Profile3<<"\n";		cout<<"1. "<<Profile4<<"\n";		cout<<"1. "<<Profile5<<"\n\n";		cout<<"INVALID SELECTION PLEASE CHOOSE AGAIN!\n";		cout<<"Selection: ";		//Await choice		cin>>intChoice;	}	//revert to old colors	SetConsoleColors(hConsole, 15, 0);		//Returns the name of the profile needed to be used	switch (intChoice)	{		case 1:			return Profile1;			break;		case 2:			return Profile2;			break;		case 3:			return Profile3;			break;		case 4:			return Profile4;			break;		case 5:			return Profile5;			break;	}	return "NULL";}//Displays the options for the Main Menuint MainMenu(){	//Function level Declarations	char chrChoice;	HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);	//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]	SetConsoleColors(hConsole, 10, 0);	//Print menu	cout<<"Drug Wars --- By: Derik Hammer\n\n";	cout<<"1. New Game.\n";	cout<<"2. Load Profile.\n";	cout<<"3. Quit.\n\n";	cout<<"Selection: ";	//Await choice	cin>>chrChoice;	CheckAgain:	switch (chrChoice)	{	//Proceed with new game	case '1':		//revert to old colors		SetConsoleColors(hConsole, 15, 0);		return (1);		break;	//Proceed with loading profile menu	case '2':		//revert to old colors		SetConsoleColors(hConsole, 15, 0);		return (2);		break;	//Proceed with exiting the application	case '3':		//revert to old colors		SetConsoleColors(hConsole, 15, 0);		return (3);		break;	//Clear screen, reprint menu, notify invalid selection, and allow a second choice	default:		system("cls");		cout<<"Drug Wars --- By: Derik Hammer\n\n";		cout<<"1. New Game.\n";		cout<<"2. Load Profile.\n";		cout<<"3. Quit.\n\n";		//revert to old colors		SetConsoleColors(hConsole, 1, 0);		cout<<"INVALID SELECTION PLEASE CHOOSE AGAIN!\n";		cout<<"Selection: ";		cin>>chrChoice;		//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]		SetConsoleColors(hConsole, 10, 0);		goto CheckAgain;	}	//revert to old colors	SetConsoleColors(hConsole, 15, 0);	return(0);}// use Unicode (wide) version of GetModuleFileNamewstring get_module_path_wide(void){	wchar_t wide_buf[65536];	wstring module_name;	if(!GetModuleFileNameW(GetModuleHandle(0), wide_buf, 65535))		return module_name;	wide_buf[65535] = L'\0';	module_name = wide_buf;	size_t pos = module_name.find_last_of(L'\\');	if(pos != string::npos)		module_name = module_name.substr(0, pos);	return module_name;}// use this function to convert from wide wstring to ASCII string if need bestring wsts(const wstring &src_string){	size_t src_len = src_string.length();	if(src_len == 0)		return "";	char *buf = new(std::nothrow) char[src_len + 1];	if(buf == 0)		return "";	wcstombs(buf, src_string.c_str(), src_len);	buf[src_len] = '\0';	string final_string = buf;	if(buf != 0)		delete [] buf;	return final_string;}//Color Change functionsWORD GetConsoleColors(HANDLE hConsole){    // get current console text attributes    CONSOLE_SCREEN_BUFFER_INFO csbi;    GetConsoleScreenBufferInfo(hConsole, &csbi);    return csbi.wAttributes;}WORD SetConsoleColors(HANDLE hConsole, WORD wColorText, WORD wColorBkg = 0){    // get old text attributes    WORD wOldColors = GetConsoleColors(hConsole);    // set new text attributes    SetConsoleTextAttribute(hConsole, wColorText | (wColorBkg << 4));    return wOldColors;}
-Lordoftools"Knowledge is not only a gift it's a responcibility."
profile.name which it's refering is a string and the func i posted 'CheckSaved()' checks to see if that string is in teh file or not. i know that it is in the file or it would proform the first condition to the if statment in SaveGame().

if it helps here's all the code

[source code=cpp]//for VC++#include "stdafx.h"//for basic functions i.e. (cout,cin)#include <iostream>#include <afx.h>//for file manipulation#include <fstream>#include <cstdlib>//For getch()/getche()#include <conio.h>//For srand() and time()#include <stdio.h>#include <stdlib.h>#include <time.h>//for the string convertions#include <sstream>#include <cstring>#include <stdexcept>using namespace std;//Global Variable Declarationstruct USERDATA{	string Name, Gun, Location;	int Cash, Debt, Bank, Hentchmen, Health, Space, Day;	};struct LOCDATA{	string Name;	int Police, minDrugs, maxDrugs;};int i;struct LOCDATA loc;struct USERDATA profile;enum Drugs {ACID=1, COCAINE, HASHISH, HERION, LUDES, MDA, OPIUM, PCP, PEYOTE, SHROOMS, SPEED, WEED};enum LOCS {BRONX=1, GHETTO, CENTRALPARK, MANHATTAN, CONEYISLAND, BROOKLYN, QUEENS, STATENISLAND};WORD wText,      wBkg,      wOldColors;int intDrugArray[12];string cstrDrugArray[12];int intInvArray[12];string strInvArray[12];string strPath;//function delcarationsWORD SetConsoleColors(HANDLE hConsole, WORD wColorText, WORD wColorBkg);WORD GetConsoleColors(HANDLE hConsole);wstring get_module_path_wide(void);string wsts(const wstring &src_string);int MainMenu();string ProfileMenu();inline std::string stringify(int x);string BufferStr(string strString, int MAX_LEN);void BuyingDrugs(string Drug, int Price);void PrintStats();void CityOperations(bool NewDay);void BankMenu();void SellDrugsMenu();void BuyDrugsMenu();void ChangeLocMenu();void LoanSharkMenu();void SaveGame();bool CheckSaved();//Start off functionint main(int argc, char* argv[]){	//Color change sample: (ranges 0-15) [uncommented part fo global variable declare]		/*wText = 1; 		wBkg = 5; 		wOldColors;		HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);		wOldColors = SetConsoleColors(hConsole, wText, wBkg);		cout << "Colors in the console!" << endl << endl;		SetConsoleColors(hConsole, wOldColors, 0);*/	//Initialize random generator 	srand ( time(NULL) );	//Initialize global variables	intInvArray[250]=0;	strPath=wsts(get_module_path_wide());	//Function level Delcarations	string cstrProfile;	string strTemp;	int intMnuOpt;	//Displays Main Menu	intMnuOpt=MainMenu();	//ERROR code	if (intMnuOpt==0)	{		system("cls");		cout<<"int MainMenu() returned ERROR code '0'\n";	}	//New Game code	if (intMnuOpt==1)	{		//Variable initalization. 		profile.Bank=0;		profile.Health=100;		profile.Day=1;		profile.Cash=rand()%3000 + 2000;		profile.Debt=rand()%9000 + 1000;		profile.Gun="NONE";		profile.Location="BRONX";		profile.Hentchmen=rand()%4 + 7;		profile.Space=profile.Hentchmen * 10;		loc.maxDrugs=12;		//Set user name.		system("cls");		cout<<"Enter your name: ";		cin>>strTemp;		profile.Name=strTemp.c_str();				//Starts off in BRONX		loc.Name="BRONX";		loc.minDrugs=7;		loc.Police=10;		CityOperations(false);	}	//Load Profile code	if (intMnuOpt==2)	{		//displays menu, prompts profile choice, stores the user ID		cstrProfile=ProfileMenu();		//ERROR checking		if (cstrProfile=="NULL")		{			system("cls");			cout<<"string ProfileMenu() returned ERROR code 'NULL'\n";		}		//Profile Contence:		//see USERDATA struct (variable - profile)		//use ascii values of each digit to prevent easy editing		//temp debugger code		system("cls");		cout<<"Profile: "<<cstrProfile<<" was selected.\n";	}	//Quit Code	if (intMnuOpt==3)	{		system("cls");		cout<<"Thank you for playing \"Drug Wars\" -- By: Derik Hammer.";		getch();		return 0;	}	//Application Terminator	return 0;}//Operates the features of this locationvoid CityOperations(bool NewDay){		if (NewDay==true)	{		//increase the day		profile.Day++;		//increase debt due to interest		if (profile.Day%7==0)			profile.Debt=profile.Debt+(profile.Debt*.12);	}	system("cls");	PrintStats();	//sets up the drugs which are in this city (price, how many, what kind)	int intTemp, cnt=0, DrugChecker;	bool PickAgain;	int intChoice;	HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);		intTemp=rand()%(loc.maxDrugs-loc.minDrugs)+loc.minDrugs;	while (intTemp-1>=cnt)	{		do 		{			PickAgain=false;			DrugChecker=rand()%12+1;			for (i=0; i<=11; i++)			{				if (intDrugArray==DrugChecker)					PickAgain=true;			}		}		while (PickAgain==true);		intDrugArray[cnt]=DrugChecker;		cnt++;	};	for (i=intTemp; i<=11; i++)		intDrugArray=0;	//Converts the int array to a string with the drug names and then makes the int array	//into the prices array at the same time.	for (i=0; i<=11; i++)	{		switch (intDrugArray)		{				case ACID:				cstrDrugArray="ACID";				intDrugArray=rand()%3400+1000;				break;			case COCAINE:				cstrDrugArray="COCAINE";				intDrugArray=rand()%14000+15000;				break;			case HASHISH:				cstrDrugArray="HASHISH";				intDrugArray=rand()%800+480;				break;			case HERION:				cstrDrugArray="HERION";				intDrugArray=rand()%7500+5500;				break;			case LUDES:				cstrDrugArray="LUDES";				intDrugArray=rand()%49+11;				break;			case MDA:				cstrDrugArray="MDA (Ecstasy)";				intDrugArray=rand()%2900+1500;				break;			case OPIUM:				cstrDrugArray="OPIUM";				intDrugArray=rand()%710+540;				break;			case PCP:				cstrDrugArray="PCP";				intDrugArray=rand()%1500+1000;				break;			case PEYOTE:				cstrDrugArray="PEYOTE";				intDrugArray=rand()%480+220;				break;			case SHROOMS:				cstrDrugArray="SHROOMS";				intDrugArray=rand()%670+630;				break;			case SPEED:				cstrDrugArray="SPEED";				intDrugArray=rand()%160+90;				break;			case WEED:				cstrDrugArray="WEED";				intDrugArray=rand()%575+315;				break;			default:				cstrDrugArray="ERROR: NO_DRUG";				break;		}		}	//Run cops coding here, seperate function for the battle run only option when un-armed	if (NewDay==true)	{	}	//print city menu	//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]	SetConsoleColors(hConsole, 10, 0);	cout<<"Welcome to "<<loc.Name<<"!\n";		//if its the home city [BRONX] then display spec menu	if (loc.Name=="BRONX")	{specPickAgain:		cout<<"1. Check out available Drugs.\n";		cout<<"2. Sell Drugs.\n";		cout<<"3. Change location.\n";		cout<<"4. Visit Bank.\n";		cout<<"5. Visit Loan Shark.\n";		cout<<"6. Save Game.\n";		cout<<"7. Quit.\n";		cout<<"Selection: ";		//await choice		cin>>intChoice;		switch (intChoice)		{		case 1:			BuyDrugsMenu();			break;		case 2:			SellDrugsMenu();			break;		case 3:			ChangeLocMenu();			break;		case 4:			BankMenu();			break;		case 5:			LoanSharkMenu();			break;		case 6:			SaveGame();			break;		case 7:			break;		default:			goto specPickAgain;			break;		}	}	else	{normPickAgain:		cout<<"1. Check out available Drugs.\n";		cout<<"2. Sell Drugs.\n";		cout<<"3. Change location.\n";		cout<<"Selection: ";		//await choice		cin>>intChoice;		switch (intChoice)		{		case 1:			BuyDrugsMenu();			break;		case 2:			SellDrugsMenu();			break;		case 3:			ChangeLocMenu();			break;		default:			system("cls");			PrintStats();			//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]			SetConsoleColors(hConsole, 10, 0);			cout<<"Invalid choice, please pick again.\n";			goto normPickAgain;			break;		}	}	//revert to old colors	SetConsoleColors(hConsole, 15, 0);}void BankMenu(){	//function level delcarations	char chrChoice;	int intAmt;	bool boolDep=false, boolWithd=false;	//reset screen and disp stats again	system("cls");	PrintStats();	//print bank options	//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]	HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);	SetConsoleColors(hConsole, 10, 0);	cout<<"Welcome to the Bank!\n\n";	//check to see what he can do in the bank	if (profile.Cash>0)	{		cout<<"D. Deposit (Up to $"<<profile.Cash<<")\n";		boolDep=true;	}	if (profile.Bank>0)	{		cout<<"W. Withdraw (Up to $"<<profile.Bank<<")\n";		boolWithd=true;	}	cout<<"L. Leave Bank.\n";		//await choice	cout<<"Selection: ";	cin>>chrChoice;	if ((chrChoice=='d' || chrChoice=='D') && boolDep==true)	{		//disp deposit menu		system("cls");		PrintStats();		SetConsoleColors(hConsole, 10, 0);DepAgain:		cout<<"Bank Deposit -- $"<<profile.Cash<<" available.\n\n";		cout<<"Deposit Amount (0 to cancel): ";		//await choice		cin>>intAmt;		if (intAmt>profile.Cash || intAmt<0)		{			system("cls");			PrintStats();			SetConsoleColors(hConsole, 10, 0);			cout<<"Invalid $ amount please pick again.\n\n";			goto DepAgain;		}		//alter $ amounts accordingly		profile.Cash=profile.Cash-intAmt;		profile.Bank=profile.Bank+intAmt;	}	else if ((chrChoice=='w' || chrChoice=='W') && boolWithd==true)	{		//disp withdraw menu		system("cls");		PrintStats();		SetConsoleColors(hConsole, 10, 0);WDrawAgain:		cout<<"Bank Withdraw -- $"<<profile.Bank<<" available.\n\n";		cout<<"Withdraw Amount (0 to cancel): ";		//await choice		cin>>intAmt;		if (intAmt>profile.Bank || intAmt<0)		{			system("cls");			PrintStats();			SetConsoleColors(hConsole, 10, 0);			cout<<"Invalid $ amount please pick again.\n\n";			goto WDrawAgain;		}		//alter $ amounts accordingly		profile.Bank=profile.Bank-intAmt;		profile.Cash=profile.Cash+intAmt;	}	else if (chrChoice=='l' || chrChoice=='L')	{		//return to your city		CityOperations(false);	}	else		BankMenu();	CityOperations(false);	//revert to old colors	SetConsoleColors(hConsole, 15, 0);}void SellDrugsMenu(){	//debugger code	cout<<"debugger code: in void SellDrugsMenu()\n";}void BuyingDrugs(string Drug, int Price){	//Function level Declarations	HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);	int intAmt;	//print menu	system("cls");	PrintStats();	//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]	SetConsoleColors(hConsole, 10, 0);	cout<<"How much "<<Drug<<" you want? ($"<<Price<<" each)"<<endl;	cout<<"Quantity (0 to cancel): ";	cin>>intAmt;		while ((intAmt*Price>profile.Cash) || (intAmt>profile.Space))	{		//print menu		system("cls");		PrintStats();		//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]		SetConsoleColors(hConsole, 10, 0);		cout<<"You don't have enough money or enough space for that much "<<Drug<<"!\n\n";		cout<<"How much "<<Drug<<" you want? ($"<<Price<<" each)"<<endl;		cout<<"Quantity (0 to cancel): ";		cin>>intAmt;	}	//updates the space in your inv	profile.Space=profile.Space-intAmt;	//fills the drug into the available array slot	for (i=0; i<=11; i++)	{		if (intInvArray==0)		{			strInvArray=Drug;			intInvArray=Price;			i=12;		}	}	//reverts back to old colors	SetConsoleColors(hConsole, 10, 0);	BuyDrugsMenu();}void CheckWhichDrug(char chrDrug, int intTemp[12]){	//Function level Declarations	HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);	int intChoice;RePick:	system("cls");	PrintStats();	//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]	SetConsoleColors(hConsole, 10, 0);	switch (chrDrug)	{	case 'h':		cout<<"Did you want HASHISH or HERION?\n\n";		cout<<"1. HASHISH.\n";		cout<<"2. HERION.\n";		cout<<"Selection (0 to cancel):";		//await choice		cin>>intChoice;		switch (intChoice)		{		case 0:			BuyDrugsMenu();		case 1:			BuyingDrugs("HASHISH", intTemp[3]);			break;		case 2:			BuyingDrugs("HERION", intTemp[4]);			break;		default:			goto RePick;			break;		}		break;	case 'p':		cout<<"Did you want PCP or PEYOTE?\n\n";		cout<<"1. PCP.\n";		cout<<"2. PEYOTE.\n";		cout<<"Selection (0 to cancel):";		//await choice		cin>>intChoice;		switch (intChoice)		{		case 0:			BuyDrugsMenu();		case 1:			BuyingDrugs("PCP", intTemp[8]);			break;		case 2:			BuyingDrugs("PEYOTE", intTemp[9]);			break;		default:			goto RePick;			break;		}		break;	case 's':		cout<<"Did you want SHROOMS or SPEED?\n\n";		cout<<"1. SHROOMS.\n";		cout<<"2. SPEED.\n";		cout<<"Selection (0 to cancel):";		//await choice		cin>>intChoice;		switch (intChoice)		{		case 0:			BuyDrugsMenu();		case 1:			BuyingDrugs("SHROOMS", intTemp[10]);			break;		case 2:			BuyingDrugs("SPEED", intTemp[11]);			break;		default:			goto RePick;			break;		}		break;	}}void BuyDrugsMenu(){	//Function level Declarations	char chrChoice;		bool oneS=false, twoS=false, oneP=false, twoP=false, oneH=false, twoH=false;	int intTemp[12];	HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);	system("cls");	PrintStats();	//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]	SetConsoleColors(hConsole, 10, 0);	for (i=0; i<=11; i++)	{		if (intDrugArray<=profile.Cash)			goto SkipFor;	}	cout<<"Your broke! Go somewhere else or go sell some of your product to make up the $$$.\n";	goto EndOfFunc;SkipFor:	//print menu options	cout<<"So you wanta buy some dope? Here's your choices...\n\n";InvalidChoice:	for (i=0; i<=11; i++)	{		if (cstrDrugArray=="ACID")		{			cout<<"A. ACID - $"<<intDrugArray<<endl;			intTemp[1]=intDrugArray;		}		else if (cstrDrugArray=="COCAINE")		{			cout<<"C. COCAINE - $"<<intDrugArray<<endl;			intTemp[2]=intDrugArray;		}		else if (cstrDrugArray=="HASHISH")		{			cout<<"H. HASHISH - $"<<intDrugArray<<endl;			intTemp[3]=intDrugArray;			oneH=true;		}		else if (cstrDrugArray=="HERION")		{			cout<<"H. HERION - $"<<intDrugArray<<endl;			intTemp[4]=intDrugArray;			twoH=true;		}		else if (cstrDrugArray=="LUDES")		{			cout<<"L. LUDES - $"<<intDrugArray<<endl;			intTemp[5]=intDrugArray;		}		else if (cstrDrugArray=="MDA")		{			cout<<"M. MDA - $"<<intDrugArray<<endl;			intTemp[6]=intDrugArray;		}		else if (cstrDrugArray=="OPIUM")		{			cout<<"O. OPIUM - $"<<intDrugArray<<endl;			intTemp[7]=intDrugArray;		}		else if (cstrDrugArray=="PCP")		{			cout<<"P. PCP - $"<<intDrugArray<<endl;			intTemp[8]=intDrugArray;			oneP=true;		}		else if (cstrDrugArray=="PEYOTE")		{			cout<<"P. PEYOTE - $"<<intDrugArray<<endl;			intTemp[9]=intDrugArray;			twoP=true;		}		else if (cstrDrugArray=="SHROOMS")		{			cout<<"S. SHROOMS - $"<<intDrugArray<<endl;			intTemp[10]=intDrugArray;			oneS=true;		}		else if (cstrDrugArray=="SPEED")		{			cout<<"S. SPEED - $"<<intDrugArray<<endl;			intTemp[11]=intDrugArray;			twoS=true;		}		else if (cstrDrugArray=="WEED")		{				cout<<"W. WEED - $"<<intDrugArray<<endl;				intTemp[12]=intDrugArray;		}	}	cout<<"B. Back to "<<profile.Location<<".\n";	cout<<"Selection: ";	cin>>chrChoice;	//check for duplicate letters and proseed with purchase	if (chrChoice=='A' || chrChoice=='a')	{		BuyingDrugs("ACID", intTemp[1]);	}	else if (chrChoice=='B' || chrChoice=='b')	{		CityOperations(false);	}	else if (chrChoice=='C' || chrChoice=='c')	{		BuyingDrugs("COCAINE", intTemp[2]);	}	//for duplicate H's	else if ((chrChoice=='H' || chrChoice=='h') && (oneH==true && twoH==true))	{		CheckWhichDrug('h', intTemp);	}	//for none duplicate	else if ((chrChoice=='H' || chrChoice=='h') && (oneH==false || twoH==false))	{		for (i=0; i<=11; i++)		{			if (cstrDrugArray=="HASHISH")			{				BuyingDrugs("HASHISH", intTemp[3]);				i=12;			}			if (cstrDrugArray=="HERION")			{				BuyingDrugs("HERION", intTemp[4]);				i=12;			}		}	}	else if (chrChoice=='L' || chrChoice=='l')	{		BuyingDrugs("LUDES", intTemp[5]);	}	else if (chrChoice=='M' || chrChoice=='m')	{		BuyingDrugs("MDA", intTemp[6]);	}	else if (chrChoice=='O' || chrChoice=='o')	{		BuyingDrugs("OPIUM", intTemp[7]);	}	//for duplicate P's	else if ((chrChoice=='P' || chrChoice=='p') && (oneP==true && twoP==true))	{		CheckWhichDrug('p', intTemp);	}	//for none duplicate	else if ((chrChoice=='P' || chrChoice=='p') && (oneP==false || twoP==false))	{		for (i=0; i<=11; i++)		{			if (cstrDrugArray=="PCP")			{				BuyingDrugs("PCP", intTemp[8]);				i=12;			}			if (cstrDrugArray=="PEYOTE")			{				BuyingDrugs("PEYOTE", intTemp[9]);				i=12;			}		}	}	//for duplicate S's	else if ((chrChoice=='S' || chrChoice=='s') && (oneS==true && twoS==true))	{		CheckWhichDrug('s', intTemp);	}	//for none duplicate	else if ((chrChoice=='S' || chrChoice=='s') && (oneS==false || twoS==false))	{		for (i=0; i<=11; i++)		{			if (cstrDrugArray=="SHROOMS")			{				BuyingDrugs("SHROOMS", intTemp[10]);				i=12;			}			if (cstrDrugArray=="SPEED")			{				BuyingDrugs("SPEED", intTemp[11]);				i=12;			}		}	}	else if (chrChoice=='W' || chrChoice=='w')	{		BuyingDrugs("WEED", intTemp[12]);	}	else	{		system("cls");		PrintStats();		SetConsoleColors(hConsole, 10, 0);		cout<<"Invalid selection please pick again...\n\n";		goto InvalidChoice;	}EndOfFunc:	//reverts colors back	SetConsoleColors(hConsole, 15, 0);}void ChangeLocMenu(){	//Function level Declarations	int intChoice;		HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);	system("cls");	PrintStats();	//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]	SetConsoleColors(hConsole, 10, 0);LocPickAgain:	cout<<"Where would you like to go?\n\n";	cout<<"1. BRONX\n";	cout<<"2. GHETTO\n";	cout<<"3. CENTRAL PARK\n";	cout<<"4. MANHATTAN\n";	cout<<"5. CONEY ISLAND\n";	cout<<"6. BROOKLYN\n";	cout<<"7. QUEENS\n";	cout<<"8. STATEN ISLAND\n";	cout<<"9. Back to "<<loc.Name<<"\n";	cout<<"Selection: ";	//await selection	cin>>intChoice;	switch (intChoice)	{	case BRONX:		if (profile.Location=="BRONX")			intChoice=9;		profile.Location="BRONX";		loc.Name="BRONX";		loc.minDrugs=7;		loc.maxDrugs=12;		loc.Police=10;		break;	case GHETTO:		if (profile.Location=="GHETTO")			intChoice=9;		profile.Location="GHETTO";		loc.Name="GHETTO";		loc.minDrugs=8;		loc.maxDrugs=12;		loc.Police=5;		break;	case CENTRALPARK:		if (profile.Location=="CENTRALPARK")			intChoice=9;		profile.Location="CENTRALPARK";		loc.Name="CENTRAL PARK";		loc.minDrugs=6;		loc.maxDrugs=12;		loc.Police=15;		break;	case MANHATTAN:		if (profile.Location=="MANHATTAN")			intChoice=9;		profile.Location="MANHATTAN";		loc.Name="MANHATTAN";		loc.minDrugs=4;		loc.maxDrugs=12;		loc.Police=80;		break;	case CONEYISLAND:		if (profile.Location=="CONEYISLAND")			intChoice=9;		profile.Location="CONEYISLAND";		loc.Name="CONEY ISLAND";		loc.minDrugs=6;		loc.maxDrugs=12;		loc.Police=20;		break;	case BROOKLYN:		if (profile.Location=="BROOKLYN")			intChoice=9;		profile.Location="BROOKLYN";		loc.Name="BROOKLYN";		loc.minDrugs=4;		loc.maxDrugs=12;		loc.Police=70;		break;	case QUEENS:		if (profile.Location=="QUEENS")			intChoice=9;		profile.Location="QUEENS";		loc.Name="QUEENS";		loc.minDrugs=6;		loc.maxDrugs=12;		loc.Police=50;		break;	case STATENISLAND:		if (profile.Location=="STATENISLAND")			intChoice=9;		profile.Location="STATENISLAND";		loc.Name="STATEN ISLAND";		loc.minDrugs=6;		loc.maxDrugs=12;		loc.Police=20;		break;	case 9:		break;	default: 		system("cls"); 		PrintStats();		//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]		SetConsoleColors(hConsole, 10, 0);		cout<<"Invalid entry please pick again.\n\n";		goto LocPickAgain;		break;	}	//revert to old colors	SetConsoleColors(hConsole, 15, 0);	//if the city never changes then don't penalize with a new day	if (intChoice==9)	{		CityOperations(false);	}	else	{		CityOperations(true);	}}void LoanSharkMenu(){	//Function level Declarations	int intChoice, intAmt;	HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);		//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]	SetConsoleColors(hConsole, 10, 0);LoanChoiceAgain:	//Prints the loan shark welcome msg	system("cls");	PrintStats();	SetConsoleColors(hConsole, 10, 0);	cout<<"Welcome to Shady Shawn's Shack!\n";	cout<<"Rates are currently at 12% factored in each Sunday (7th day).\n\n";		//allows you to pay off debt only when you have some	if(profile.Debt>0)	{		//prints menu		cout<<"1. Pay off debt.\n";		cout<<"2. Leave Shady Shawn's.\n";		cout<<"Selection: ";		//await choice		cin>>intChoice;		switch (intChoice)		{		//run through pay off options/operations		case 1:			system("cls");			PrintStats();			SetConsoleColors(hConsole, 10, 0);PLoanAgain:			cout<<"Shady Shawn's Shack!\n\n";			cout<<"Enter Amount to Pay off (0 to cancel): ";			cin>>intAmt;			if (intAmt>profile.Cash || intAmt<0)			{				system("cls");				PrintStats();				SetConsoleColors(hConsole, 10, 0);				cout<<"Invalid $ amount please pick again.\n\n";				goto PLoanAgain;			}			//redefines variables appropriatly			profile.Cash=profile.Cash-intAmt;			profile.Debt=profile.Debt-intAmt;			break;		//leaves the loan shark and heads back to the city without a day increase		case 2:			CityOperations(false);			break;		//sends you back to pick again due to invalid entry		default:			goto LoanChoiceAgain;			break;		}	}	else	{		//allows you to take out a loan when you have no debt		cout<<"1. Take out a Loan.\n";		cout<<"2. Leave Shady Shawn's.\n";		cout<<"Selection: ";		//await choice		cin>>intChoice;		switch (intChoice)		{		//prints options and runs the loan request operations		case 1:			system("cls");			PrintStats();			SetConsoleColors(hConsole, 10, 0);PLoanAgain2:			cout<<"Shady Shawn's Shack!\n\n";			cout<<"Enter Amount of the Loan (0 to cancel): ";			//await selection			cin>>intAmt;			//can't use negatives			if (intAmt<0)			{				system("cls");				PrintStats();				SetConsoleColors(hConsole, 10, 0);				cout<<"Invalid amount entered, try again man.\n\n";				goto PLoanAgain2;			}			//only loans out up to 30000			if (intAmt>=30000)			{				system("cls");				PrintStats();				SetConsoleColors(hConsole, 10, 0);				cout<<"I only give out Loans of $30,000 and below, try again man.\n\n";				goto PLoanAgain2;			}			//redefines variables appropriatly			profile.Cash=profile.Cash+intAmt;			profile.Debt=profile.Debt+intAmt;			break;		//send you back to the city without a day penalty		case 2:			CityOperations(false);			break;		//sends user through menu again due to invalid entry		default:			goto LoanChoiceAgain;			break;		}	}	//revert to old colors	SetConsoleColors(hConsole, 15, 0);	//sends user back to the city without day penalty	CityOperations(false);}//checks to see if the use already has a profile by that name savedbool CheckSaved(){	string Data=strPath + "\\profiles.dat", strTemp;	ifstream inFile(Data.c_str());	while (inFile >> Data)	{		strTemp="profile.name=" + profile.Name;		if (Data==strTemp)		{			inFile.close();			return(true);		}	};		inFile.close();	return (false);}//rewrites the files needed for savingvoid SaveGame(){	bool Saved;	string Data=strPath + "\\profiles.dat", strOldData[100], strOldData2[100], strTemp;	char chrLine[2000];	int cnt=0;	//empty strOldData incase this isn't the first save	for (i=0; i<=99; i++)		strOldData=" ";	Saved=CheckSaved();	if (Saved==false)	{		fstream inFile(Data.c_str(), ios::in);		//store information in file for reprint		while (! inFile.eof())		{			inFile.getline(chrLine,2000);						//remove extra space			for (i=0; i<=1999; i++)				chrLine=chrLine[i+1];			//convert to string array			for (i=0; i<=1999; i++)				strOldData[cnt]=strOldData[cnt]+chrLine;			cnt++;		};		inFile.close();				//rewrite the old info		cnt=1;		fstream outFile(Data.c_str(), ios::out);		outFile<<strOldData[0];		while (!(strOldData[cnt]==" "))		{			outFile<<endl<<strOldData[cnt];			cnt++;		};		//write the new info		outFile<<endl<<endl;		outFile<<" profile.name="<<profile.Name<<endl;		outFile<<" profile.gun="<<profile.Gun<<endl;		outFile<<" profile.location="<<profile.Location<<endl;		outFile<<" profile.cash="<<profile.Cash<<endl;		outFile<<" profile.debt="<<profile.Debt<<endl;		outFile<<" profile.bank="<<profile.Bank<<endl;		outFile<<" profile.hentchmen="<<profile.Hentchmen<<endl;		outFile<<" profile.health="<<profile.Health<<endl;		outFile<<" profile.space="<<profile.Space<<endl;		outFile<<" profile.day="<<profile.Day<<endl;		outFile<<" loc.name="<<loc.Name<<endl;		outFile<<" loc.police="<<loc.Police<<endl;		outFile<<" loc.mindrugs="<<loc.minDrugs<<endl;		outFile<<" loc.maxdrugs="<<loc.maxDrugs<<endl;					outFile.close();			}	else	{		//open file		fstream inFile(Data.c_str(), ios::in);		//store information in file before the saved game for reprint		cnt=0;		inFile.getline(chrLine,2000);		//remove extra space		for (i=0; i<=1999; i++)			chrLine=chrLine[i+1];		//convert to string array		for (i=0; i<=1999; i++)			strOldData[cnt]=strOldData[cnt]+chrLine;		while (!(strOldData[cnt]==("profile.name=" + profile.Name)))		{			inFile.getline(chrLine,2000);						//remove extra space			for (i=0; i<=1999; i++)				chrLine=chrLine[i+1];			//convert to string array			for (i=0; i<=1999; i++)				strOldData[cnt]=strOldData[cnt]+chrLine;			cnt++;		};		if (strOldData[1]==" ")			strOldData[0]=" ";		//store information in file after the saved game for reprint		cnt=0;		inFile.getline(chrLine,2000);		//remove extra space		for (i=0; i<=1999; i++)			chrLine=chrLine[i+1];		//convert to string array		for (i=0; i<=1999; i++)			strTemp=strTemp+chrLine;		//scan until it finds the line with the profile		while (!(strTemp==("profile.name=" + profile.Name)))		{			inFile.getline(chrLine,2000);						//remove extra space			for (i=0; i<=1999; i++)				chrLine=chrLine[i+1];			//convert to string array			for (i=0; i<=1999; i++)				strTemp=strTemp+chrLine;		};		//scan until it finds the line with the last stat in the saved game [loc.maxdrugs=12]		while (!(strTemp=="loc.maxdrugs=12"))		{			inFile.getline(chrLine,2000);						//remove extra space			for (i=0; i<=1999; i++)				chrLine=chrLine[i+1];			//convert to string array			for (i=0; i<=1999; i++)				strTemp=strTemp+chrLine;		};		//store the rest of the file		while (!(inFile.eof()))		{			inFile.getline(chrLine,2000);						//remove extra space			for (i=0; i<=1999; i++)				chrLine=chrLine[i+1];			//convert to string array			for (i=0; i<=1999; i++)				strOldData2[cnt]=strOldData2[cnt]+chrLine;			cnt++;		};		if (strOldData2[1]==" ")			strOldData2[0]=" ";		inFile.close();				//rewrite the begining old info [1]		cnt=1;		fstream outFile(Data.c_str(), ios::out);		outFile<<strOldData[0];		while (!(strOldData[cnt]==" "))		{			outFile<<endl<<strOldData[cnt];			cnt++;		};		//write new saved data		//outFile<<endl<<endl;		outFile<<" profile.name="<<profile.Name<<endl;		outFile<<" profile.gun="<<profile.Gun<<endl;		outFile<<" profile.location="<<profile.Location<<endl;		outFile<<" profile.cash="<<profile.Cash<<endl;		outFile<<" profile.debt="<<profile.Debt<<endl;		outFile<<" profile.bank="<<profile.Bank<<endl;		outFile<<" profile.hentchmen="<<profile.Hentchmen<<endl;		outFile<<" profile.health="<<profile.Health<<endl;		outFile<<" profile.space="<<profile.Space<<endl;		outFile<<" profile.day="<<profile.Day<<endl;		outFile<<" loc.name="<<loc.Name<<endl;		outFile<<" loc.police="<<loc.Police<<endl;		outFile<<" loc.mindrugs="<<loc.minDrugs<<endl;		outFile<<" loc.maxdrugs="<<loc.maxDrugs<<endl;			//rewrite the end old info [1]		cnt=1;		outFile<<strOldData2[0];		while (!(strOldData2[cnt]==" "))		{			outFile<<endl<<strOldData2[cnt];			cnt++;		};		outFile.close();		}}  //this class checks for bad convertions with stringify(int x) class BadConversion : public std::runtime_error  { public:   BadConversion(const std::string& s)     : std::runtime_error(s)     { } };  //converts ints into strings inline std::string stringify(int x) {   std::ostringstream o;   if (!(o << x))     throw BadConversion("stringify(int)");   return o.str(); }//Prints the user data on the screenvoid PrintStats(){	//Function level Declarations	HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);	string st;	//make stats 'YELLOW' (14) with 'blk bg' (0) [stats std color]	SetConsoleColors(hConsole, 14, 0);    	//print stats	system("cls");	cout<<BufferStr("[" + profile.Name + "]",20)<<"Location: "<<profile.Location<<"\n";	st="Cash: " + stringify(profile.Cash);	cout<<BufferStr(st,20)<<"Debt: "<<profile.Debt<<"\n";	st="Bank: " + stringify(profile.Bank);	cout<<BufferStr(st,20)<<"Hentchmen: "<<profile.Hentchmen<<"\n";	st="Health: " + stringify(profile.Health);	cout<<BufferStr(st,20)<<"Free Space: "<<profile.Space<<"\n";	cout<<BufferStr("Gun: " + profile.Gun,20)<<"Day: "<<profile.Day<<"\n\n";	//revert to old colors	SetConsoleColors(hConsole, 15, 0);}//Fixes text into columnsstring BufferStr(string strString, int MAX_LEN){	//Function level delcarations	int intSpaces;	string strTemp;		//add proper spaces after the string	intSpaces=MAX_LEN-strString.length();	strTemp=strString;	for (i=1; i<=intSpaces; i++)	{		strTemp=strTemp + " ";	}	//return new str	return (strTemp.c_str());}//Displays the profiles menu along with scanning the app's dir for the//profile files within it.string ProfileMenu(){	//Function level Declarations	string Profile1, Profile2, Profile3, Profile4, Profile5;	int intChoice;	HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);	//insert directory scanning, list creation, and extention trimming here and delete the following	Profile1="Derik";	Profile2="Dennis";	Profile3="Dad";	Profile4="Jen";	Profile5="Meem";	//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]	SetConsoleColors(hConsole, 10, 0);	//Print menu	system("cls");	cout<<"Drug Wars --- By: Derik Hammer\n\n";	cout<<"1. "<<Profile1<<"\n";	cout<<"1. "<<Profile2<<"\n";	cout<<"1. "<<Profile3<<"\n";	cout<<"1. "<<Profile4<<"\n";	cout<<"1. "<<Profile5<<"\n\n";	cout<<"Selection: ";	//Await choice	cin>>intChoice;	//loops if invalid numbers are entered.	while (intChoice<1 || intChoice>5)	{			SetConsoleColors(hConsole, 10, 0);		//Print menu		system("cls");		cout<<"Drug Wars --- By: Derik Hammer\n\n";		cout<<"1. "<<Profile1<<"\n";		cout<<"1. "<<Profile2<<"\n";		cout<<"1. "<<Profile3<<"\n";		cout<<"1. "<<Profile4<<"\n";		cout<<"1. "<<Profile5<<"\n\n";		cout<<"INVALID SELECTION PLEASE CHOOSE AGAIN!\n";		cout<<"Selection: ";		//Await choice		cin>>intChoice;	}	//revert to old colors	SetConsoleColors(hConsole, 15, 0);		//Returns the name of the profile needed to be used	switch (intChoice)	{		case 1:			return Profile1;			break;		case 2:			return Profile2;			break;		case 3:			return Profile3;			break;		case 4:			return Profile4;			break;		case 5:			return Profile5;			break;	}	return "NULL";}//Displays the options for the Main Menuint MainMenu(){	//Function level Declarations	char chrChoice;	HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);	//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]	SetConsoleColors(hConsole, 10, 0);	//Print menu	cout<<"Drug Wars --- By: Derik Hammer\n\n";	cout<<"1. New Game.\n";	cout<<"2. Load Profile.\n";	cout<<"3. Quit.\n\n";	cout<<"Selection: ";	//Await choice	cin>>chrChoice;	CheckAgain:	switch (chrChoice)	{	//Proceed with new game	case '1':		//revert to old colors		SetConsoleColors(hConsole, 15, 0);		return (1);		break;	//Proceed with loading profile menu	case '2':		//revert to old colors		SetConsoleColors(hConsole, 15, 0);		return (2);		break;	//Proceed with exiting the application	case '3':		//revert to old colors		SetConsoleColors(hConsole, 15, 0);		return (3);		break;	//Clear screen, reprint menu, notify invalid selection, and allow a second choice	default:		system("cls");		cout<<"Drug Wars --- By: Derik Hammer\n\n";		cout<<"1. New Game.\n";		cout<<"2. Load Profile.\n";		cout<<"3. Quit.\n\n";		//revert to old colors		SetConsoleColors(hConsole, 1, 0);		cout<<"INVALID SELECTION PLEASE CHOOSE AGAIN!\n";		cout<<"Selection: ";		cin>>chrChoice;		//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]		SetConsoleColors(hConsole, 10, 0);		goto CheckAgain;	}	//revert to old colors	SetConsoleColors(hConsole, 15, 0);	return(0);}// use Unicode (wide) version of GetModuleFileNamewstring get_module_path_wide(void){	wchar_t wide_buf[65536];	wstring module_name;	if(!GetModuleFileNameW(GetModuleHandle(0), wide_buf, 65535))		return module_name;	wide_buf[65535] = L'\0';	module_name = wide_buf;	size_t pos = module_name.find_last_of(L'\\');	if(pos != string::npos)		module_name = module_name.substr(0, pos);	return module_name;}// use this function to convert from wide wstring to ASCII string if need bestring wsts(const wstring &src_string){	size_t src_len = src_string.length();	if(src_len == 0)		return "";	char *buf = new(std::nothrow) char[src_len + 1];	if(buf == 0)		return "";	wcstombs(buf, src_string.c_str(), src_len);	buf[src_len] = '\0';	string final_string = buf;	if(buf != 0)		delete [] buf;	return final_string;}//Color Change functionsWORD GetConsoleColors(HANDLE hConsole){    // get current console text attributes    CONSOLE_SCREEN_BUFFER_INFO csbi;    GetConsoleScreenBufferInfo(hConsole, &csbi);    return csbi.wAttributes;}WORD SetConsoleColors(HANDLE hConsole, WORD wColorText, WORD wColorBkg = 0){    // get old text attributes    WORD wOldColors = GetConsoleColors(hConsole);    // set new text attributes    SetConsoleTextAttribute(hConsole, wColorText | (wColorBkg << 4));    return wOldColors;}
-Lordoftools"Knowledge is not only a gift it's a responcibility."
Ok guys i figured out what was going on when i wrote to a file there was an added char at the begining of each line and i thought it was a space but i guess not therefore when i searched the string for the " " + myString it the condition was never true. Now im using .find() and the condition works out fine...however i still am having issues with teh placement of the data. Some strings get cut off and all get put in a wrong order. I want the SaveGame() to write the file again with the new saved game appended if the condition within the if is true and in the else i need it to isolate the saved data in the file, store the rest, rewrite the rest in it's order and place the new saved game in instead of the old data. Im going to disney and have no time to debug this mysel fbut if anyone wants to help me out i'd much appreciate it and in 10 days i can thank you and continue on with my prgm.

MY CODE:
[source code=cpp]//for VC++#include "stdafx.h"//for basic functions i.e. (cout,cin)#include <iostream>#include <afx.h>//for file manipulation#include <fstream>#include <cstdlib>//For getch()/getche()#include <conio.h>//For srand() and time()#include <stdio.h>#include <stdlib.h>#include <time.h>//for the string convertions#include <sstream>#include <cstring>#include <stdexcept>using namespace std;//Global Variable Declarationstruct USERDATA{	string Name, Gun, Location;	int Cash, Debt, Bank, Hentchmen, Health, Space, Day;	};struct LOCDATA{	string Name;	int Police, minDrugs, maxDrugs;};int i;struct LOCDATA loc;struct USERDATA profile;enum Drugs {ACID=1, COCAINE, HASHISH, HERION, LUDES, MDA, OPIUM, PCP, PEYOTE, SHROOMS, SPEED, WEED};enum LOCS {BRONX=1, GHETTO, CENTRALPARK, MANHATTAN, CONEYISLAND, BROOKLYN, QUEENS, STATENISLAND};WORD wText,      wBkg,      wOldColors;int intDrugArray[12];string cstrDrugArray[12];int intInvArray[12];string strInvArray[12];string strPath;//function delcarationsWORD SetConsoleColors(HANDLE hConsole, WORD wColorText, WORD wColorBkg);WORD GetConsoleColors(HANDLE hConsole);wstring get_module_path_wide(void);string wsts(const wstring &src_string);int MainMenu();string ProfileMenu();inline std::string stringify(int x);string BufferStr(string strString, int MAX_LEN);void BuyingDrugs(string Drug, int Price);void PrintStats();void CityOperations(bool NewDay);void BankMenu();void SellDrugsMenu();void BuyDrugsMenu();void ChangeLocMenu();void LoanSharkMenu();void SaveGame();bool CheckSaved();//Start off functionint main(int argc, char* argv[]){	//Color change sample: (ranges 0-15) [uncommented part fo global variable declare]		/*wText = 1; 		wBkg = 5; 		wOldColors;		HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);		wOldColors = SetConsoleColors(hConsole, wText, wBkg);		cout << "Colors in the console!" << endl << endl;		SetConsoleColors(hConsole, wOldColors, 0);*/	//Initialize random generator 	srand ( time(NULL) );	//Initialize global variables	intInvArray[250]=0;	strPath=wsts(get_module_path_wide());	//Function level Delcarations	string cstrProfile;	string strTemp;	int intMnuOpt;	//Displays Main Menu	intMnuOpt=MainMenu();	//ERROR code	if (intMnuOpt==0)	{		system("cls");		cout<<"int MainMenu() returned ERROR code '0'\n";	}	//New Game code	if (intMnuOpt==1)	{		//Variable initalization. 		profile.Bank=0;		profile.Health=100;		profile.Day=1;		profile.Cash=rand()%3000 + 2000;		profile.Debt=rand()%9000 + 1000;		profile.Gun="NONE";		profile.Location="BRONX";		profile.Hentchmen=rand()%4 + 7;		profile.Space=profile.Hentchmen * 10;		loc.maxDrugs=12;		//Set user name.		system("cls");		cout<<"Enter your name: ";		cin>>strTemp;		profile.Name=strTemp.c_str();				//Starts off in BRONX		loc.Name="BRONX";		loc.minDrugs=7;		loc.Police=10;		CityOperations(false);	}	//Load Profile code	if (intMnuOpt==2)	{		//displays menu, prompts profile choice, stores the user ID		cstrProfile=ProfileMenu();		//ERROR checking		if (cstrProfile=="NULL")		{			system("cls");			cout<<"string ProfileMenu() returned ERROR code 'NULL'\n";		}		//Profile Contence:		//see USERDATA struct (variable - profile)		//use ascii values of each digit to prevent easy editing		//temp debugger code		system("cls");		cout<<"Profile: "<<cstrProfile<<" was selected.\n";	}	//Quit Code	if (intMnuOpt==3)	{		system("cls");		cout<<"Thank you for playing \"Drug Wars\" -- By: Derik Hammer.";		getch();		return 0;	}	//Application Terminator	return 0;}//Operates the features of this locationvoid CityOperations(bool NewDay){		if (NewDay==true)	{		//increase the day		profile.Day++;		//increase debt due to interest		if (profile.Day%7==0)			profile.Debt=profile.Debt+(profile.Debt*.12);	}	system("cls");	PrintStats();	//sets up the drugs which are in this city (price, how many, what kind)	int intTemp, cnt=0, DrugChecker;	bool PickAgain;	int intChoice;	HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);		intTemp=rand()%(loc.maxDrugs-loc.minDrugs)+loc.minDrugs;	while (intTemp-1>=cnt)	{		do 		{			PickAgain=false;			DrugChecker=rand()%12+1;			for (i=0; i<=11; i++)			{				if (intDrugArray==DrugChecker)					PickAgain=true;			}		}		while (PickAgain==true);		intDrugArray[cnt]=DrugChecker;		cnt++;	};	for (i=intTemp; i<=11; i++)		intDrugArray=0;	//Converts the int array to a string with the drug names and then makes the int array	//into the prices array at the same time.	for (i=0; i<=11; i++)	{		switch (intDrugArray)		{				case ACID:				cstrDrugArray="ACID";				intDrugArray=rand()%3400+1000;				break;			case COCAINE:				cstrDrugArray="COCAINE";				intDrugArray=rand()%14000+15000;				break;			case HASHISH:				cstrDrugArray="HASHISH";				intDrugArray=rand()%800+480;				break;			case HERION:				cstrDrugArray="HERION";				intDrugArray=rand()%7500+5500;				break;			case LUDES:				cstrDrugArray="LUDES";				intDrugArray=rand()%49+11;				break;			case MDA:				cstrDrugArray="MDA (Ecstasy)";				intDrugArray=rand()%2900+1500;				break;			case OPIUM:				cstrDrugArray="OPIUM";				intDrugArray=rand()%710+540;				break;			case PCP:				cstrDrugArray="PCP";				intDrugArray=rand()%1500+1000;				break;			case PEYOTE:				cstrDrugArray="PEYOTE";				intDrugArray=rand()%480+220;				break;			case SHROOMS:				cstrDrugArray="SHROOMS";				intDrugArray=rand()%670+630;				break;			case SPEED:				cstrDrugArray="SPEED";				intDrugArray=rand()%160+90;				break;			case WEED:				cstrDrugArray="WEED";				intDrugArray=rand()%575+315;				break;			default:				cstrDrugArray="ERROR: NO_DRUG";				break;		}		}	//Run cops coding here, seperate function for the battle run only option when un-armed	if (NewDay==true)	{	}	//print city menu	//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]	SetConsoleColors(hConsole, 10, 0);	cout<<"Welcome to "<<loc.Name<<"!\n";		//if its the home city [BRONX] then display spec menu	if (loc.Name=="BRONX")	{specPickAgain:		cout<<"1. Check out available Drugs.\n";		cout<<"2. Sell Drugs.\n";		cout<<"3. Change location.\n";		cout<<"4. Visit Bank.\n";		cout<<"5. Visit Loan Shark.\n";		cout<<"6. Save Game.\n";		cout<<"7. Quit.\n";		cout<<"Selection: ";		//await choice		cin>>intChoice;		switch (intChoice)		{		case 1:			BuyDrugsMenu();			break;		case 2:			SellDrugsMenu();			break;		case 3:			ChangeLocMenu();			break;		case 4:			BankMenu();			break;		case 5:			LoanSharkMenu();			break;		case 6:			SaveGame();			break;		case 7:			break;		default:			goto specPickAgain;			break;		}	}	else	{normPickAgain:		cout<<"1. Check out available Drugs.\n";		cout<<"2. Sell Drugs.\n";		cout<<"3. Change location.\n";		cout<<"Selection: ";		//await choice		cin>>intChoice;		switch (intChoice)		{		case 1:			BuyDrugsMenu();			break;		case 2:			SellDrugsMenu();			break;		case 3:			ChangeLocMenu();			break;		default:			system("cls");			PrintStats();			//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]			SetConsoleColors(hConsole, 10, 0);			cout<<"Invalid choice, please pick again.\n";			goto normPickAgain;			break;		}	}	//revert to old colors	SetConsoleColors(hConsole, 15, 0);}void BankMenu(){	//function level delcarations	char chrChoice;	int intAmt;	bool boolDep=false, boolWithd=false;	//reset screen and disp stats again	system("cls");	PrintStats();	//print bank options	//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]	HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);	SetConsoleColors(hConsole, 10, 0);	cout<<"Welcome to the Bank!\n\n";	//check to see what he can do in the bank	if (profile.Cash>0)	{		cout<<"D. Deposit (Up to $"<<profile.Cash<<")\n";		boolDep=true;	}	if (profile.Bank>0)	{		cout<<"W. Withdraw (Up to $"<<profile.Bank<<")\n";		boolWithd=true;	}	cout<<"L. Leave Bank.\n";		//await choice	cout<<"Selection: ";	cin>>chrChoice;	if ((chrChoice=='d' || chrChoice=='D') && boolDep==true)	{		//disp deposit menu		system("cls");		PrintStats();		SetConsoleColors(hConsole, 10, 0);DepAgain:		cout<<"Bank Deposit -- $"<<profile.Cash<<" available.\n\n";		cout<<"Deposit Amount (0 to cancel): ";		//await choice		cin>>intAmt;		if (intAmt>profile.Cash || intAmt<0)		{			system("cls");			PrintStats();			SetConsoleColors(hConsole, 10, 0);			cout<<"Invalid $ amount please pick again.\n\n";			goto DepAgain;		}		//alter $ amounts accordingly		profile.Cash=profile.Cash-intAmt;		profile.Bank=profile.Bank+intAmt;	}	else if ((chrChoice=='w' || chrChoice=='W') && boolWithd==true)	{		//disp withdraw menu		system("cls");		PrintStats();		SetConsoleColors(hConsole, 10, 0);WDrawAgain:		cout<<"Bank Withdraw -- $"<<profile.Bank<<" available.\n\n";		cout<<"Withdraw Amount (0 to cancel): ";		//await choice		cin>>intAmt;		if (intAmt>profile.Bank || intAmt<0)		{			system("cls");			PrintStats();			SetConsoleColors(hConsole, 10, 0);			cout<<"Invalid $ amount please pick again.\n\n";			goto WDrawAgain;		}		//alter $ amounts accordingly		profile.Bank=profile.Bank-intAmt;		profile.Cash=profile.Cash+intAmt;	}	else if (chrChoice=='l' || chrChoice=='L')	{		//return to your city		CityOperations(false);	}	else		BankMenu();	CityOperations(false);	//revert to old colors	SetConsoleColors(hConsole, 15, 0);}void SellDrugsMenu(){	//debugger code	cout<<"debugger code: in void SellDrugsMenu()\n";}void BuyingDrugs(string Drug, int Price){	//Function level Declarations	HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);	int intAmt;	//print menu	system("cls");	PrintStats();	//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]	SetConsoleColors(hConsole, 10, 0);	cout<<"How much "<<Drug<<" you want? ($"<<Price<<" each)"<<endl;	cout<<"Quantity (0 to cancel): ";	cin>>intAmt;		while ((intAmt*Price>profile.Cash) || (intAmt>profile.Space))	{		//print menu		system("cls");		PrintStats();		//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]		SetConsoleColors(hConsole, 10, 0);		cout<<"You don't have enough money or enough space for that much "<<Drug<<"!\n\n";		cout<<"How much "<<Drug<<" you want? ($"<<Price<<" each)"<<endl;		cout<<"Quantity (0 to cancel): ";		cin>>intAmt;	}	//updates the space in your inv	profile.Space=profile.Space-intAmt;	//fills the drug into the available array slot	for (i=0; i<=11; i++)	{		if (intInvArray==0)		{			strInvArray=Drug;			intInvArray=Price;			i=12;		}	}	//reverts back to old colors	SetConsoleColors(hConsole, 10, 0);	BuyDrugsMenu();}void CheckWhichDrug(char chrDrug, int intTemp[12]){	//Function level Declarations	HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);	int intChoice;RePick:	system("cls");	PrintStats();	//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]	SetConsoleColors(hConsole, 10, 0);	switch (chrDrug)	{	case 'h':		cout<<"Did you want HASHISH or HERION?\n\n";		cout<<"1. HASHISH.\n";		cout<<"2. HERION.\n";		cout<<"Selection (0 to cancel):";		//await choice		cin>>intChoice;		switch (intChoice)		{		case 0:			BuyDrugsMenu();		case 1:			BuyingDrugs("HASHISH", intTemp[3]);			break;		case 2:			BuyingDrugs("HERION", intTemp[4]);			break;		default:			goto RePick;			break;		}		break;	case 'p':		cout<<"Did you want PCP or PEYOTE?\n\n";		cout<<"1. PCP.\n";		cout<<"2. PEYOTE.\n";		cout<<"Selection (0 to cancel):";		//await choice		cin>>intChoice;		switch (intChoice)		{		case 0:			BuyDrugsMenu();		case 1:			BuyingDrugs("PCP", intTemp[8]);			break;		case 2:			BuyingDrugs("PEYOTE", intTemp[9]);			break;		default:			goto RePick;			break;		}		break;	case 's':		cout<<"Did you want SHROOMS or SPEED?\n\n";		cout<<"1. SHROOMS.\n";		cout<<"2. SPEED.\n";		cout<<"Selection (0 to cancel):";		//await choice		cin>>intChoice;		switch (intChoice)		{		case 0:			BuyDrugsMenu();		case 1:			BuyingDrugs("SHROOMS", intTemp[10]);			break;		case 2:			BuyingDrugs("SPEED", intTemp[11]);			break;		default:			goto RePick;			break;		}		break;	}}void BuyDrugsMenu(){	//Function level Declarations	char chrChoice;		bool oneS=false, twoS=false, oneP=false, twoP=false, oneH=false, twoH=false;	int intTemp[12];	HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);	system("cls");	PrintStats();	//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]	SetConsoleColors(hConsole, 10, 0);	for (i=0; i<=11; i++)	{		if (intDrugArray<=profile.Cash)			goto SkipFor;	}	cout<<"Your broke! Go somewhere else or go sell some of your product to make up the $$$.\n";	goto EndOfFunc;SkipFor:	//print menu options	cout<<"So you wanta buy some dope? Here's your choices...\n\n";InvalidChoice:	for (i=0; i<=11; i++)	{		if (cstrDrugArray=="ACID")		{			cout<<"A. ACID - $"<<intDrugArray<<endl;			intTemp[1]=intDrugArray;		}		else if (cstrDrugArray=="COCAINE")		{			cout<<"C. COCAINE - $"<<intDrugArray<<endl;			intTemp[2]=intDrugArray;		}		else if (cstrDrugArray=="HASHISH")		{			cout<<"H. HASHISH - $"<<intDrugArray<<endl;			intTemp[3]=intDrugArray;			oneH=true;		}		else if (cstrDrugArray=="HERION")		{			cout<<"H. HERION - $"<<intDrugArray<<endl;			intTemp[4]=intDrugArray;			twoH=true;		}		else if (cstrDrugArray=="LUDES")		{			cout<<"L. LUDES - $"<<intDrugArray<<endl;			intTemp[5]=intDrugArray;		}		else if (cstrDrugArray=="MDA")		{			cout<<"M. MDA - $"<<intDrugArray<<endl;			intTemp[6]=intDrugArray;		}		else if (cstrDrugArray=="OPIUM")		{			cout<<"O. OPIUM - $"<<intDrugArray<<endl;			intTemp[7]=intDrugArray;		}		else if (cstrDrugArray=="PCP")		{			cout<<"P. PCP - $"<<intDrugArray<<endl;			intTemp[8]=intDrugArray;			oneP=true;		}		else if (cstrDrugArray=="PEYOTE")		{			cout<<"P. PEYOTE - $"<<intDrugArray<<endl;			intTemp[9]=intDrugArray;			twoP=true;		}		else if (cstrDrugArray=="SHROOMS")		{			cout<<"S. SHROOMS - $"<<intDrugArray<<endl;			intTemp[10]=intDrugArray;			oneS=true;		}		else if (cstrDrugArray=="SPEED")		{			cout<<"S. SPEED - $"<<intDrugArray<<endl;			intTemp[11]=intDrugArray;			twoS=true;		}		else if (cstrDrugArray=="WEED")		{				cout<<"W. WEED - $"<<intDrugArray<<endl;				intTemp[12]=intDrugArray;		}	}	cout<<"B. Back to "<<profile.Location<<".\n";	cout<<"Selection: ";	cin>>chrChoice;	//check for duplicate letters and proseed with purchase	if (chrChoice=='A' || chrChoice=='a')	{		BuyingDrugs("ACID", intTemp[1]);	}	else if (chrChoice=='B' || chrChoice=='b')	{		CityOperations(false);	}	else if (chrChoice=='C' || chrChoice=='c')	{		BuyingDrugs("COCAINE", intTemp[2]);	}	//for duplicate H's	else if ((chrChoice=='H' || chrChoice=='h') && (oneH==true && twoH==true))	{		CheckWhichDrug('h', intTemp);	}	//for none duplicate	else if ((chrChoice=='H' || chrChoice=='h') && (oneH==false || twoH==false))	{		for (i=0; i<=11; i++)		{			if (cstrDrugArray=="HASHISH")			{				BuyingDrugs("HASHISH", intTemp[3]);				i=12;			}			if (cstrDrugArray=="HERION")			{				BuyingDrugs("HERION", intTemp[4]);				i=12;			}		}	}	else if (chrChoice=='L' || chrChoice=='l')	{		BuyingDrugs("LUDES", intTemp[5]);	}	else if (chrChoice=='M' || chrChoice=='m')	{		BuyingDrugs("MDA", intTemp[6]);	}	else if (chrChoice=='O' || chrChoice=='o')	{		BuyingDrugs("OPIUM", intTemp[7]);	}	//for duplicate P's	else if ((chrChoice=='P' || chrChoice=='p') && (oneP==true && twoP==true))	{		CheckWhichDrug('p', intTemp);	}	//for none duplicate	else if ((chrChoice=='P' || chrChoice=='p') && (oneP==false || twoP==false))	{		for (i=0; i<=11; i++)		{			if (cstrDrugArray=="PCP")			{				BuyingDrugs("PCP", intTemp[8]);				i=12;			}			if (cstrDrugArray=="PEYOTE")			{				BuyingDrugs("PEYOTE", intTemp[9]);				i=12;			}		}	}	//for duplicate S's	else if ((chrChoice=='S' || chrChoice=='s') && (oneS==true && twoS==true))	{		CheckWhichDrug('s', intTemp);	}	//for none duplicate	else if ((chrChoice=='S' || chrChoice=='s') && (oneS==false || twoS==false))	{		for (i=0; i<=11; i++)		{			if (cstrDrugArray=="SHROOMS")			{				BuyingDrugs("SHROOMS", intTemp[10]);				i=12;			}			if (cstrDrugArray=="SPEED")			{				BuyingDrugs("SPEED", intTemp[11]);				i=12;			}		}	}	else if (chrChoice=='W' || chrChoice=='w')	{		BuyingDrugs("WEED", intTemp[12]);	}	else	{		system("cls");		PrintStats();		SetConsoleColors(hConsole, 10, 0);		cout<<"Invalid selection please pick again...\n\n";		goto InvalidChoice;	}EndOfFunc:	//reverts colors back	SetConsoleColors(hConsole, 15, 0);}void ChangeLocMenu(){	//Function level Declarations	int intChoice;		HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);	system("cls");	PrintStats();	//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]	SetConsoleColors(hConsole, 10, 0);LocPickAgain:	cout<<"Where would you like to go?\n\n";	cout<<"1. BRONX\n";	cout<<"2. GHETTO\n";	cout<<"3. CENTRAL PARK\n";	cout<<"4. MANHATTAN\n";	cout<<"5. CONEY ISLAND\n";	cout<<"6. BROOKLYN\n";	cout<<"7. QUEENS\n";	cout<<"8. STATEN ISLAND\n";	cout<<"9. Back to "<<loc.Name<<"\n";	cout<<"Selection: ";	//await selection	cin>>intChoice;	switch (intChoice)	{	case BRONX:		if (profile.Location=="BRONX")			intChoice=9;		profile.Location="BRONX";		loc.Name="BRONX";		loc.minDrugs=7;		loc.maxDrugs=12;		loc.Police=10;		break;	case GHETTO:		if (profile.Location=="GHETTO")			intChoice=9;		profile.Location="GHETTO";		loc.Name="GHETTO";		loc.minDrugs=8;		loc.maxDrugs=12;		loc.Police=5;		break;	case CENTRALPARK:		if (profile.Location=="CENTRALPARK")			intChoice=9;		profile.Location="CENTRALPARK";		loc.Name="CENTRAL PARK";		loc.minDrugs=6;		loc.maxDrugs=12;		loc.Police=15;		break;	case MANHATTAN:		if (profile.Location=="MANHATTAN")			intChoice=9;		profile.Location="MANHATTAN";		loc.Name="MANHATTAN";		loc.minDrugs=4;		loc.maxDrugs=12;		loc.Police=80;		break;	case CONEYISLAND:		if (profile.Location=="CONEYISLAND")			intChoice=9;		profile.Location="CONEYISLAND";		loc.Name="CONEY ISLAND";		loc.minDrugs=6;		loc.maxDrugs=12;		loc.Police=20;		break;	case BROOKLYN:		if (profile.Location=="BROOKLYN")			intChoice=9;		profile.Location="BROOKLYN";		loc.Name="BROOKLYN";		loc.minDrugs=4;		loc.maxDrugs=12;		loc.Police=70;		break;	case QUEENS:		if (profile.Location=="QUEENS")			intChoice=9;		profile.Location="QUEENS";		loc.Name="QUEENS";		loc.minDrugs=6;		loc.maxDrugs=12;		loc.Police=50;		break;	case STATENISLAND:		if (profile.Location=="STATENISLAND")			intChoice=9;		profile.Location="STATENISLAND";		loc.Name="STATEN ISLAND";		loc.minDrugs=6;		loc.maxDrugs=12;		loc.Police=20;		break;	case 9:		break;	default: 		system("cls"); 		PrintStats();		//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]		SetConsoleColors(hConsole, 10, 0);		cout<<"Invalid entry please pick again.\n\n";		goto LocPickAgain;		break;	}	//revert to old colors	SetConsoleColors(hConsole, 15, 0);	//if the city never changes then don't penalize with a new day	if (intChoice==9)	{		CityOperations(false);	}	else	{		CityOperations(true);	}}void LoanSharkMenu(){	//Function level Declarations	int intChoice, intAmt;	HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);		//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]	SetConsoleColors(hConsole, 10, 0);LoanChoiceAgain:	//Prints the loan shark welcome msg	system("cls");	PrintStats();	SetConsoleColors(hConsole, 10, 0);	cout<<"Welcome to Shady Shawn's Shack!\n";	cout<<"Rates are currently at 12% factored in each Sunday (7th day).\n\n";		//allows you to pay off debt only when you have some	if(profile.Debt>0)	{		//prints menu		cout<<"1. Pay off debt.\n";		cout<<"2. Leave Shady Shawn's.\n";		cout<<"Selection: ";		//await choice		cin>>intChoice;		switch (intChoice)		{		//run through pay off options/operations		case 1:			system("cls");			PrintStats();			SetConsoleColors(hConsole, 10, 0);PLoanAgain:			cout<<"Shady Shawn's Shack!\n\n";			cout<<"Enter Amount to Pay off (0 to cancel): ";			cin>>intAmt;			if (intAmt>profile.Cash || intAmt<0)			{				system("cls");				PrintStats();				SetConsoleColors(hConsole, 10, 0);				cout<<"Invalid $ amount please pick again.\n\n";				goto PLoanAgain;			}			//redefines variables appropriatly			profile.Cash=profile.Cash-intAmt;			profile.Debt=profile.Debt-intAmt;			break;		//leaves the loan shark and heads back to the city without a day increase		case 2:			CityOperations(false);			break;		//sends you back to pick again due to invalid entry		default:			goto LoanChoiceAgain;			break;		}	}	else	{		//allows you to take out a loan when you have no debt		cout<<"1. Take out a Loan.\n";		cout<<"2. Leave Shady Shawn's.\n";		cout<<"Selection: ";		//await choice		cin>>intChoice;		switch (intChoice)		{		//prints options and runs the loan request operations		case 1:			system("cls");			PrintStats();			SetConsoleColors(hConsole, 10, 0);PLoanAgain2:			cout<<"Shady Shawn's Shack!\n\n";			cout<<"Enter Amount of the Loan (0 to cancel): ";			//await selection			cin>>intAmt;			//can't use negatives			if (intAmt<0)			{				system("cls");				PrintStats();				SetConsoleColors(hConsole, 10, 0);				cout<<"Invalid amount entered, try again man.\n\n";				goto PLoanAgain2;			}			//only loans out up to 30000			if (intAmt>=30000)			{				system("cls");				PrintStats();				SetConsoleColors(hConsole, 10, 0);				cout<<"I only give out Loans of $30,000 and below, try again man.\n\n";				goto PLoanAgain2;			}			//redefines variables appropriatly			profile.Cash=profile.Cash+intAmt;			profile.Debt=profile.Debt+intAmt;			break;		//send you back to the city without a day penalty		case 2:			CityOperations(false);			break;		//sends user through menu again due to invalid entry		default:			goto LoanChoiceAgain;			break;		}	}	//revert to old colors	SetConsoleColors(hConsole, 15, 0);	//sends user back to the city without day penalty	CityOperations(false);}//checks to see if the use already has a profile by that name savedbool CheckSaved(){	string Data=strPath + "\\profiles.dat", strTemp;	ifstream inFile(Data.c_str());	while (inFile >> Data)	{		strTemp="profile.name=" + profile.Name;		if (Data==strTemp)		{			inFile.close();			return(true);		}	};		inFile.close();	return (false);}//rewrites the files needed for savingvoid SaveGame(){	bool Saved;	string Data=strPath + "\\profiles.dat", strOldData[100], strOldData2[100], strTemp;	char chrLine[2000];	int cnt;	//empty strOldData incase this isn't the first save	for (i=0; i<=99; i++)		strOldData=" ";	Saved=CheckSaved();	if (Saved==false)	{		fstream inFile(Data.c_str(), ios::in);		//store information in file for reprint		while (! inFile.eof())		{			inFile.getline(chrLine,2000);						//remove extra space			for (i=0; i<=1999; i++)				chrLine=chrLine[i+1];			//convert to string array			for (i=0; i<=1999; i++)				strOldData[cnt]=strOldData[cnt]+chrLine;			cnt++;		};		inFile.close();				//rewrite the old info		cnt=1;		fstream outFile(Data.c_str(), ios::out);		outFile<<strOldData[0];		while (!(strOldData[cnt]==" "))		{			outFile<<endl<<strOldData[cnt];			cout<<strOldData[cnt]<<endl;			cnt++;			if (cnt>=100)				getch();		};		//write the new info		outFile<<endl<<endl;		outFile<<" profile.name="<<profile.Name<<endl;		outFile<<" profile.gun="<<profile.Gun<<endl;		outFile<<" profile.location="<<profile.Location<<endl;		outFile<<" profile.cash="<<profile.Cash<<endl;		outFile<<" profile.debt="<<profile.Debt<<endl;		outFile<<" profile.bank="<<profile.Bank<<endl;		outFile<<" profile.hentchmen="<<profile.Hentchmen<<endl;		outFile<<" profile.health="<<profile.Health<<endl;		outFile<<" profile.space="<<profile.Space<<endl;		outFile<<" profile.day="<<profile.Day<<endl;		outFile<<" loc.name="<<loc.Name<<endl;		outFile<<" loc.police="<<loc.Police<<endl;		outFile<<" loc.mindrugs="<<loc.minDrugs<<endl;		outFile<<" loc.maxdrugs="<<loc.maxDrugs<<endl;					outFile.close();			}	else	{		//open file		fstream inFile(Data.c_str(), ios::in);		//store information in file before the saved game for reprint		cnt=0;		inFile.getline(chrLine,2000);		//remove extra space		for (i=0; i<=1999; i++)			chrLine=chrLine[i+1];		//convert to string array		for (i=0; i<=1999; i++)			strOldData[cnt]=strOldData[cnt]+chrLine;		while (! ( strOldData[cnt].find("profile.name=" + profile.Name) ) )		{			cnt++;			inFile.getline(chrLine,2000);						//remove extra space			for (i=0; i<=1999; i++)				chrLine=chrLine[i+1];			cout<<chrLine<<endl;			//convert to string array			for (i=0; i<=1999; i++)				strOldData[cnt]=strOldData[cnt]+chrLine;			cout<<strOldData[cnt]<<endl;		};		if (strOldData[1]==" ")			strOldData[0]=" ";		//store information in file after the saved game for reprint		cnt=0;		inFile.getline(chrLine,2000);		//remove extra space		for (i=0; i<=1999; i++)			chrLine=chrLine[i+1];		//convert to string array		for (i=0; i<=1999; i++)			strTemp=strTemp+chrLine;		//scan until it finds the line with the profile		while (!(strTemp.find("profile.name=" + profile.Name)))		{			inFile.getline(chrLine,2000);						//remove extra space			for (i=0; i<=1999; i++)				chrLine=chrLine[i+1];			//convert to string array			for (i=0; i<=1999; i++)				strTemp=strTemp+chrLine;		};		//scan until it finds the line with the last stat in the saved game [loc.maxdrugs=12]		while (!(strTemp.find("loc.maxdrugs=12")))		{			inFile.getline(chrLine,2000);						//remove extra space			for (i=0; i<=1999; i++)				chrLine=chrLine[i+1];			//convert to string array			for (i=0; i<=1999; i++)				strTemp=strTemp+chrLine;		};		//store the rest of the file		while (!(inFile.eof()))		{			inFile.getline(chrLine,2000);						//remove extra space			for (i=0; i<=1999; i++)				chrLine=chrLine[i+1];			//convert to string array			for (i=0; i<=1999; i++)				strOldData2[cnt]=strOldData2[cnt]+chrLine;			cnt++;		};		if (strOldData2[1]==" ")			strOldData2[0]=" ";		inFile.close();				//rewrite the begining old info [1]		cnt=1;		fstream outFile(Data.c_str(), ios::out);		outFile<<strOldData[0];		while (!(strOldData[cnt]==" "))		{			outFile<<endl<<strOldData[cnt];			cnt++;		};		//write new saved data		//outFile<<endl<<endl;		outFile<<" profile.name="<<profile.Name<<endl;		outFile<<" profile.gun="<<profile.Gun<<endl;		outFile<<" profile.location="<<profile.Location<<endl;		outFile<<" profile.cash="<<profile.Cash<<endl;		outFile<<" profile.debt="<<profile.Debt<<endl;		outFile<<" profile.bank="<<profile.Bank<<endl;		outFile<<" profile.hentchmen="<<profile.Hentchmen<<endl;		outFile<<" profile.health="<<profile.Health<<endl;		outFile<<" profile.space="<<profile.Space<<endl;		outFile<<" profile.day="<<profile.Day<<endl;		outFile<<" loc.name="<<loc.Name<<endl;		outFile<<" loc.police="<<loc.Police<<endl;		outFile<<" loc.mindrugs="<<loc.minDrugs<<endl;		outFile<<" loc.maxdrugs="<<loc.maxDrugs<<endl;			//rewrite the end old info [1]		cnt=1;		outFile<<strOldData2[0];		while (!(strOldData2[cnt]==" "))		{			outFile<<endl<<strOldData2[cnt];			cnt++;		};		outFile.close();		}}  //this class checks for bad convertions with stringify(int x) class BadConversion : public std::runtime_error  { public:   BadConversion(const std::string& s)     : std::runtime_error(s)     { } };  //converts ints into strings inline std::string stringify(int x) {   std::ostringstream o;   if (!(o << x))     throw BadConversion("stringify(int)");   return o.str(); }//Prints the user data on the screenvoid PrintStats(){	//Function level Declarations	HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);	string st;	//make stats 'YELLOW' (14) with 'blk bg' (0) [stats std color]	SetConsoleColors(hConsole, 14, 0);    	//print stats	system("cls");	cout<<BufferStr("[" + profile.Name + "]",20)<<"Location: "<<profile.Location<<"\n";	st="Cash: " + stringify(profile.Cash);	cout<<BufferStr(st,20)<<"Debt: "<<profile.Debt<<"\n";	st="Bank: " + stringify(profile.Bank);	cout<<BufferStr(st,20)<<"Hentchmen: "<<profile.Hentchmen<<"\n";	st="Health: " + stringify(profile.Health);	cout<<BufferStr(st,20)<<"Free Space: "<<profile.Space<<"\n";	cout<<BufferStr("Gun: " + profile.Gun,20)<<"Day: "<<profile.Day<<"\n\n";	//revert to old colors	SetConsoleColors(hConsole, 15, 0);}//Fixes text into columnsstring BufferStr(string strString, int MAX_LEN){	//Function level delcarations	int intSpaces;	string strTemp;		//add proper spaces after the string	intSpaces=MAX_LEN-strString.length();	strTemp=strString;	for (i=1; i<=intSpaces; i++)	{		strTemp=strTemp + " ";	}	//return new str	return (strTemp.c_str());}//Displays the profiles menu along with scanning the app's dir for the//profile files within it.string ProfileMenu(){	//Function level Declarations	string Profile1, Profile2, Profile3, Profile4, Profile5;	int intChoice;	HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);	//insert directory scanning, list creation, and extention trimming here and delete the following	Profile1="Derik";	Profile2="Dennis";	Profile3="Dad";	Profile4="Jen";	Profile5="Meem";	//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]	SetConsoleColors(hConsole, 10, 0);	//Print menu	system("cls");	cout<<"Drug Wars --- By: Derik Hammer\n\n";	cout<<"1. "<<Profile1<<"\n";	cout<<"1. "<<Profile2<<"\n";	cout<<"1. "<<Profile3<<"\n";	cout<<"1. "<<Profile4<<"\n";	cout<<"1. "<<Profile5<<"\n\n";	cout<<"Selection: ";	//Await choice	cin>>intChoice;	//loops if invalid numbers are entered.	while (intChoice<1 || intChoice>5)	{			SetConsoleColors(hConsole, 10, 0);		//Print menu		system("cls");		cout<<"Drug Wars --- By: Derik Hammer\n\n";		cout<<"1. "<<Profile1<<"\n";		cout<<"1. "<<Profile2<<"\n";		cout<<"1. "<<Profile3<<"\n";		cout<<"1. "<<Profile4<<"\n";		cout<<"1. "<<Profile5<<"\n\n";		cout<<"INVALID SELECTION PLEASE CHOOSE AGAIN!\n";		cout<<"Selection: ";		//Await choice		cin>>intChoice;	}	//revert to old colors	SetConsoleColors(hConsole, 15, 0);		//Returns the name of the profile needed to be used	switch (intChoice)	{		case 1:			return Profile1;			break;		case 2:			return Profile2;			break;		case 3:			return Profile3;			break;		case 4:			return Profile4;			break;		case 5:			return Profile5;			break;	}	return "NULL";}//Displays the options for the Main Menuint MainMenu(){	//Function level Declarations	char chrChoice;	HANDLE hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,									FILE_SHARE_READ | FILE_SHARE_WRITE, 0, 									OPEN_EXISTING, 0, 0);	//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]	SetConsoleColors(hConsole, 10, 0);	//Print menu	cout<<"Drug Wars --- By: Derik Hammer\n\n";	cout<<"1. New Game.\n";	cout<<"2. Load Profile.\n";	cout<<"3. Quit.\n\n";	cout<<"Selection: ";	//Await choice	cin>>chrChoice;	CheckAgain:	switch (chrChoice)	{	//Proceed with new game	case '1':		//revert to old colors		SetConsoleColors(hConsole, 15, 0);		return (1);		break;	//Proceed with loading profile menu	case '2':		//revert to old colors		SetConsoleColors(hConsole, 15, 0);		return (2);		break;	//Proceed with exiting the application	case '3':		//revert to old colors		SetConsoleColors(hConsole, 15, 0);		return (3);		break;	//Clear screen, reprint menu, notify invalid selection, and allow a second choice	default:		system("cls");		cout<<"Drug Wars --- By: Derik Hammer\n\n";		cout<<"1. New Game.\n";		cout<<"2. Load Profile.\n";		cout<<"3. Quit.\n\n";		//revert to old colors		SetConsoleColors(hConsole, 1, 0);		cout<<"INVALID SELECTION PLEASE CHOOSE AGAIN!\n";		cout<<"Selection: ";		cin>>chrChoice;		//make stats 'GREEN' (10) with 'blk bg' (0) [menu std color]		SetConsoleColors(hConsole, 10, 0);		goto CheckAgain;	}	//revert to old colors	SetConsoleColors(hConsole, 15, 0);	return(0);}// use Unicode (wide) version of GetModuleFileNamewstring get_module_path_wide(void){	wchar_t wide_buf[65536];	wstring module_name;	if(!GetModuleFileNameW(GetModuleHandle(0), wide_buf, 65535))		return module_name;	wide_buf[65535] = L'\0';	module_name = wide_buf;	size_t pos = module_name.find_last_of(L'\\');	if(pos != string::npos)		module_name = module_name.substr(0, pos);	return module_name;}// use this function to convert from wide wstring to ASCII string if need bestring wsts(const wstring &src_string){	size_t src_len = src_string.length();	if(src_len == 0)		return "";	char *buf = new(std::nothrow) char[src_len + 1];	if(buf == 0)		return "";	wcstombs(buf, src_string.c_str(), src_len);	buf[src_len] = '\0';	string final_string = buf;	if(buf != 0)		delete [] buf;	return final_string;}//Color Change functionsWORD GetConsoleColors(HANDLE hConsole){    // get current console text attributes    CONSOLE_SCREEN_BUFFER_INFO csbi;    GetConsoleScreenBufferInfo(hConsole, &csbi);    return csbi.wAttributes;}WORD SetConsoleColors(HANDLE hConsole, WORD wColorText, WORD wColorBkg = 0){    // get old text attributes    WORD wOldColors = GetConsoleColors(hConsole);    // set new text attributes    SetConsoleTextAttribute(hConsole, wColorText | (wColorBkg << 4));    return wOldColors;}
-Lordoftools"Knowledge is not only a gift it's a responcibility."

This topic is closed to new replies.

Advertisement