void afunda_cruzador(char** mapa, int M, int N, tiro t) { int linha = t.tiro_linha; int coluna = t.tiro_coluna; int contador = 0; tiro x; mapa[t.tiro_linha][t.tiro_coluna] = '*'; while(contador < 7 ){ proxima_posicao(M, N, t, &linha, &coluna, &contador); if(mapa[linha][coluna] = 'C') { x.tiro_linha = linha; x.tiro_coluna = coluna; afunda_cruzador(mapa, M, N, x); } } }
void afunda_cruzador(char **mapa, int linha, int coluna, int rowMax, int columnMax, int *contador) { mapa[linha][coluna] = '*'; while( (*contador) < 4 ) { if(linha != 0 && coluna != 0) { if(mapa[linha - 1][coluna - 1] == 'C') { (*contador)++; afunda_cruzador(mapa, linha - 1, coluna - 1, rowMax, columnMax, &(*contador) ); } } if(coluna != 0) { if(mapa[linha][coluna - 1] == 'C') { (*contador)++; afunda_cruzador(mapa, linha, coluna - 1, rowMax, columnMax, &(*contador) ); } } if(linha != rowMax && coluna != 0) { if(mapa[linha + 1][coluna - 1] == 'C') { (*contador)++; afunda_cruzador(mapa, linha + 1, coluna - 1, rowMax, columnMax, &(*contador) ); } } if(linha != 0) { if(mapa[linha - 1][coluna] == 'C') { (*contador)++; afunda_cruzador(mapa, linha - 1, coluna, rowMax, columnMax, &(*contador) ); } } if(linha != rowMax) { if(mapa[linha + 1][coluna] == 'C') { (*contador)++; afunda_cruzador(mapa, linha + 1, coluna, rowMax, columnMax, &(*contador) ); } } if(linha != 0 && coluna != columnMax) { if(mapa[linha - 1][coluna + 1] == 'C') { (*contador)++; afunda_cruzador(mapa, linha - 1, coluna + 1, rowMax, columnMax, &(*contador) ); } } if(coluna != columnMax) { if(mapa[linha][coluna + 1] == 'C') { (*contador)++; afunda_cruzador(mapa, linha, coluna + 1, rowMax, columnMax, &(*contador) ); } } if(linha != rowMax && coluna != columnMax) { if(mapa[linha + 1][coluna + 1] == 'C') { (*contador)++; afunda_cruzador(mapa, linha + 1, coluna + 1, rowMax, columnMax, &(*contador) ); } } break; } }
int identifica_alvo_atingido (char **mapa, int linhaTiro, int colunaTiro, int linha, int coluna) { int contador = 1; if(mapa[linhaTiro][colunaTiro] == '.') { printf("\nNada foi atingido!"); mapa[linhaTiro][colunaTiro] = '='; return SAFE_MOVE; } if(mapa[linhaTiro][colunaTiro] == 'T') { printf("\nUm tiro atingiu uma das posicoes passadas por seu barco! Sorte que seu barco nao estava la nessa rodada!"); mapa[linhaTiro][colunaTiro] = '+'; return SAFE_MOVE; } if(mapa[linhaTiro][colunaTiro] == 'B') { printf("\nQue pena! Seu barco foi atingido por um tiro e afundou!"); mapa[linhaTiro][colunaTiro] = '!'; return GAME_OVER_BY_ATTACK; } if(mapa[linhaTiro][colunaTiro] == '=' || mapa[linhaTiro][colunaTiro] == '*' || mapa[linhaTiro][colunaTiro] == '+') { printf("\nNada foi atingido!"); return SAFE_MOVE; } if(mapa[linhaTiro][colunaTiro] == 'S' || mapa[linhaTiro][colunaTiro] == 'D' || mapa[linhaTiro][colunaTiro] == 'C' || mapa[linhaTiro][colunaTiro] == 'P' || mapa[linhaTiro][colunaTiro] == 'H') { if(mapa[linhaTiro][colunaTiro] == 'S') { printf("\nUm SUBMARINO foi totalmente destruido!"); mapa[linhaTiro][colunaTiro] = '*'; } if(mapa[linhaTiro][colunaTiro] == 'D') { printf("\nUm DESTROYER foi totalmente destruido!"); afunda_destroyer(mapa, linhaTiro, colunaTiro, linha - 1, coluna - 1, &contador); } if(mapa[linhaTiro][colunaTiro] == 'C') { printf("\nUm CRUZADOR foi totalmente destruido!"); afunda_cruzador (mapa, linhaTiro, colunaTiro, linha - 1, coluna - 1, &contador); } if(mapa[linhaTiro][colunaTiro] == 'P') { printf("\nUm PORTA-AVIAO foi totalmente destruido!"); //contador = 5; afunda_porta_aviao (mapa, linhaTiro, colunaTiro, linha - 1, coluna - 1, &contador); } if(mapa[linhaTiro][colunaTiro] == 'H') { printf("\nUm tiro atingiu um HIDRO-AVIAO! O mesmo foi totalmente destruido!"); //contador = 3; afunda_hidro_aviao(mapa, linhaTiro, colunaTiro, linha - 1, coluna - 1, &contador); } } return SAFE_MOVE; }