Quick help!

Hi, i have just finished a program but i'm stuck as how to add a function of how to reset the high scores list. (n for no, y for yes) (the program is a game show) here is the code.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
// Include the libraries
#include <iostream>
#include <string> 
#include <fstream>

// Use standard namespace
using namespace std;

//Declare global variables
int Guess;
int Winnings;

// Define the question class
class Question
{
private:
	string Question_Text;
	string Answer_1;
	string Answer_2;
	string Answer_3;
	string Answer_4;
	int Correct_Answer;
	int Prize_Amount; //How much the question was worth.
public:
	void setValues (string, string, string, string, string, int, int);
	void askQuestion ( );
};

void main ( ) 
{

	//Declare the local variables
	int High_Score[5];
	string High_Score_Name[5];
	int Rank;

	//Initialize the high score at 0
	High_Score[4] = 0;

	//input the high scores from a field
	ifstream Input_High_Scores;
	Input_High_Scores.open ("High_Scores.txt");

	for (int i = 0; i < 5; i++)
	{
		Input_High_Scores >> High_Score[i];
		Input_High_Scores >> High_Score_Name[i]; 
	}
	Input_High_Scores.close ( );

	if (High_Score[4] == 0)
	{

		//Initialize the local variables
		High_Score[0] = 25000;
		High_Score[1] = 12000;
		High_Score[2] = 7500;
		High_Score[3] = 4000;
		High_Score[4] = 2000;
		High_Score_Name[0] = "Gwyneth";
		High_Score_Name[1] = "Adam";
		High_Score_Name[2] = "Eric";
		High_Score_Name[3] = "Dan";
		High_Score_Name[4] = "Nick";
	}

	// Show the title screen
	cout << "****************************" << endl;
	cout << "*                          *" << endl;
	cout << "* The Great Quiz Show Game *" << endl;
	cout << "*                          *" << endl;
	cout << "*           by             *" << endl;
	cout << "*                          *" << endl;
	cout << "*           me             *" << endl; 
	cout << "****************************" << endl;
	cout << endl;

	// Create instances  of Question
	Question q1;
	Question q2;
	Question q3;
	Question q4;
	Question q5;

	//Set Values of the Question instances
	q1.setValues ("What does cout do??", 
		         "Eject a cd", 
				 "Send text to a printer", 
				 "Print text on the screen",
				 "Play a sound", 
				 3, 
				 4500);

	q2.setValues ("Which symbol is used to create a comment??", 
		         "[comment]", 
				 "//", 
				 "{ }",
				 "/", 
				 2, 
				 4500);

	q3.setValues ("What does cin do??", 
		         "public and local", 
				 "global and local", 
				 "public and private",
				 "global and private", 
				 3, 
				 6500);

	q4.setValues ("What is the correct way to include the iostream library??", 
				 "include <iostream>", 
				 "#include 'iostream'", 
				 "#include <iostream.library>",
				 "#include <iostream>", 
				 4, 
				 5000);

	q5.setValues ("Which symbol normally ends a line?", 
		         ";", 
				 ":", 
				 "endl",
				 ")", 
				 1, 
				 4500);

	//Ask Questions
	q1.askQuestion ( );
	q2.askQuestion ( );
	q3.askQuestion ( );
	q4.askQuestion ( );
	q5.askQuestion ( );

	if (Winnings >= High_Score[4])
	{
		//Get user rank
		for (int i = 4; Winnings >= High_Score[i] && i>= 0; i--)
		{
			Rank =i;
		}
		
		//Rearrange the high scores list
		for (int i = 4; i !=Rank; i--)
		{
			High_Score[i] = High_Score[i-1];
			High_Score_Name[i] = High_Score_Name[i-1];
		}
		
		cout << "You got a high score!" << endl;
		cout << "Please enter your name" << endl;
		cin >> High_Score_Name[Rank];
		High_Score[Rank] = Winnings;
	} 

	//Print the High Score list
	cout << "High Score List" << endl;
	cout << endl;
	for (int i = 0; i < 5; i++)
	{
		cout << High_Score[i] << " " << High_Score_Name[i] << endl;
	}

	//Output the high scores to a file
	ofstream Output_High_Scores;
	Output_High_Scores.open ("High_Scores.txt");

	for (int i = 0; i < 5; i++)
	{
		Output_High_Scores << High_Score[i] << endl;
		Output_High_Scores << High_Score_Name[i] << endl;
	}
	Output_High_Scores.close ( );

	system ("PAUSE");
}

// Store values for Question Variables
void Question::setValues (string q, string a1, string a2, string a3, string a4, int ca, int pa)
{
	Question_Text = q;
	Answer_1 = a1;
	Answer_2 = a2;
	Answer_3 = a3;
	Answer_4 = a4;
	Correct_Answer = ca;
	Prize_Amount = pa;
}

void Question::askQuestion ( )
{
	//Ask the question 
	cout << endl;
	cout << Question_Text << endl;
	cout << "1. " << Answer_1 << endl;
	cout << "2. " << Answer_2 << endl;
	cout << "3. " << Answer_3 << endl;
	cout << "4. " << Answer_4 << endl;
    cout << endl;

	//Ask for a guess
	cout << "What is your answer?" << endl;
	cin >> Guess;

	// If the user guesses the right answer, add Prize winnings together.
	if (Guess == Correct_Answer)
	{
		cout << endl;
		cout << "You are correct!!" << endl;
		Winnings = Winnings + Prize_Amount;
		cout << "You just won $" << Prize_Amount << endl;
		cout << "Total winnings: $" << Winnings << endl;
		cout << endl;
	}
	else
	{
		cout << endl;
		cout << "You are not correct :(" << endl;
		cout << "Total winnings: $" << Winnings << endl;
		cout << endl;
	}
}


The high score list is a separate text file. Thanks!
Hello, i tried to play your game there seems to be an error. but i read through the .cpp and it's a very good bit of code, looks good, organised and basic but very very good. sorry i couldn't help.

Thank you for trying!
If by reset the highscores list you mean to delete the content of the file you should simple start a new ofstream since its default behavior is override all existing content (ofstream reset_scores ("High_Scores.txt");).
Last edited on
maybe you can add instead of highscorename or high score ' '(space) in that file you can make it with loop you knew that.. and put instead of all lines only ' '(space).. maybe this will help you
Zeillinger, well i want to make it so that there's a default high scores list. and when it's "reset" then the scores go back to default. know what i mean?
Well, then it's as simple as clearing it. Store the default in some string and initiate a new ofstream, writing the stored default high scores. It'll just replace the existing content of the file.
Last edited on
i need some sort of code to get me started cuz i'm mind blank about it. thanks!
1
2
3
4
5
6
7
void resetScores() {
	ofstream file ("highscores.txt");
	const char *default_list = "1337 Zeillinger\n100 airguitarman94\n19 Some-Other-Guy"; // the default list.
	if(file.good())
		file << default_list;
	file.close();
}

Is that what you're trying to do?
i think so, but i need to make it so that the user can type "y" if they want to reset it.
Just call the reseting function (e.g. resetScores) if the user inputs 'y' to the program. That shouldn't be a problem...
so where should i add the code you gave me?
The function should probably be somewhere outside of the main function, yet not as a part of the class Question. If you are intending to call the reset function from main (as you probably do) you should declare it before main.
hmm, not getting it to work properly... what am i doing wrong?
Could you post your updated coded and the errors you got (if there were any)?
sure. i will in a bit cuz i g2 run for a little bit. thx
Topic archived. No new replies allowed.