passing pointers to different functions

I'm working on a college project in which I need to make minesweeper. I have to make it without using global variables, which is started to become a headache. At the minute I'm trying to check the squares around the entered co-ordinates for mines using the function countMines and pass the number of mines(int c) into the draw_gridBeginner function. I've watched YouTube videos on passing by pointers but I am still yet to see anything other than errors.

Any help is greatly appreciated.

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
  	#include <iostream>
	#include <conio.h>
	#include <algorithm>
	#include <ctime>
	#include <string>
	#include <climits>
	using namespace std; 
	
	const int n = 8; //used to pass parramaters for beginner minefield
	
	void countMines(int beginnerMField[][n], int playerbeginner, int *c){
	
	int d = *c 
	int Column;
	int Row;
	
	if(beginnerMField[Row - 1][Column - 1] == 9 ){
		d++;
	}
	if(beginnerMField[Row - 1 ][Column ] == 9 ){
		d++;
	}
	if(beginnerMField[Row - 1][Column + 1] == 9 ){
		d++;
	}
	if(beginnerMField[Row  ][Column - 1] == 9 ){
		d++;
	}
	if(beginnerMField[Row ][Column + 1] == 9 ){
		d++;
	}
	if(beginnerMField[Row +1][Column - 1] == 9 ){
		d++;
	}
	if(beginnerMField[Row + 1][Column ] == 9 ){
		d++;
	}
	if(beginnerMField[Row + 1][Column + 1] == 9 ){
		d++;
	}
		
	}
	
	bool alive = true;
//--------------------------------------------------------------------PLAYER FUNCTIONS START----------------------------------------------------------------	
	//Enter co-ordinates for beginner game
	void playerbeginner(int beginnerMField[][n]){
		string answer;
		while(alive){
		       	int Column;
		        int Row;
		        cout << "Enter Column number: "<<endl;
		        cin >> Column;
		        cout << "Enter Row number: "<<endl;
		        cin >> Row;
		        cout << "[" << Column << "][" << Row << "]" << "\n";
		        int xValue = Row;
		        int yValue = Column;
		        cout <<beginnerMField[xValue-1][yValue-1] << "\n";
		 
		        
		if(beginnerMField[xValue-1][yValue-1] == 9){
			 	alive = false;
	        	system("CLS");
	        	cout<<"			BOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM"<<endl;
	        	cout<<"						  GAME OVER"<<endl;
	        	cout <<"					  Play again? Type Yes or No"<<endl;
	        	cin>>answer;
	        		
	        	if(answer == "Yes"  ){
	        			
	        		
					}
	        		
	        	if(answer == "No" ){
	        			
	        			break;
					}
			}
			}
		}
//--------------------------------------------------------------------PLAYER FUNCTIONS ENDS-----------------------------------------------------------------
		
//-------------------------------------------------------------------DRAW BOARD FUNCTIONS START-------------------------------------------------------------
	void draw_gridBeginner(int beginnerMField[][n]){
		
	countMines(int beginnerMField[][n], int playerbeginner,int *c);
	
	int line = 1;
	cout << "  1  2  3  4  5  6  7  8\n";
	for (int j = 0; j < 8; j++)
	{
		cout << line;
		line++;
		for (int i = 0; i < 8; i++)
		{
			cout << "[" << c << "]"; //output the value of c into the grid
		}
		cout<<endl;
	}


}
}
		  
//----------------------------------------------------------------------DRAW BOARD FUNCTION END-------------------------------------------------------------	
//----------------------------------------------------------------------- MINE ARRAYS START ----------------------------------------------------------------	
	// randomises 10 mines (9) into an array 8 x 8(beginner board) 
	void mineBeginner(int beginnerMField[][n])
	{
	
			
			int x = 0;
		
			srand ((unsigned int)(time(0)));
			for(int x=0; x<8; x++){
		
				for(int j=0;j<8; j++){
					
					int values1=rand()%8;
					int values2=rand()%8;
			 		int temp = beginnerMField[x][j];
					beginnerMField[x][j]=beginnerMField[values1][values2];
					beginnerMField[values1][values2]=temp;		
				}
		}
		
			for(int x=0; x<8; x++)
			{
				for(int j=0;j<8;j++)
				{
					//cout<<beginnerMField[x][j];	
				}
					//cout<<endl;
			}
			
		
	}
