Boa noite galera, estou desenvolvendo um campo minado em c, e estou tendo dificuldade em fazer o loop que abre casa dos zeros até achar dicas de bomba,como acontece no jogo mesmo, o programa está em desenvolvimento, e só precisa de basicamente (além de coisas mais básicas) isso para funcionar, guardadas as devidas limitações que o c apresenta para interface. segue código abaixo
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void zerarMatriz(int t[9][9]);
void mostrarMatriz(int t[9][9]);
void sortearBombas(int t[9][9]);
void calculadica (int t[9][9]);
void tabusuario (int tabusu[9][9]);
void calculadica (int t[9][9]);
void jogatina(int tabusu[9][9], int t[9][9]);
int main() {
int t[9][9],tabusu[9][9];
zerarMatriz(t);
sortearBombas(t);
calculadica (t);
mostrarMatriz(t);
tabusuario (tabusu);
jogatina (tabusu,t);
// - vazio -> abre e analisa vizinhos
// se B
// - marca a bomba
// até ganhar ou perder
return 0;
}
void zerarMatriz(int t[9][9]) {
int i, j;
for (i=0; i<9; i++) {
for (j=0; j<9; j++) {
t[j] = 0;
}
}
}
void mostrarMatriz(int t[9][9]) {
int i, j;
printf("\n");
for (i=0; i<9; i++) {
for (j=0; j<9; j++) {
printf (" %d ", t[j]);
}
printf ("\n");
}
printf ("\n");
}
void sortearBombas(int t[9][9]) {
int i, j, cb = 0;
srand(time(NULL));
while (cb < 10) {
i = rand()%9;
j = rand()%9;
if (t[j] == 0) {
t[j] = -1;
cb++;
}
}
}
void calculadica (int t[9][9]){
int i=0,j=0,dicabomba;
for (i=0; i<9; i++) {
for (j=0; j<9; j++) {
dicabomba=0;
if (t[j]==0){
if (t[j+1]==-1){
dicabomba++;
}
if (t[j+2]==-1){
dicabomba++;
}
if (t[j-1]==-1 && j-1>=0){
dicabomba++;
}
if (t[j-2]==-1 && (j-2)>=0){
dicabomba++;
}
if (t[i+1][j]==-1){
dicabomba++;
}
if (t[i+2][j]==-1){
dicabomba++;
}
if (t[i-1][j]==-1 && (i-1)>=0){
dicabomba++;
}
if (t[i-2][j]==-1 && (i-2)>=0){
dicabomba++;
}
t[j]=dicabomba;
}
}
}
}
void tabusuario (int tabusu[9][9]){
int i, j;
int l, c;
for(i = 0; i < 9; i++){
for(j = 0; j < 9; j++){
tabusu[j] = 0;}
}
for(c = 0; c < 9; c++){
printf("\n\n");
for(l = 0; l < 9; l++)
{
for(c = 0; c < 9; c++)
{
printf("%d ", tabusu[l][c]);
}
printf("\n");
}
}
}
void jogatina (int tabusu[9][9], int t[9][9]){
int x, y,bomba,resp,i=0,l,c;
while (i<10){
printf ("digite a coordenada x: ");
scanf ("%d",&x);
printf ("digite a coordenada y: ");
scanf ("%d",&y);
if (x+1<=0 || y+1<=0 || y+1>9 || x+1>9){
printf ("esta coordenada nao existe, tente outra");
break;
}
printf ("\n digite o que deseja fazer: (1)abrir ou (2)marcar bomba \n");
scanf ("%d", &resp);
if (resp=1){
tabusu[x-1][y-1]=t[x-1][y-1];
if (t[x-1][y-1]==-1){
tabusu[x-1][y-1]=-1;
{
for(l = 0; l < 9; l++)
{
for(c = 0; c < 9; c++)
{
printf("%d ", t[l][c]);
}
printf("\n");
}
printf ("BOMBA!, voce PERDEU");
break;
}
}
if (t[x-1][y-1]!=-1){
tabusu[x-1][y-1]=3;
}
}
for(l = 0; l < 9; l++)
{
for(c = 0; c < 9; c++)
{
printf("%d ", tabusu[l][c]);
}
printf("\n");
}
i++;
}
}