Сообщение Игра "Сапер" от 04.12.2021 18:29
Изменено 04.12.2021 18:29 avovana
Re: Игра "Сапер"
3 этапа:
1. Создать поле. Расставить бомбы
2. Расставить цифры, которые говорят, сколько бомб вокруг
3. Кликнуть по полю, получить результат:
а) Пустое место. Открываются все пустые рядом и пустые рядом с ними и т.д.
б) Цифра
в) Бомба
Сделал 2 этапа:
1. Создать поле. Расставить бомбы
2. Расставить цифры, которые говорят, сколько бомб вокруг
3. Кликнуть по полю, получить результат:
а) Пустое место. Открываются все пустые рядом и пустые рядом с ними и т.д.
б) Цифра
в) Бомба
Сделал 2 этапа:
int x, y, bombs;
//======================
vector<vector<int>> table;
table.resize(x);
for(auto & col: table)
col.resize(y);
// 9 == bomba
// 0 == empty
for (int i = 0; i < bombs; ++i) {
int row = srand(time_now()) % x;
int col = srand(time_now()) % y;
if(table[col][row] == 9) {
--i;
continue;
}
table[col][row] = 9;
}
//======================
for(int col = 0; col < x; ++col) {
for(int row = 0; row < y; ++row) {
if(table[col][row] == 9)
continue;
/*
col - 1, row
col + 1, row
col , row - 1
col , row + 1
col , row
col - 1, row - 1
col + 1, row - 1
col - 1, row + 1
col + 1, row + 1
*/
int bombs_around = 0;
int cols[] = [col - 1, col, col + 1];
int rows[] = [row - 1, row, row + 1];
for(int l = 0; l < 3; ++l) {
for(int k = 0; k < 3; ++k) {
if(cols[l] < 0 || cols[l] > x - 1 || rows[k] < 0 || rows[k] > y - 1)
continue;
if(table[cols[l]][rows[k]] == 9)
bombs_around++;
}
}
table[col][row] = bombs_around;
}
Игра "Сапер"
3 этапа:
1. Создать поле. Расставить бомбы
2. Расставить цифры, которые говорят, сколько бомб вокруг
3. Кликнуть по полю, получить результат:
а) Пустое место. Открываются все пустые рядом и пустые рядом с ними и т.д.
б) Цифра
в) Бомба
Сделал 2 этапа:
1. Создать поле. Расставить бомбы
2. Расставить цифры, которые говорят, сколько бомб вокруг
3. Кликнуть по полю, получить результат:
а) Пустое место. Открываются все пустые рядом и пустые рядом с ними и т.д.
б) Цифра
в) Бомба
Сделал 2 этапа:
int x, y, bombs;
//======================
vector<vector<int>> table;
table.resize(x);
for(auto & col: table)
col.resize(y);
// 9 == bomba
// 0 == empty
for (int i = 0; i < bombs; ++i) {
int row = srand(time_now()) % x;
int col = srand(time_now()) % y;
if(table[col][row] == 9) {
--i;
continue;
}
table[col][row] = 9;
}
//======================
for(int col = 0; col < x; ++col) {
for(int row = 0; row < y; ++row) {
if(table[col][row] == 9)
continue;
/*
col - 1, row
col + 1, row
col , row - 1
col , row + 1
col , row
col - 1, row - 1
col + 1, row - 1
col - 1, row + 1
col + 1, row + 1
*/
int bombs_around = 0;
int cols[] = [col - 1, col, col + 1];
int rows[] = [row - 1, row, row + 1];
for(int l = 0; l < 3; ++l) {
for(int k = 0; k < 3; ++k) {
if(cols[l] < 0 || cols[l] > x - 1 || rows[k] < 0 || rows[k] > y - 1)
continue;
if(table[cols[l]][rows[k]] == 9)
bombs_around++;
}
}
table[col][row] = bombs_around;
}