//--------------------------------------------------------------------Mine Array Ends------------------------------------------------------------------------
//--------------------------------------------------------------------Menu Starts----------------------------------------------------------------------------	
		
	void menu(int beginnerMField[][n]){
		
	int selection;

cout << "********************************MINESWEEPER*************************************\n\n";
cout << "1. Play Beginner Game\n" << "2. Play Intermediate Game\n" << "3. Play Advanced Game\n" << "4. Show Score Board\n" << "5. Quit Game\n\n\n";
cout << "Please enter your selection: ";
cin >> selection;
cout << endl;

switch (selection)
{
case 1:
	cout << "Play Beginner Game\n";
	cout << "\n";
	system("CLS");
	mineBeginner(beginnerMField);
	draw_gridBeginner(beginnerMField[8][n])
	playerbeginner(beginnerMField);
	
	break;

case 2:
	cout << "Play Intermediate Game\n";
	cout << "\n";
	system("CLS");
	
	break;
case 3:
	cout << "Play Advanced Game\n";
	cout << "\n";
	system("CLS");
	
	break;

case 4:
	cout << "Show Score Board\n";
	cout << "\n";
	break;

case 5:
	cout << "Goodbye.\n";
	break;

default: cout << selection << "is not a valid menu item.\n";

	cout << endl;
}
}
//-------------------------------------------------------------------------MENU END--------------------------------------------------------------------------
//------------------------------------------------------------------------CHECK MINES AROUND STARTS----------------------------------------------------------
//---------------------------------------------------CHECK MINES AROUND END--------------------------------------------------------------
	
int main(){
	bool alive = true;
		int beginnerMField[][n] = {
							{0,0,9,0,0,9,0,0},
							{0,0,9,0,0,9,0,0},
							{0,0,9,0,0,0,0,0},
							{0,0,9,0,0,0,0,0},
							{0,0,0,0,0,9,0,0},
							{0,0,9,0,0,0,0,0},
							{0,0,9,0,0,0,0,0},
							{0,0,0,9,0,0,0,0}
		};
		
		menu(beginnerMField);
		
}


//------------------------------------------------------------------------MENU FUNCTION ENDS------------------------------------------------------------------ 
Last edited on
On line 13 you are missing a ;
Line 87: When calling a function you specify only the name, not the type of the parameter.
Also you can't pass the name of a function to a function that expects an int.
On line 104 it seems you have a } too much.
Try to fix these issues and compile again.
It helps if you paste all the error messages here as well.
Another little help is to declare an alias for your array like using MineField = int[n][n];
cheers for the quick reply, trying to sort out the errors you picked up on.

Also you can't pass the name of a function to a function that expects an int.


Am i going about thisthe hard way then? is there an easier method to just pass the total though?

Another little help is to declare an alias for your array like using MineField = int[n][n];


So i would have

1
2
3
4
5
6
7
8
9
10
11
          MineField = int[n][n]
          int[n][n] = {
							{0,0,9,0,0,9,0,0},
							{0,0,9,0,0,9,0,0},
							{0,0,9,0,0,0,0,0},
							{0,0,9,0,0,0,0,0},
							{0,0,0,0,0,9,0,0},
							{0,0,9,0,0,0,0,0},
							{0,0,9,0,0,0,0,0},
							{0,0,0,9,0,0,0,0}
		};

then change all the beginnerMField/beginnerMField[][n] to MineField?
Last edited on
It would be like this:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
const int n = 8; //used to pass parramaters for beginner minefield
using  MineField = int[n][n];

void menu(MineField field)
{
}

