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);
		}
	}
}
Example #2
0
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;
    }
}
Example #3
0
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;
}