### 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.

 ``123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213`` `````` #include #include #include #include #include #include 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: "<> Column; cout << "Enter Row number: "<> Row; cout << "[" << Column << "][" << Row << "]" << "\n"; int xValue = Row; int yValue = Column; cout <>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<> 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

 ``1234567891011`` `````` 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:
 ``1234567891011121314151617181920212223`` ``````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); }``````

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.

 ``123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242`` `````` #include #include #include #include #include #include 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: "<> Column; cout << "Enter Row number: "<> Row; cout << "[" << Column << "][" << Row << "]" << "\n"; int xValue = Row; int yValue = Column; cout <>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<> 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------------------------------------------------------------------ ``````