int main() 
{
  MineField field = 
  {
    { 0,0,9,0,0,9,0,0 },
    { 0,0,9,0,0,9,0,0 },
    { 0,0,9,0,0,0,0,0 },
    { 0,0,9,0,0,0,0,0 },
    { 0,0,0,0,0,9,0,0 },
    { 0,0,9,0,0,0,0,0 },
    { 0,0,9,0,0,0,0,0 },
    { 0,0,0,9,0,0,0,0 }
  };

  menu(field);
}
thanks for the reply.

I've decided to try and do it as a public class but i've ran into a bit of difficulty.

What i'm trying to do at the minute is :

1.randomise the mines into the beginnerMfield - which i've done (void mineBeginner).
2. Print a new array called Gameboard which I've also done(in the main function)
3. user input the co-ordinate they wish to play also done (void playerbeginner)
4. This co-ordinate should then access the public class function to total the mines in the 8 squares around and total it. - which I think is correct?
5. This total should then print into the co-ordinate the player has entered, but where I have it at the minute (around line 113 would draw the counter into all the squares I believe)

I'm not really sure where I should continue from here as if I print the gameboard first my game doesn't check the values within the beginnerMField.

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
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
	#include <iostream>
	#include <conio.h>
	#include <algorithm>
	#include <ctime>
	#include <string>
	#include <climits>
	using namespace std; 
	
	const int n = 8; //used to pass parramaters for beginner minefield
	
	

//---------------------------------------------------TOTAL MINES AROUND SQUARE--------------------------------		
	class move
	{
		public:
	 		int Row;
		    int Column;
			int counter;
		
		void Move(int beginnerMField[][n])
		{
		if(beginnerMField[Row-1][Column-1] == 9 )
		{
			counter ++;
		}
		if(beginnerMField[Row-1][Column] == 9 )
		{
			counter ++;
		}
		if(beginnerMField[Row-1][Column+1] == 9 )
		{
			counter ++;
		}
		if(beginnerMField[Row][Column-1] == 9 )
		{
			counter ++;
		}
		if(beginnerMField[Row][Column+1] == 9 )
		{
			counter ++;
		}
		if(beginnerMField[Row+1][Column+1] == 9 )
		{
			counter ++;
		}
		if(beginnerMField[Row+1][Column] == 9 )
		{
			counter ++;
		}
		if(beginnerMField[Row+1][Column-1] == 9 )
		{
			counter ++;
		}
		}
	};
//-------------------------------------------------------------------------------------------------------------	
	bool alive = true;
//--------------------------------------------------------------------PLAYER FUNCTIONS START----------------------------------------------------------------	
	//Enter co-ordinates for beginner game
	void playerbeginner(int beginnerMField[][n]){
		
		string answer;
		while(alive){
		       	int Column;
		        int Row;
		        cout << "Enter Column number: "<<endl;
		        cin >> Column;
		        cout << "Enter Row number: "<<endl;
		        cin >> Row;
		        cout << "[" << Column << "][" << Row << "]" << "\n";
		        int xValue = Row;
		        int yValue = Column;
		        cout <<beginnerMField[xValue-1][yValue-1] << "\n";
		        Move(beginnerMField);
		 
		        
		if(beginnerMField[xValue-1][yValue-1] == 9){
			 	alive = false;
	        	system("CLS");
	        	cout<<"			BOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM"<<endl;
	        	cout<<"						  GAME OVER"<<endl;
	        	cout <<"					  Play again? Type Yes or No"<<endl;
	        	cin>>answer;
	        		
	        	if(answer == "Yes"  ){
	        		
	        		
					}
	        		
	        	if(answer == "No" ){
	        			
	        			break;
					}
			}
			}
		}
//--------------------------------------------------------------------PLAYER FUNCTIONS ENDS-----------------------------------------------------------------
		
//-------------------------------------------------------------------DRAW BOARD FUNCTIONS START-------------------------------------------------------------
	void draw_gridBeginner(int beginnerMField[][n],int gameBoard[][n])
	{
	
		int counter=1;
		int line = 1;
		cout << "  1  2  3  4  5  6  7  8\n";
		for (int j = 0; j < 8; j++)
		{
			cout << line;
			line++;
			for (int i = 0; i < 8; i++)
			{
				cout << "[" << gameBoard[j][i] << "]";
			}
			cout<<endl;
		}
	
	}
		  
