ive got a issue with a problem im working on
its basically a minesweeper game where you first must read the mine locations from a file and print the uncovered results into another file.
this is an example input file
44
*...
....
.*..
....
35
**...
.....
.*...
00 <------sentinel value
Here the source.
#include <iostream>
#include <fstream>
#include <conio.h>
using namespace std;
int n;
int m;
int getField(char mines[][m] ,char mineBoard[][m],int i , int d);
void getMines(char mines[][m] ,char mineBoard[][m], int i , int d);
void calMines(char mines[][m] ,char mineBoard[][m], int i , int d);
void calFunc(char mines[][m] ,char mineBoard[][m], int i , int d);
void corners(char mines[][m] ,char mineBoard[][m], int i , int d);
void sides(char mines[][m] ,char mineBoard[][m], int i , int d);
void grid(char mines[][m] ,char mineBoard[][m], int i , int d);
void outField(char mineBoard[][m], int count, int i ,int d);
int main()
{
int i = 0;
int d = 0;
char mineBoard[n][m];
char mines[n][m];
for(int count = 1; n != 0 && m != 0; count++)
{
getField(mines,mineBoard, i , d);
calFunc(mines,mineBoard, i , d);
outField(mines,mineBoard, i , d)
}
getch();
return 0;
}
int getField(char mines[][m] ,char mineBoard[][m],int i , int d)
{
ifstream inFile;
inFile.open("inputdata.dat");
inFile >> n;
inFile >> m;
getMines(mines,mineBoard, i , d);
inFile.close();
}
void getMines(char mines[][m] ,char mineBoard[][m], int i , int d)
{
for(i = 0; i < n; i++)
{
for(d = 0; d < m; d++)
{
inFile >> mineBoard[i][d];
if(mineBoard[i][d] == '*')
{
mineBoard[i][d] = mines[i][d];
}
else if(mineBoard[i][d] == '.')
{
mineBoard[i][d] = 0;
}
}
}
}
void calMines(char mines[][m] ,char mineBoard[][m], int i, int d)
{
if(mines[i][d] == '*')
{
if(mineBoard[i][d] = 0)
{
mineBoard[i][d] = 1;
}
else if(mineBoard[i][d] > 0 )
{
mineBoard[i][d]++;
}
else
{
continue;
}
}
}
void calFunc(char mines[][m] ,char mineBoard[][m], int i , int d)
{
for(i, d ; i < n && d < m; i++, d++)
{
if(i = 1 && d = 1 || i = 1 && d = m || i = n && d = 1 ||i = n && d = m)
{
corners(mines,mineBoard, i , d);
}
else if (i = 1 || d = 1 || i = n || d = m)
{
sides(mines,mineBoard, i , d);
}
else
{
grid(mines,mineBoard, i , d);
}
}
}
void corners(char mines[][m] ,char mineBoard[][m], int i , int d)
{
calMines(mines,mineBoard, i+1 , d);
calMines(mines,mineBoard, i+1 , d+1);
calMines(mines,mineBoard, i , d+1);
}
void sides(char mines[][m] ,char mineBoard[][m], int i , int d)
{
calMines(mines,mineBoard, i , d-1);
calMines(mines,mineBoard, i+1 , d-1);
calMines(mines,mineBoard, i-1 , d);
calMines(mines,mineBoard, i+1 , d+1);
calMines(mines,mineBoard, i , d+1);
}
void grid(char mines[][m] ,char mineBoard[][m], int i , int d)
{
calMines(mines,mineBoard, i+1 , d);
calMines(mines,mineBoard, i-1 , d);
calMines(mines,mineBoard, i , d+1);
calMines(mines,mineBoard, i , d-1);
calMines(mines,mineBoard, i+1 , d+1);
calMines(mines,mineBoard, i-1 , d+1);
calMines(mines,mineBoard, i+1 , d-1);
}
void outField(char mineBoard[][m], int count, int i ,int d)
{
ofstream outFile;
outFile.open("outputdata.dat");
outFile << "Field #" << count;
for (i = 0; i < n; i++)
{
for(d = 0; d < m; d++ )
{
outFile << mineBoard[i][d];
}
outFile << endl;
}
outFile.close();
}
the main problem i have is that it keeps giving the error "array bound is not an integer constant."and other errors in the prototypes
what does that mean?
also if there is any other logical error in it please let me know.