Ir ao conteúdo
  • Cadastre-se
Adrielle Morais

C Batalha Naval em C

Recommended Posts

gente, como faz para esconder onde estão os "navios" na matriz e mudar a cor da fonte na matriz quando o usuário acertar?

 

#include
#include
#include ///para usar a hora
#define n 5
int main ()
{
    setlocale(lc_all,"portuguese");
    int mat [n][n],i,j,linha,coluna,tiros=0,acertos=0;
    srand (time(null));

    /// 1º passo ---- zerar matriz
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n; j++)
        {
            mat [j] = 0;
        }
    }
    /// 2º passo ---- posicionar lanchas
    for (i = 1; i <= 5; i++)
    {
        do
        {
            linha = rand() % 5;
            coluna = rand() %5;
        }
        while (mat [linha][coluna] == 1);
        mat [linha][coluna] = 1;
    }
     ///mostrar matriz
    for (i = 0; i < n; i++)
    {
        printf("\n");

        for (j = 0; j < n; j++)
        {
            printf(" %i",mat [j]);
        }
    }


    /// 3º passo ---- jogar
    while (acertos < 5)
    {
        tiros++;
        printf("\n");
        printf("\nqual linha você deseja atacar (0-4): ");
        scanf("%i",&linha);
        printf("qual coluna você deseja atacar (0-4): ");
        scanf("%i",&coluna);
        if (mat [linha][coluna] == 0)
        {
            mat [linha][coluna] = 2;
        }
        else
        {
            if (mat [linha][coluna] == 1)
            {
                mat [linha][coluna] = 3;
                acertos++;
            }
        }
        printf("\ntiros: %i", tiros);
        printf("\nacertos: %i", acertos);
    }

    return 0;
}

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Adrielle Morais     para posta seu código é melhor usar o botão   <>   que está lá na barra de ferramentas da janela de postar ,  pois senão seu código fica faltando alguns caracteres como os  [ i ]   que sumiram do seu código ,  para colorir a fonte você precisa criar uma função que faça isso pois na linguagem c existe poucos comandos que faça isso ,  então seu código com algumas modificações pode ser assim  :

#include <stdio.h>
#include <locale.h>
#include <conio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>/*///para usar a hora*/
#define n 5
/*             0     1    2     3   4     5      6       7        8       */
typedef enum{BLACK,BLUE,GREEN,CYAN,RED,MAGENTA,BROWN,LIGHTGRAY,DARKGRAY,
LIGHTBLUE,LIGHTGREEN,LIGHTCYAN,LIGHTRED,LIGHTMAGENTA,YELLOW,WHITE} COLORS;
/*  9         10          11       12       13         14     15           */
static int __BACKGROUND = BLACK;
static int __FOREGROUND = LIGHTGRAY;

void textcolor (int letra, int fundo){/*para mudar a cor de fundo mude o background*/
    __FOREGROUND = letra;
    __BACKGROUND = fundo;
    SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
    letra + (__BACKGROUND << 4));
}
void mostrar_tabuleiro(int mat[5][5]);
int main (){
    int mat[n][n],i,j,linha,coluna,tiros=0,acertos=0;
    setlocale(LC_ALL,"");
    srand(time(NULL));
    /*/// 1º passo ---- zerar matriz*/
    for(i=0;i<n;i++){
        for(j=0;j<n;j++){
            mat[i][j] = 0;
        }
    }
    /*/// 2º passo ---- posicionar lanchas*/
    /* zero será água e coloque 1 para lancha, 2 para submarino e etc . . . */
    for(i=1;i<=5;i++){
        do{
            linha  = rand() %5;
            coluna = rand() %5;
        }while(mat[linha][coluna] == 1);
        mat[linha][coluna] = 1;
    }
     /*///mostrar matriz*/
    for(i=0;i<n;i++){
        printf("\n");
        for (j=0;j<n;j++){
            printf(" %i",mat[i][j]);
        }
    }
    getch();
    /*/// 3º passo ---- jogar*/
    while (acertos < 5){
        mostrar_tabuleiro(mat);
        tiros++;
        /*printf("\n");*/
        printf("\n\nqual linha  você deseja atacar (0-4): ");
        scanf("%d",&linha);
        printf("qual coluna você deseja atacar (0-4): ");
        scanf("%d",&coluna);
        if(mat[linha][coluna] == 0){
            mat[linha][coluna] = 2;
        }
        else{
            if(mat[linha][coluna] == 1){
                mat[linha][coluna] = 3;/* acertou em algum objeto */
                acertos++;
            }
        }
        printf("\ntiros -----: %d",tiros  );
        printf("\nacertos ---: %d",acertos);
    }
    return 0;
}
void mostrar_tabuleiro(int mat[5][5]){
    int i,j;
    printf("\n");
    for(i=0;i<n;i++){
        for(j=0;j<n;j++){
            if(mat[i][j]==1){/* 1 é lancha */
                textcolor(14,0);/* pode usar número da cor  ou nome da cor */
                printf("L ");
            }
            else{
                if(mat[i][j]==0){/* zero é Água */
                    textcolor(11,0);
                    printf(". ");
                }
                else{
                    if(mat[i][j]==3){
                        textcolor(12,0);
                        printf("X ");
                    }
                }
            }
        }
        printf("\n");
    }
    textcolor(7,0);
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×