//----------------------------------------------------------------------DRAW BOARD FUNCTION END-------------------------------------------------------------	
//----------------------------------------------------------------------- MINE ARRAYS START ----------------------------------------------------------------	
	// randomises 10 mines (9) into an array 8 x 8(beginner board) 
	void mineBeginner(int beginnerMField[][n])
	{
	
			
			int x = 0;
		
			srand ((unsigned int)(time(0)));
			for(int x=0; x<8; x++){
		
				for(int j=0;j<8; j++){
					
					int values1=rand()%8;
					int values2=rand()%8;
			 		int temp = beginnerMField[x][j];
					beginnerMField[x][j]=beginnerMField[values1][values2];
					beginnerMField[values1][values2]=temp;		
				}
		}
		
			for(int x=0; x<8; x++)
			{
				for(int j=0;j<8;j++)
				{
					//cout<<beginnerMField[x][j];	
				}
					//cout<<endl;
			}
			
		
	}
//--------------------------------------------------------------------Mine Array Ends------------------------------------------------------------------------
//--------------------------------------------------------------------Menu Starts----------------------------------------------------------------------------	
		
	void menu(int beginnerMField[][n],int gameBoard[][n]){
		
	int selection;

cout << "********************************MINESWEEPER*************************************\n\n";
cout << "1. Play Beginner Game\n" << "2. Play Intermediate Game\n" << "3. Play Advanced Game\n" << "4. Show Score Board\n" << "5. Quit Game\n\n\n";
cout << "Please enter your selection: ";
cin >> selection;
cout << endl;

switch (selection)
{
case 1:
	cout << "Play Beginner Game\n";
	cout << "\n";
	system("CLS");
	mineBeginner(beginnerMField);
	draw_gridBeginner(gameBoard,beginnerMField);
	playerbeginner(beginnerMField);
	
	break;

case 2:
	cout << "Play Intermediate Game\n";
	cout << "\n";
	system("CLS");
	
	break;
case 3:
	cout << "Play Advanced Game\n";
	cout << "\n";
	system("CLS");
	
	break;

case 4:
	cout << "Show Score Board\n";
	cout << "\n";
	break;

case 5:
	cout << "Goodbye.\n";
	break;

default: cout << selection << "is not a valid menu item.\n";

	cout << endl;
}
}
//-------------------------------------------------------------------------MENU END--------------------------------------------------------------------------
//------------------------------------------------------------------------CHECK MINES AROUND STARTS----------------------------------------------------------
	/*(void checkformines(int beginnerMField[][n])
	{
		
	} */
//-----------------------------------------------------------------------CHECK MINES AROUND END--------------------------------------------------------------
	
int main(){
	bool alive = true;
		int beginnerMField[][n] = {
							{0,0,9,0,0,9,0,0},
							{0,0,9,0,0,9,0,0},
							{0,0,9,0,0,0,0,0},
							{0,0,9,0,0,0,0,0},
							{0,0,0,0,0,9,0,0},
							{0,0,9,0,0,0,0,0},
							{0,0,9,0,0,0,0,0},
							{0,0,0,9,0,0,0,0}
		};
		
		int gameBoard[][n] = {
							{3,3,3,3,3,3,3,3},
							{3,3,3,3,3,3,3,3},
							{3,3,3,3,3,3,3,3},
							{3,3,3,3,3,3,3,3},
							{3,3,3,3,3,3,3,3},
							{3,3,3,3,3,3,3,3},
							{3,3,3,3,3,3,3,3},
							{3,3,3,3,3,3,3,3}				
		};

		menu(gameBoard,beginnerMField);
		
}


//------------------------------------------------------------------------MENU FUNCTION ENDS------------------------------------------------------------------ 
Topic archived. No new replies allowed.