hey im having some problems with an overloaded operator:
Code:
/********************************/
/* MineSweeper 0.0.1 */
/********************************/
#include <iostream.h>
#include "apmatrix.h"
#include "randgen.h"
#include "randgen.cpp"
class minesweeper
{
public:
apmatrix<int> create(int x, int y); //Creates a matrix with the x and y grid size
void randfill(apmatrix<int> &v); //Fills the matrix with random integers
bool checkifbomb(apmatrix<int> &p, int x, int y); // Checks if position (x,y) in apmatrix p is a bomb (0 is bomb)
void gameloop(apmatrix<int> &p, int originalx, int originaly); //the loop that the game will go through
};
void operator << (ostream &os, apmatrix<int> &v); //Free function: displays the minesweeper matrix
int main()
{
minesweeper main;
apmatrix<int> p;
int x, y;
cout << "****Welcome to MineSweeper 0.0.1***" << endl;
cout << "Please enter the size of the grid (x y): ";
cin >> x >> y;
p = main.create(x,y);
main.randfill(p);
cout << p;
main.gameloop(p, x, y);
return 0;
}
apmatrix<int> minesweeper::create(int x, int y)
{
apmatrix<int> p(x+1, y+1);
return p;
}
void minesweeper::randfill(apmatrix<int> &v)
{
RandGen r;
int cols = v.numcols();
int rows = v.numrows();
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
v[i][j] = r.RandInt(0, 1);
}
}
}
bool minesweeper::checkifbomb(apmatrix<int> &p, int x, int y)
{
if (p[x][y] == 0)
{
return false;
}
else return true;
}
void minesweeper::gameloop(apmatrix<int> &p, int originalx, int originaly)
{
int x, y;
bool gameover = false;
while (gameover == false)
{
cout << "Enter the coordinates to check (x y): ";
cin >> x >> y;
while ((x >originalx) || (y > originaly))
{
cout << "Coordinates larger than the grid! Enter new ones: ";
cin >> x >>y;
}
if (checkifbomb(p,x,y) == true)
{
cout << p;
cout <<"You have stepped on a bomb! Game Over!" << endl;
gameover = true;
}
else
{
cout << p;
cout << "Safe!" << endl;
}
}
}
void operator << (ostream &os, apmatrix<int> &v)
{
int rows = v.numrows()-1;
int cols = v.numcols()-1;
for (int i = 0; i < rows; i++)
{
for (int j = 0; i < cols; j++)
{
os << " * ";
}
}
}
prints infinte stars!!!