dimanche 15 mars 2020

identifier "board" not undefined and also undeclared identifier

I am receiving an error with the board that I have which says "identifier board is undefined". I have created my board. I previously asked a question on Stack Overflow about the board when I used void draw() but the board was only local to the draw function and I used std::vector<std::vector<char>> board; but my other one had a lot of detail and I was able to use cout << and cin >> which I need to use meaning I would like to still stick with vector< vector<char> > board(mapSize, vector<char>(mapSize, '0'));

#include<Windows.h>
#include<iostream>
#include<vector>

using namespace std;

//specify the default value to fill the vector elements
int mapSize = 0;


int row = 0;
int column = 0;
int x = row = 0;
int y = column = 0;
int horizontal = 0;
int vertical = 0;
int player = 0;



void play();
void playAt();
bool hasLegalMoveFor(bool);

int main()
{
cout << "Enter the size of board. It should accept any size between 2 and 15. => ";
cin >> mapSize;

vector< vector<char> > board(mapSize, vector<char>(mapSize, '0'));
for (int i = 0; i < mapSize; i++) {
    for (int j = 0; j < mapSize; j++) {
        cout << board[i][j] << " ";
    }
    cout << endl;

play();
playAt();
return 0;
}
}

int CheckValid(int i, int j, int player) {

if (board[x][y] != 0)
    return 0;
if (player == 1) {
    if (board[x][y + 1] != 0 || y == 12)
        return 0;
}
else {
    if (board[x + 1][y] != 0 || x == 12)
        return 0;
}
return 1;
}

void play()
{
bool player = horizontal;
while (true) {
    cout << ("\n");
    if (player == horizontal) {
        cout << ("Horizontal to play");
    }
    else {
        cout << ("Vertical to play");
    }
    if (!hasLegalMoveFor(player)) {
    cout << ("No legal moves -- you lose! ");
    return;
    }
    cout << ("Rows: ");
    int row;
    cin >> row;
    cout << ("Column: ");
    int column;
    cin >> column;
    //playAt(row, column, player);
    player = !player;
}
}

void playAt() {
if (!board[x][y] && !board[x][y + 1] && player == horizontal) {
    board[x][y] = true;
    board[x][y + 1] = true;
}
else if (board[x][y] && !board[x + 1][y] && player == vertical) {
    board[x][y] = true;
    board[x + 1][y] = true;
}else {
    cout << ("Not a legal move!");
}
}

bool hasLegalMoveFor(bool player) {
int rowOffset = 0;
int columnOffset = 0;
if (player == horizontal) {
    columnOffset = 1;
}
else {
    rowOffset = 1;
}
for (int x = 0; row < (8 - rowOffset); x++) {
    for (int y = 0; y < (8 - columnOffset); y++) {
        if (!(board[x][y] = board[x + rowOffset][y + columnOffset])) {
            return true;
        }
    };
}
return false;
}

Aucun commentaire:

Enregistrer un commentaire